Поиск слов из Wordnet, разделенных фиксированным расстоянием редактирования от заданного слова - PullRequest
5 голосов
/ 20 сентября 2011

Я пишу проверку орфографии, используя nltk и wordnet, у меня есть несколько неправильно написанных слов, скажем, "верю".Что я хочу сделать, так это найти все слова из wordnet, которые отделены расстоянием редактирования левештина 1 или 2 от данного слова.Предоставляет ли nltk какие-либо методы для достижения этой цели?Как это сделать?


Может быть, я ошибаюсь.метод edit_distance принимает 2 аргумента, например, edit_distance(word1,word2) возвращает расстояние левенштейна между word1 и word2.Я хочу найти расстояние редактирования между словом, которое я даю, с каждым другим словом в wordnet.

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

На самом деле это метод edit_distance. Смотрите документы здесь

0 голосов
/ 22 сентября 2011

Хорошо, наконец-то пришло решение:

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 
...