Расстояние Левенштейна - это другой способ вместо того, чтобы сравнивать неправильно написанное слово со всем словарным словом

Я искал алгоритм AI для исправления орфографии, и я нашел алгоритм расстояния Левенштейна, который сравнивает сходство между двумя строками, поэтому мой вопрос, должен ли я реализовать это сходство между неправильным словом со всеми словами в моем словаре? потому что, если да, время будет медленным. и мой второй вопрос, может ли этот алгоритм реализовать на двух строках, которые не имеют одинаковой длины, заранее спасибо


person MMM    schedule 27.04.2016    source источник


Ответы (1)


Если вы работаете с Java или JavaScript, у меня есть библиотека, которая может найти все варианты написания в вашем словаре за линейное время по длине термина запроса:

https://github.com/universal-automata/liblevenshtein-java

Уловка заключается в том, что он пересекает автомат Левенштейна с вашим словарным автоматом и следует только по тем путям, которые приводят к терминам, имеющим расстояние Левенштейна не больше, чем то, что вы указываете из термина запроса.

Я установил демоверсию, с которой вы можете поиграть:

http://universal-automata.github.io/liblevenshtein/

person Dylon    schedule 10.05.2016