从Wordnet中找到与给定词相隔固定编辑距离的词

5 投票
2 回答
1475 浏览
提问于 2025-04-17 02:42

我正在用nltk和wordnet写一个拼写检查器,我有几个拼错的单词,比如“belive”。我想做的是找出与这个单词的编辑距离为1或2的所有wordnet中的单词。

nltk有没有提供什么方法来实现这个?我该怎么做呢?


可能我说得不太清楚。edit_distance这个方法需要两个参数,比如edit_distance(word1, word2),它会返回word1和word2之间的编辑距离。 我想要的是找出我给出的单词与wordnet中每个其他单词之间的编辑距离。

2 个回答

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 
1

实际上,它确实提供了一个叫做 edit_distance 的方法。你可以在这里查看相关文档 这里

撰写回答