Получить наиболее релевантное слово (проверка орфографии) с помощью 'enchant provide ()' в Python

Я хочу получить наиболее подходящее слово из enchant offer () . Есть ли какие-нибудь лучший способ сделать это. Я чувствую, что моя функция неэффективна, когда дело доходит до проверки большого набора слов в диапазоне от 100 тыс. и более.

Проблема с ] enchant offer () :

>>> import enchant
>>> d.suggest("prfomnc")
['prominence', 'performance', 'preform', 'Provence', 'preferment', 'proforma']

Моя функция для получения подходящего слова из набора предлагаемых слов:

import enchant, difflib

word="prfomnc"
dict,max = {},0
a = set(d.suggest(word))
for b in a:
    tmp = difflib.SequenceMatcher(None, word, b).ratio();
    dict[tmp] = b
    if tmp > max:
       max = tmp

print dict[max]

Result: performance

Обновлено:

если я получаю несколько ключей, то есть такое же difflib ratio () значений, я использую многоключевой словарь. Как объясняется здесь: http://code.activestate.com/recipes/440502-a-dictionary-with-multiple-values-for-each-key/

6
задан Maggie 15 July 2011 в 04:27
поделиться