Forum Webscript.Ru
Программирование => Perl => Тема начата: Error202 от 29 Апреля 2008, 16:34:47
-
Здравствйте!
Как оптимальнее всего хранить стоп-слова
и как оптимальнее всего удалять их из текста?
our %stop_hash;
our @stop_words = qw/i in a to the it have haven\'t was but is be from/;
foreach @stop_words {$stop_hash{$_}++ };
sub get_words {
# теперь с поддержкой стоп-листа!
my ( $text ) = @_;
return map { $_ => 1 }
grep { !( exists $stop_hash{$_} ) }
map lc,
map { /([a-z\\-\']+)/i }
split /\\s+/s, $text;
}
Это правильный подход?
-
лично у меня и слова и фразы есть, поэтому
храню в файле разделенными запятыми
open (BAN, "ban.txt");
while () {
$search=$text; #сохраняю оригинальный текст
$search=~tr/A-ZА-Я/a-zа-я/;
$_=~tr/A-ZА-Я/a-zа-я/;
if ($search =~ /$_/i) { print "сам дурак"; }
}
close (BAN);
-
вот уже готовый вариант стоп-слов
Lingua::StopWords::RU http://search.cpan.org/~creamyg/Lingua-StopWords-0.08/lib/Lingua/StopWords.pm
-
Спасибо!