PDA

Просмотр полной версии : :?: Сравнение слов



Hup
17.09.2004, 13:09
Я так понимаю проблема должна быть распостраненной.
Нужно сравнить два слова... Т.е. два созвучных слова(в моем случае это Фамилии)
Например...
:arrow: Пертов и Питроф - они одинаковы, но написаны с грубыми ошибками

LanDyx
17.09.2004, 20:30
Сравнивай какой-то процент слова. Например:
Петров и Питроф совпадают на 5/7 ~ 74%

Для фамилий:
Создай список фамилий, и сравнивай данную так со всеми в списке. При совпадении на 100% понятно.
Если один вариант больше 70% то это она.
Если несколько примерно похожих по проценту, то можно спосить у пользователя. Если совпадения меньше 40% процентов то предложи удостовериться в правильности и после этого добавь в базу.
(Цифры процентов и варианты поведения взяты от балды, их можно поподбирать)

severin
17.09.2004, 20:50
А еще можно задать созвучные буквы как знаки соответствующие на 50% - Б- П, В - Ф, Е - И... ИМХО, задача простенькая как раз тот случай, когда лучше быть писателем, чем читателем.

Hup
19.09.2004, 02:41
LanDyx, в принципе дельный совет. Я пожалуй так и поступлю, СПАСИБО.
severin, неа не пойдет...
1. Программа не может знать правильного слова
2. С вероятностью в 50% далеко не уедешь.
... Это такой прикол есть, когда читаешь книгу заменяй все запятые на слово боком, а точки раком. Также и с твоим алгоритмом, получится буквенная каша

AiK
19.09.2004, 02:54
Hup, во многих языках программирования (даже в SQL :)), есть аналоги функции soundex которая возвращает один и тот же ключ для одинаково звучащих, но по-разному записываемых слов. Т.е. Питроф и Петров должны давать один и тот же ключ. Старики бают, что алгоритм этой функции описан в трёхтомнике Кнута.

З.Ы: soundex('Knuth') == soundex('Kant') :)

Hup
19.09.2004, 05:33
AiK. я тут немного покапался в Инете и нашел :)
Блин, вот за это я и уважаю этот форум!!! Всегда дельные советы