Python 从Wordnet中查找与给定单词之间有固定编辑距离的单词
我正在使用nltk和wordnet编写拼写检查器,我有一些拼写错误的单词说“belive”。我想做的是从wordnet中找到所有单词,它们之间的距离是leveshtein编辑距离的1或2。 nltk是否提供了实现这一点的方法?如何做到这一点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中每个其他单词之间的编辑距离
可能是,我说错了。
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可能更好:不知道这是否是一种有效的方法。但它为我做了工作