Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Нечеткий поиск в информационных системах. Агеев ФФ-404.docx
Скачиваний:
1
Добавлен:
31.05.2026
Размер:
327.13 Кб
Скачать

2.2 Модификация Дамерау-Левенштейна: учет перестановок

Спустя несколько лет после работы Левенштейна другой ученый - Фредерик Дамерау - предложил модификацию алгоритма. Он обратил внимание, что люди очень часто ошибаются, меняя местами два соседних символа. Классический пример: вместо «КАРТОН» человек печатает «КАТРОН», переставляя «Р» и «Т».

В исходном алгоритме Левенштейна для исправления такой перестановки потребовалось бы две операции (удалить один символ и вставить другой на его место). Дамерау предложил добавить четвертую операцию - транспозицию (перестановку двух соседних символов) — со стоимостью 1.

Таким образом, расстояние Дамерау-Левенштейна стало более точно отражать реальные ошибки пользователей. Для примера со словами «КАРТОН» и «КАТРОН» классическое расстояние Левенштейна равно 2, а расстояние Дамерау-Левенштейна равно 1 (одна перестановка).

Пример. Сравним строки «ПРИВЕТ» и «ПРИВТЕ». Человек, быстро печатая, мог переставить «Т» и «Е». Расстояние Дамерау-Левенштейна покажет 1, что соответствует интуитивному восприятию ошибки.

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

2.3 Фонетические алгоритмы: Soundex и Mataphone

Не все ошибки ввода связаны с неправильным написанием букв. Часто человек пишет слово так, как он его слышит. Например, иностранную фамилию «Thompson» можно записать как «Thomson», «Tompson» или даже «Томпсон». В таких случаях методы, основанные на сравнении символов (Левенштейн и его модификации), работают плохо, потому что буквенный состав может сильно различаться при близком звучании.

В начале XX века, задолго до появления компьютеров, для нужд переписи населения США был разработан алгоритм Soundex. Его задача - преобразовывать фамилии в код, который отражает их произношение, а не написание. Однофамильцы, чьи фамилии пишутся по-разному, но звучат похоже, получают одинаковый код.

Принцип работы Soundex.

Алгоритм сохраняет первую букву слова, а затем заменяет следующие согласные буквы на цифры по определенным правилам. Гласные буквы и некоторые согласные (например, H, W, Y) игнорируются. Например:

  • «Smith» → S530

  • «Smyth» → S530

Рис. 3. Пример выдачи кодов именам в системе Soundex.

Обе фамилии, звучащие почти одинаково, получают один и тот же код, что позволяет системе найти их при нечетком поиске.

Позже были разработаны более совершенные фонетические алгоритмы, такие как Metaphone и его улучшенная версия Double Metaphone. Они учитывают особенности английского произношения более тонко: различают, например, звуки «S» и «SH», «K» и «S» в зависимости от позиции в слове.

Важное замечание для русского языка: большинство классических фонетических алгоритмов создавались для английского языка. Для русского языка их адаптация сложнее из-за более богатой фонетики и наличия мягких/твердых согласных. Однако существуют отечественные разработки, например, алгоритм, учитывающий озвончение/оглушение согласных («просьба» и «прозьба», «сделать» и «зделать»).