2011-09-20 9 views
5

私はnltkとwordnetを使ってスペルチェッカーを書いていますが、間違って綴られた単語「belive」があります。私がしたいのは、この単語からleveshteinの編集距離1または2で区切られたwordnetのすべての単語を見つけることです。 nltkはこれを達成するための方法を提供していますか?これを行う方法?与えられた単語から一定の編集距離で区切られたWordnetからの単語の検索


私は間違っているかもしれません。 edit_distanceメソッドは、edit_distance(word1,word2)のような2つの引数をとり、levenshteinのword1とword2の距離を返します。 私が望むのは、私がwordnetの他のすべての単語に与える単語間の編集距離を見つけることです。

+1

よろしいですを見つけることができますWordnetはあなたがここで欲しいものですか?過度の殺人のようだ。エンチャントがより良いかもしれません:http://packages.python.org/pyenchant/ –

答えて

1

実際にはedit_distanceメソッドを提供します。ドキュメントhere

0

オーケーを参照してください、最終的に解決策を考え出した:

from nltk.corpus import wordnet 
f=open("wordnet_wordlist.txt","w") 
for syn in list(wordnet.all_synsets()): 
    f.write(syn.name[:-5]) 
    f.write("\n") 

f.close() 

f = open("wordnet_wordlist.txt") 
f2 = open("wordnet_wordlist_final.txt", "w") 
uniquelines = set(f.read().split("\n")) 
f2.write("".join([line + "\n" for line in uniquelines])) 
f2.close() 

今すぐ最終wordlist_finalファイルからの読み込みやリストnltk.edit_distance使用することは

wordnetobj=open("wordnet_wordlist_final.txt","r") 
wordnet=wordnetobj.readlines() 
def edit(word,distance): 
    validlist=[] 
    for valid in wordnet: 
     valids=valid[:-1] 
     if(abs(len(valids)-len(word))<=2): 
      if(nltk.edit_distance(word,valids)==distance): 
       validlist.append(valids) 

    return validlist 
+0

は、効果的な方法であるかどうかわかりません。しかしそれは私のために仕事をした –

関連する問題