# HG changeset patch # User Igor Chubin # Date 1270243620 -10800 # Node ID 4bbe553c1ee22e7ff5f9a89d2bd84911e17cc040 # Parent 34d0332f238cb0059e00853b26d53df34faf8e6e Удаление суффиксов в английских словах. + функция для поиска похожих слов similarity, но она пока, хотя и присутствует в коде, но не используется diff -r 34d0332f238c -r 4bbe553c1ee2 new-words.sh --- a/new-words.sh Fri Apr 02 19:46:44 2010 +0300 +++ b/new-words.sh Sat Apr 03 00:27:00 2010 +0300 @@ -103,16 +103,48 @@ cat <<'PERL_SCRIPT' > $PERL_SCRIPT_TEMP_NAME #!/usr/bin/perl +eval { +# http://stackoverflow.com/questions/251694/how-can-i-check-if-i-have-a-perl-module-before-using-it + require String::Similarity; + String::Similarity->import(); +}; +unless($@) +{ + our $HAVE_String_Similarity=1; +} + +sub similar($$){ + my $a=shift; + my $b=shift; + if ($HAVE_String_Similarity) { + return $Similarity{"$a $b"}; + } + else { + return 0; + } +} + sub normalize($) { $_=lc(shift); - s///; + s/s$//; s/ed$//; + s/en$//; + s/er$//; + s/est$//; s/ing$//; + + s/ism$//; s/ist$//; s/ful$//; s/able$//; s/ably$//; + s/ation$//; s/ness$//; s/ally$//; + s/ment$//; s/ify$//; s/ity$//; s/fy$//; s/ly$//; + s/ise$//; s/ize$//; + + s/e$//; return $_; } + sub compare($$) { my $a=shift; @@ -123,6 +155,7 @@ my ($b1, $b2)= split /\s+/,$b,2; my $cmp = $group_weight{normalize($a2)} <=> $group_weight{normalize($b2)}; + if ($cmp) { return $cmp; }