Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Wordnet中查找与给定单词之间有固定编辑距离的单词_Python_Nlp_Nltk_Wordnet - Fatal编程技术网

Python 从Wordnet中查找与给定单词之间有固定编辑距离的单词

Python 从Wordnet中查找与给定单词之间有固定编辑距离的单词,python,nlp,nltk,wordnet,Python,Nlp,Nltk,Wordnet,我正在使用nltk和wordnet编写拼写检查器,我有一些拼写错误的单词说“belive”。我想做的是从wordnet中找到所有单词,它们之间的距离是leveshtein编辑距离的1或2。 nltk是否提供了实现这一点的方法?如何做到这一点 可能是,我说错了。edit\u distance方法采用两个参数,如edit\u distance(word1,word2)返回word1和word2之间的levenshtein距离。 我想要的是找到我给出的单词与wordnet中每个其他单词之间的编辑距离

我正在使用nltk和wordnet编写拼写检查器,我有一些拼写错误的单词说“belive”。我想做的是从wordnet中找到所有单词,它们之间的距离是leveshtein编辑距离的1或2。 nltk是否提供了实现这一点的方法?如何做到这一点


可能是,我说错了。
edit\u distance
方法采用两个参数,如
edit\u distance(word1,word2)
返回word1和word2之间的levenshtein距离。
我想要的是找到我给出的单词与wordnet中每个其他单词之间的编辑距离。

它实际上提供了一种
编辑距离
方法。查看文档

好的,终于想出了一个解决方案:

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()
现在从最终的单词列表\最终文件中读取,并使用nltk.edit\距离可以找到列表

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 
wordnetobj=open(“wordnet\u wordlist\u final.txt”、“r”)
wordnet=wordnetobj.readlines()
def编辑(字、距离):
有效列表=[]
对于在wordnet中有效的:
valids=valid[:-1]

如果(abs(len(valids)-len(word))你确定Wordnet是你想要的吗?似乎有些过分。Enchant可能更好:不知道这是否是一种有效的方法。但它为我做了工作