|
Ключевые слова: (найти похожие документы)
Date: Thu, 02 Sep 2004 11:03:17 +0600 From: yurik shestakov <yu.trap@frigate.kiev.ua.> Newsgroups: ftn.ru.perl Subject: Поиск похожих слов на Perl (нечеткий поиск). MP> Здравствуйте. Существует ли распространенный алгоритм/модуль для MP> поиска слов в словаре, даже если введенное слово отличается от требуемого MP> - лишняя буква в любой позиции MP> - отсутствующая буква в любой позиции MP> - неверная буква MP> - перепутанные местами буквы MP> Причем желательно варьировать количество изменяемых при поиске букв. MP> Естественно, найденых слов может быть найдено более одного. MP> Что посоветуете? MP> З.Ы. Пример: должно быть найдено слово "паровоз" на введенные слова MP> "паравоз", "парвоз", "паро-воз". google://Levenshtein use Text::Levenshtein qw(distance fastdistance); print distance("foo","four"), "\n"; # печатает "2" print fastdistance("foo","four"), "\n"; # печатает "2" faster $"=','; my @words=("four","foo","bar"); my @distances=distance("foo",@words); print "@distances\n"; # печатает "2 0 3" my $word = "опечатка"; foreach (qw/очепятка опчатка печатка/) { print "LD('$word','$_')=",fastdistance($word, $_),"\n"; } MP> З.Ы. База - Mysql, если есть встроенные средства, тоже подойдут. AFAIR, нету.
From: "Anton Y. Shevtsov" <shevtsov@tngf.ru.> > З.Ы. Пример: должно быть найдено слово "паровоз" на введенные слова > "паравоз", "парвоз", "паро-воз". Это называется нечеткий поиск. Общего способа нет. Кто-то пытается считать сумму кодов букв в слове и тогда при выпадении одной ссумма найденного слова не очень будет отличатся от заданного.. но все это лажа)) особенно на коротких словах.. чтобы сделать реально работающее, нужно приложить математику. Вообщето для этого полно в инете http://www.3ka.mipt.ru/vlib/books/Programming/ComputerScience/StryngAnalysis/index.html http://algolist.manual.ru/search/fsearch/ http://www.delphikingdom.com/asp/viewitem.asp?catalogid=722 http://www.pereplet.ru/nauka/perl/find.html у буржуев это назвается fuzzy logic (вроде)
From: Artur Penttinen <[email protected]> Newsgroups: ftn.ru.perl Subject: Поиск похожего? MP> З.Ы. Пример: должно быть найдено слово "паровоз" на введенные MP> слова "паравоз", "парвоз", "паро-воз". AC> Алгоритм - да. Вот, правда, слово вылетело из головы. Он лучше AC> работает для английского, где нет развесистых склонений. AC> Поскольку слово я забыл, могу порекомендовать поискать по AC> английскому переводу слова "созвучие". Модуль, кажется, тоже был. алгоритм soundex, модуль Text::Soundex
|
Обсуждение | [ RSS ] |
|
Добавить комментарий |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |