URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 12086
[ Назад ]

Исходное сообщение
"Тематический каталог: Поиск похожих слов на Perl (нечеткий поиск). "

Отправлено auto_topic , 26-Авг-05 22:24 
Обсуждение статьи тематического каталога: Поиск похожих слов на Perl (нечеткий поиск).

Ссылка на текст статьи: http://www.opennet.me/base/dev/fuzzy_search.txt.html


Содержание

Сообщения в этом обсуждении
"Поиск похожих слов на Perl (нечеткий поиск). "
Отправлено Андрей_У , 26-Авг-05 22:24 
Можно использовать регулярные выражения

Во время теста этого метода со словарем Зализняка (108000 слов) скорость
поиска опечаток составляла около 60000 слов в секунду.

#------------------------
#!/usr/bin/perl

#слово, которое проверяем
$query="парвоз";

#массив со словарём
@words=("пароход","паровоз","самолёт"); # и т.д.

foreach $word(@words) {
if ($word =~/^(п(.{0,2})рвоз|па(.{0,2})воз|пар(.{0,2})оз|парв(.{0,2})з|парво(.{0,2}))$/) {

print "$1"; #здесь и будет "паровоз"

} #/if;
elsif ($word =~/^(п(.{0,3})воз|па(.{0,3})оз|пар(.{0,3})з|парв(.{0,3}))$/) {

print "$1"; #здесь тоже будет "паровоз"

} #/elsif;

} #/foreach;

#------------------------

Как загнать "парвоз" в регулярное выражение (с помощью цикла!) подумай сам.


"Поиск похожих слов на Perl (нечеткий поиск). "
Отправлено виктория , 25-Окт-10 16:42 
ком