Использование расстояния Левенштейна для проверки орфографии

Я работаю над проверкой орфографии на C ++, и я застрял на определенном этапе реализации.

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

Теперь самое сложное: что, если введенная строка представляет собой комбинацию слов с ошибками? Например, «iloevcokies». Принимая во внимание, что «i», «love» и «cookies» - это слова, которые можно найти в текстовом файле, как я могу использовать уже реализованную функцию Левенштейна, чтобы определить, какие слова из файла подходят для исправления? Кроме того, как мне вставить пробелы в правильные позиции?

Любая идея приветствуется :)

8
задан templatetypedef 22 March 2011 в 22:39
поделиться