查找来自Wordnet的单词,由给定单词的固定编辑距离分隔

时间:2011-09-20 18:36:34

标签: python nlp nltk wordnet

我正在使用nltk和wordnet编写一个拼写检查器,我有一些拼写错误的单词说“belive”。我想要做的是找到wordnet中的所有单词,这些单词由leveshtein的编辑距离1或2分隔。 nltk是否提供了完成此任务的方法?怎么做?


可能是,我说错了。 edit_distance方法接受2个参数,如edit_distance(word1,word2),返回levenshtein在word1和word2之间的距离。 我想要的是找到我给出的单词与wordnet中的每个其他单词之间的编辑距离。

2 个答案:

答案 0 :(得分:1)

实际上它确实提供了edit_distance方法。请参阅文档here

答案 1 :(得分: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