Взял у него часть кода отвечающего за подборку вариаций:
def edits1(word):
alphabet = u'йцукенгшзхъфвапролджэячсмитьбю'
s = [(word[:i], word[i:]) for i in range(len(word) + 1)]
deletes = [a + b[1:] for a, b in s if b]
transposes = [a + b[1] + b[0] + b[2:] for a, b in s if len(b)>1]
replaces = [a + c + b[1:] for a, b in s for c in alphabet if b]
inserts = [a + c + b for a, b in s for c in alphabet]
return set(deletes + transposes + replaces + inserts)
def known(word): # похожие (отклонение на 1 букву)
return set(e1 for e1 in edits1(word) if e1 in DICTIONARY)
Вторая и основная проблема это дикие ресурсы которые потребляет система чтобы подобрать варианты. Причем даже для отклонения в одну букву требуется в десять раз больше времени чем в обычной работе функции. Есть ли какие-либо идеи по оптимизации этого кода? Какие методики еще можете порекомендовать для поиска похожих слов с несколькими отклонениями? Из того что попалось по поиску этот метод показался наиболее простым среди них.