【问题标题】:Finding words from Wordnet separated by a fixed Edit Distance from a given word从 Wordnet 中查找与给定单词相隔固定编辑距离的单词
【发布时间】:2011-11-21 08:19:11
【问题描述】:

我正在使用 nltk 和 wordnet 编写拼写检查器,我有几个拼写错误的单词说“相信”。我想要做的是从 wordnet 中找到所有单词,这些单词与这个给定单词的 leveshtein 编辑距离为 1 或 2。 nltk 是否提供任何方法来实现这一点?如何做到这一点?


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

【问题讨论】:

标签: python nlp nltk wordnet


【解决方案1】:

好的,终于想出了一个解决办法:

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 

【讨论】:

  • 不知道这是否是有效的方法。但它为我完成了工作
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 2023-03-29
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    相关资源
    最近更新 更多