Só um parênteses: eu usaria o String::Approx[1] ou o re::engine::TRE[2] no lugar do String::Trigram[3], que é extremamente veloz porém voraz no quesito de RAM. Esses 3 módulos seriam apropriados para fuzzy match de uma string em lista de strings. Já o String::Similarity[4] é muito bom para comparar 2 strings, mas não é a coisa mais eficiente para aplicar a listas. Frequentemente uso o Text::Fingerprint[5] como "versão light" do Text::Soundex[6] (com elementos de String::Trigram :P). Recomendo o artigo do Blabos[7] e de um computeiro russo[8] (outro russo) a todos que trabalharem com strings imprecisas :)
[1] https://metacpan.org/module/String::Approx [2] https://github.com/avar/re-engine-tre [3] https://metacpan.org/module/String::Trigram [4] https://metacpan.org/module/String::Similarity [5] https://metacpan.org/module/Text::Fingerprint [6] https://metacpan.org/module/Text::Soundex [7] http://blog.blabos.org/2008/12/faxina-depois-da-festa/ [8] http://ntz-develop.blogspot.com.br/2011/03/fuzzy-string-search.html ABS() 2012/7/2 <[email protected]> > usamos por aqui > > use Text::DoubleMetaphone qw( double_metaphone ); # casamento fonetico > > use String::Approx 'adist'; > > *From:* Stanislaw Pusep <[email protected]> > *Sent:* Monday, July 02, 2012 9:24 AM > *To:* Perl Mongers Rio de Janeiro <[email protected]> > *Cc:* [email protected] > *Subject:* Re: [Rio-pm] :engine::TRE > > Bom dia Thiago! > Obrigado pela dica, não conhecia o String::Approx. Pelo meu rápido RTFS, > usa o mesmo algoritmo que o re::engine::TRE ( > https://en.wikipedia.org/wiki/Bitap). > Também fiz a coisa mais óbvia, que devia ter feito antes de mandar o email > para a lista: olhei no CPAN Testers, e percebi que o módulo em questão só > funcionava até Perl v5.10. Entrei em contato com o autor, e ele confirmou > que as "entranhas" do Perl tornaram-se incompatíveis a partir do v5.12. > Verei o que faço a respeito; o módulo me pareceu deveras útil. > > ABS() > > > > 2012/6/29 Thiago Glauco <[email protected]> > >> Eu uso >> use String::Approx 'amatch'; >> >> print if amatch("foobar"); >> >> my @matches = amatch("xyzzy", @inputs); >> >> my @catches = amatch("plugh", ['2'], @inputs); >> >> >> Em Qui, 2012-06-28 às 18:20 -0300, Stanislaw Pusep escreveu: >> > >> > Um dos exemplos de aplicação prática dela é o utilitário >> > 'agrep' (approximate grep). >> >> _______________________________________________ >> Rio-pm mailing list >> [email protected] >> http://mail.pm.org/mailman/listinfo/rio-pm >> > > > ------------------------------ > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm > > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm >
_______________________________________________ Rio-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/rio-pm
