Monday, November 23, 2009

Фонетический поиск

Если когда-нибудь перед Вами встанет задача реализации фонетического поиска, первым делом рекомендую прочитать довольно интересную статью с хабра. В статье довольно просто разжёван алгоритм soundex со своими недостатками, и представлена его доработка в виде алгоритма Daitch-Mokotoff. Однако, у обоих этих алгоритмов есть недочёт: абсолютно разным словам они могут ставить в соответствие один и тот-же отпечаток. К примеру, слова "хостинг" и "гостиница" будут равны.

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

No comments:

Post a Comment