1

У меня есть набор опорных слов (правильно написано), и мне нужно взять слово ввода пользователя. Входное слово сравнивается со списком ссылок, используя расстояние levenshtein, и мне нужно вернуть слово из списка ссылок, которое имеет самую низкую стоимость. Кроме того, этот список ссылок сортируется по частотам, поэтому сверху появляются более высокие частоты. Если расстояние равно 2 словам, возвращается слово с более высокой частотой. «NWORDS» - это список ссылок, отсортированный по частоте. «Кандидат» - это введенное пользователем слово.Levenshtein Цикличность расстояния в Python

Код:

for word in NWORDS: #iterate over all words in ref 
    i = jf.levenshtein_distance(candidate,word) #compute distance for each word with user input 

     #dont know what to do here 
    return word #function returns word from ref list with lowest dist and highest frequency of occurrence. 
+2

Levenstein расстояние не так подходить к этой проблеме. http://norvig.com/spell-correct.html –

+0

См. также этот вопрос: http://stackoverflow.com/questions/2294915/what-algorithm-gives-suggestions-in-a-spell-checker – Krumelur

+0

это просто часть всей проблемы. Я уже реализовал peter norvig до этого, но мне нужно повысить эффективность с помощью levenshtein. И мои данные содержат очень мало английских слов. –

ответ

2

Вы могли бы подойти к этому следующим образом:

match = None # best match word so far 
dist = None # best match distance so far 
for word in NWORDS: #iterate over all words in ref 
    i = jf.levenshtein_distance(candidate, word) #compute distance for each word with user input 
    if dist is None or i < dist: # or <= if lowest freq. first in NWORDS 
     match, dist = word, i 
return match #function returns word from ref list with lowest dist and highest frequency of occurrence