<div dir="ltr">Falando ainda de matrix e comparações, 2 módulos que me ajudam muito e poupam tempo<div><a href="https://metacpan.org/module/List::Compare">https://metacpan.org/module/List::Compare</a><br></div><div><a href="https://metacpan.org/module/Algorithm::Combinatorics">https://metacpan.org/module/Algorithm::Combinatorics</a><br>

</div><div><br></div><div style>Esse tipo de trabalho você precisa saber o que quer e ir construindo aos poucos. E vai pegando essas manhas que o Stan citou.</div><div style><br></div><div style>Recomendo também distribuir o trabalho com <a href="https://metacpan.org/module/Parallel::ForkManager">https://metacpan.org/module/Parallel::ForkManager</a>, MAS cuidado!! Saiba qual ponto distribuir.</div>

<div style>O run_on_finish é útil usado com moderação, ele escreve no disco, aí pode ser um baita gargalo =S.</div><div style><br></div><div style>Use um <a href="https://metacpan.org/module/Devel::NYTProf">https://metacpan.org/module/Devel::NYTProf</a> pra saber onde otimizar.</div>

<div style><br></div><div style>Stan++ #ótimo artigo!</div></div><div class="gmail_extra"><br clear="all"><div><br>[]s,<br><br>Marcio Ferreira<div></div><div>skype: marcio.ferreir4</div><div>(21) 8365-7768<br></div></div>


<br><br><div class="gmail_quote">2013/4/16 Stanislaw Pusep <span dir="ltr"><<a href="mailto:creaktive@gmail.com" target="_blank">creaktive@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr">Quanto ao módulo de stopwords em português, existe um, sim: <a href="https://metacpan.org/module/Lingua::StopWords" target="_blank">https://metacpan.org/module/Lingua::StopWords</a><br><div>Outra coisa interessante é aplicar um stemmer: <a href="https://metacpan.org/module/Lingua::Stem::Snowball" target="_blank">https://metacpan.org/module/Lingua::Stem::Snowball</a><br>



</div><div>Também vale notar uma técnica "ninja": quem disse que token precisa corresponder a UMA palavra? Usando bi- ou tri-gramas, observei aumento considerável na precisão da categorização de textos curtos.</div>



