すべての単語を数えるために繰り返し処理している非常に大きなファイルのセットがあります。私が数えている単語には、「hyper-speed」や「12:30」などの句読点を含めることができますが、句読点が単語の末尾にある場合は削除する必要があります。例 ("怖い!" => "怖い" , "リップ" => "リップ")。これが私のアルゴリズムです。この関数に渡されるものはすべて小文字です。
def cleanWord(word):
if len(word) <= 2:
return word
if word[0] in string.punctuation:
return cleanWord(word[1:])
if word[-1] in string.punctuation:
return cleanWord(word[:-2])
return word
ときどき単語がぎこちなく切り捨てられます (「philidelphi」や「organiz」など)。これは、このような大規模なデータ セットにスペルミスがあるためなのか、それともアルゴリズムに欠陥があるためなのだろうか?