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

发布于 2024-12-05 08:26:01 字数 324 浏览 1 评论 0原文

我正在使用 nltk 和 wordnet 编写拼写检查器,我有一些拼写错误的单词“belive”。我想要做的是从 wordnet 中找到与该给定单词的 leveshtein 编辑距离为 1 或 2 分隔的所有单词。 nltk 是否提供任何方法来完成此任务?如何做到这一点?


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

I am writing a spell checker using nltk and wordnet, I have a few wrongly spelt words say "belive". What I want to do is find all words from wordnet that are separated by a leveshtein's edit distance of 1 or 2 from this given word.
Does nltk provide any methods to accomplish this? How to do this?


May be, I put it wrongly. the edit_distance method takes 2 arguments like edit_distance(word1,word2) returns the levenshtein's distance between word1 and word2.
What I want is to find edit distance between the word I give with every other word in wordnet.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千と千尋 2024-12-12 08:26:01

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

It does in fact provide an edit_distance method. See the docs here

浪漫之都 2024-12-12 08:26:01

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

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 

Okay, finally came up with a solution:

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()

Now reading from the final wordlist_final file and using nltk.edit_distance the list can be found

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 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文