Методы Левенштейна, основанные на расстоянии против Soundex - PullRequest
14 голосов
/ 03 сентября 2008

Что касается этого комментария в связанной ветке, я бы хотел знать, почему методы, основанные на расстоянии Левенштейна, лучше, чем Soundex.

Ответы [ 4 ]

14 голосов
/ 03 сентября 2008

Soundex довольно примитивен - он изначально был разработан для ручного расчета. В результате получается ключ, который можно сравнить.

Soundex хорошо работает с западными именами, так как он был первоначально разработан для данных переписи населения США. Предназначен для фонетического сравнения.

Расстояние Левенштейна рассматривает два значения и выдает значение на основе их сходства. Он ищет пропущенные или замененные буквы.

По сути, Soundex лучше определить, что фамилии "Шмидт" и "Смит" могут совпадать.

Расстояние Левенштейна лучше определить, если пользователь набрал "Левнштейн"; -)

8 голосов
/ 03 сентября 2008

Я бы предложил использовать Метафон , а не Soundex. Как отмечалось, Soundex был разработан в 19 веке для американских имен. Метафон даст вам некоторые результаты при проверке работы плохих орфографов, которые «озвучивают» и фонетически пишут.

Редактировать расстояние хорошо для ловли опечаток, таких как повторяющиеся буквы, транспонированные буквы или нажатия неправильной клавиши.

Рассмотрите приложение, чтобы решить, что подойдет вашим пользователям лучше всего - или используйте оба вместе, с Метафоном, дополняющим предложения, выдвинутые Левенштейном.

Что касается исходного вопроса, я успешно использовал n-грамм в информационно-поисковых приложениях.

2 голосов
/ 03 сентября 2008

Я согласен с вами относительно Daitch-Mokotoff, Soundex предвзят, потому что первоначальные переписчики США хотели «американизировать» имена.

Может быть, поможет пример разницы:

Soundex ставит добавочную стоимость в начале слова - фактически он учитывает только первые 4 фонетических звука. Так что, хотя «Шмидт» и «Смит» будут совпадать, «Смит» и «Смит» не будут.

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

Не думаю, что и то и другое лучше, и я бы рассмотрел как дистанционный, так и фонетический алгоритмы, чтобы помочь пользователям исправить типизированный ввод.

0 голосов
/ 03 сентября 2008

@ Keith

Как я уже писал по другому вопросу, Daitch-Mokotoff лучше для нас, европейцев (и я бы поспорил с США).

Я также читал вики о Левенштейне. Но я не понимаю, почему (в реальной жизни) для пользователя лучше , чем для Soundex.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...