5

nltk と wordnet を使用してスペル チェッカーを作成しています。スペルが間違っている単語がいくつかあり、「belive」と表示されています。私がやりたいことは、この特定の単語から 1 または 2 のレベシュタインの編集距離で区切られている wordnet からすべての単語を見つけることです。nltk はこれを達成する方法を提供していますか? これを行う方法?


たぶん、私はそれを間違って入れました。このメソッドは、単語 1 と単語 2の間のレーベンシュタイン距離を返すedit_distanceように、2 つの引数を取ります。edit_distance(word1,word2)私が望むのは、私が与える単語とワードネットの他のすべての単語との間の編集距離を見つけることです。

4

2 に答える 2

1

実際、edit_distanceメソッドを提供します。こちらのドキュメントをご覧ください

于 2011-09-21T00:00:02.437 に答える
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 
于 2011-09-21T21:27:53.577 に答える