<div>Ah, um detalhe importantíssimo: para mensurar o desempenho dos modelos estatísticos, é comum usar uma "matriz da confusão" (<a href="https://en.wikipedia.org/wiki/Confusion_matrix" target="_blank">https://en.wikipedia.org/wiki/Confusion_matrix</a>).</div>



<div>Por fim, existem coisas prontas para análise de texto usando Hadoop/Mahout: <a href="https://cwiki.apache.org/MAHOUT/twenty-newsgroups.html" target="_blank">https://cwiki.apache.org/MAHOUT/twenty-newsgroups.html</a></div>

</div>

<div class="gmail_extra"><br clear="all"><div><br>ABS()<br></div><div><div class="h5">
<br><br><div class="gmail_quote">2013/4/16 Alceu Rodrigues de Freitas Junior <span dir="ltr"><<a href="mailto:glasswalk3r@yahoo.com.br" target="_blank">glasswalk3r@yahoo.com.br</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



Tiago,<br>
<br>
Um passo à passo vou ficar devendo até porque o assunto é um tanto complexo e vai depender fortemente do tipo que dados que você vai analisar.<br>
<br>
Vale a pena ler um pouco de teoria sobre Naive Bayes (existe muito material disponível na internet) para que você entenda melhor como trabalhar com o corpus que for criando.<br>
<br>
Basicamente você vai pegar algumas mensagens e vai categorizá-las você mesmo.<br>
<br>
Depois vai passar isto para o AI::Categorizer fazer parsing dessas mensagens (criando tokens). Por estatística, ele vai entender que uma mensagem pode ou não fazer parte daquela categoria pelos tokens encontrados.<br>
<br>
Depois que o categorizador recebeu este treinamento, você pode passar para ele outras mensagens e ele vai tentar repetir o processo. Claro que não é um método determinístico, algumas vezes ele vai errar o "chute". Você terá que refinar o processo algumas vezes até ter resultados satisfatórios. Mas é um trabalho contínuo se as mensagens forem mudando.<br>




<br>
Uma forma boa de refinar o processo é utilizar "stop words", que basicamente é dizer para o categorizar o que ele deve ignorar como tokens. Infelizmente não achei um módulo para fazer isto que utilizasse palavras em português, mas você sempre pode incluir sua lista.<br>




<br>
[]'s<br>
Alceu<br>
<br>
Em 14-04-2013 09:24, Tiago Peczenyj escreveu:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
Alceu<br>
<br>
Vc podia dar mais detalhes do seu trabalho? Como vc categorizava as<br>
mensagens, de repente mostrando um passo a passo a partir de algum<br>
exemplo mais simples... achei isso bem legal!<br>
<br>
<br>
2013/4/14 Alceu Rodrigues de Freitas Junior <<a href="mailto:glasswalk3r@yahoo.com.br" target="_blank">glasswalk3r@yahoo.com.br</a><br></div>
<mailto:<a href="mailto:glasswalk3r@yahoo.com.br" target="_blank">glasswalk3r@yahoo.com.<u></u>br</a>>><div><br>
<br>
    Olá Ricardo,<br>
<br>
    Eu usei a distro AI::Categorizer<br></div>
    (<a href="http://search.cpan.org/~__kwilliams/AI-Categorizer-0.09/__lib/AI/Categorizer.pm" target="_blank">http://search.cpan.org/~__<u></u>kwilliams/AI-Categorizer-0.09/<u></u>__lib/AI/Categorizer.pm</a><br>
    <<a href="http://search.cpan.org/~kwilliams/AI-Categorizer-0.09/lib/AI/Categorizer.pm" target="_blank">http://search.cpan.org/~<u></u>kwilliams/AI-Categorizer-0.09/<u></u>lib/AI/Categorizer.pm</a>>)<div>

<br>
    para categorizar centenas de mensagens de erros diários do<br>
    middleware de integração aonde trabalho atualmente.<br>
<br>
    O AI::Categorizer tem a interface meio confusa, o POD não ajuda<br></div>
    muito, mas se você pesquisar em <a href="http://perlmonks.org" target="_blank">perlmonks.org</a> <<a href="http://perlmonks.org" target="_blank">http://perlmonks.org</a>><div><br>
    você vai encontrar referências interessantes.<br>
<br>
    Eu usei o algoritmo de Naive Bayes, que é estatístico, mas funciona<br>
    suficientemente bem na maioria dos casos. Você pode querer tentar<br>
    outros.<br>
<br>
    Dê também uma olhada o projeto Weka<br></div>
    (<a href="http://www.cs.waikato.ac.nz/__ml/weka/" target="_blank">http://www.cs.waikato.ac.nz/_<u></u>_ml/weka/</a><br>
    <<a href="http://www.cs.waikato.ac.nz/ml/weka/" target="_blank">http://www.cs.waikato.ac.nz/<u></u>ml/weka/</a>>), não é Perl mas pode te<div><br>
    ajudar a decidir mais facilmente que algoritmo usar.<br>
<br>
    []'s<br>
<br>
    Em 13-04-2013 18:16, Ricardo Stock escreveu:<br>
<br>
              Ola para todos.<br>
              gostaria da ajuda da galera para a descoberta de algum<br>
        módulo ou<br>
        caso alguem já tenha trabalhado com analise de texto.<br>
              Alguem poderia me dar alguma dica ou caminho das pedras para<br>
        trabalhar com analise de texto, para dependendo da frase tomar<br>
        determinada ação.<br>
              No aguardo<br>
        Ricardo Stock<br>
        <a href="http://www.stocksistemas.com.br" target="_blank">www.stocksistemas.com.br</a> <<a href="http://www.stocksistemas.com.br" target="_blank">http://www.stocksistemas.com.<u></u>br</a>><br></div>
        <<a href="http://www.stocksistemas.com." target="_blank">http://www.stocksistemas.com.</a><u></u>__br<div><br>
        <<a href="http://www.stocksistemas.com.br" target="_blank">http://www.stocksistemas.com.<u></u>br</a>>><br>
<br>
<br>
        =begin disclaimer<br>
             Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
           SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br></div>
        <mailto:<a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a>><br>
           L<<a href="http://mail.pm.org/mailman/__listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/_<u></u>_listinfo/saopaulo-pm</a><div><br>
        <<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/<u></u>listinfo/saopaulo-pm</a>>><br>
        =end disclaimer<br>
<br>
<br>
    =begin disclaimer<br>
       Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br></div>
    SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a> <mailto:<a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a>><br>
    L<<a href="http://mail.pm.org/mailman/__listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/_<u></u>_listinfo/saopaulo-pm</a><div><br>
    <<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/<u></u>listinfo/saopaulo-pm</a>>><br>
    =end disclaimer<br>
<br>
<br>
<br>
<br>
--<br>
Tiago B. Peczenyj<br>
Linux User #405772<br>
<br>
<a href="http://about.me/peczenyj" target="_blank">http://about.me/peczenyj</a><br>
<br>
<br>
=begin disclaimer<br>
    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/<u></u>listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br>
</div></blockquote><div><div>
<br>
=begin disclaimer<br>
  Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/<u></u>listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</div></div></blockquote></div><br></div></div></div>
<br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br></div>