<div dir="ltr">Boa noite Alceu, desculpe pela demora.<div style>Todas as implementações de classificador bayesiano que encontrei no CPAN trabalham com as estruturas de dados nativas do Perl, ou seja, na RAM. Quando a persistência é implementada, é através da serialização por Storable.</div>

<div style>Bom, no meu caso, a interface com o categorizador se daria por meio de um webservice. E o volume se dados com que trabalhei ameaçava não caber na RAM de uma máquina só. No mais, usei map/reduce do MongoDB para implementar um categorizador bayesiano "just for fun", por que aparentemente ninguém tinha feito isso ainda :P</div>

</div><div class="gmail_extra"><br clear="all"><div><br>ABS()<br></div>
<br><br><div class="gmail_quote">2013/5/7 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">

Olá Stanislaw,<br>
<br>
Eu li seu artigo em <a href="https://gist.github.com/creaktive/1924499" target="_blank">https://gist.github.com/<u></u>creaktive/1924499</a> e achei bastante didático, principalmente sobre a parte estatística.<br>
<br>
No entanto, eu devo dizer que é possível sim utilizar persistência com o AI::Categorizer:<br>
<br>
if ( -e $store_file ) {<br>
<br>
    $know_set = AI::Categorizer::KnowledgeSet-<u></u>>restore_state($store_file);<br>
    $c        = AI::Categorizer->new(<br>
        knowledge_set => $know_set,<br>
        verbose       => 0<br>
    );<br>
<br>
}<br>
else {<br>
<br>
    $know_set = AI::Categorizer::KnowledgeSet-<u></u>>new(<br>
        name    => 'Integration Errors',<br>
        verbose => 0<br>
    );<br>
<br>
    $c = AI::Categorizer->new(<br>
        knowledge_set => $know_set,<br>
        verbose       => 0<br>
    );<br>
<br>
    create_categs(<br>
        { file => $cat_file, categorizer => $c, stop_words => $stopwords } );<br>
<br>
    $know_set->save_state($store_<u></u>file);<br>
}<br>
<br>
O fato de poder evitar "reaprender" economizou tempo, ciclo de CPU e memória no programa que desenvolvi.<br>
<br>
No mais, por qual motivo você optou por usar MongoDB como backend? Digo, além da escalabilidade? Não existe uma possível perda de dados neste caso?<br>
<br>
[]'s<br>
Alceu<br>
<br>
Em 18-04-2013 10:03, Stanislaw Pusep escreveu:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
Não dá: ele é high-level demais. O que pode ser feito é uma gambiarra:<br>
pre-processar o documento e representá-lo com hashes de seus tokens<br>
customizados. Uma excelente referencia:<br>
<a href="http://hunch.net/~jl/projects/hash_reps/index.html" target="_blank">http://hunch.net/~jl/projects/<u></u>hash_reps/index.html</a><br>
<br>
<br>
ABS()<br>
<br>
<br>
2013/4/18 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 class="im"><br>
<br>
    De fato foram ótimas dicas.<br>
<br>
    Só fiquei com uma dúvida: como controlar o AI::Categorizer para<br>
    utilizar como tokens mais de uma palavra?<br>
<br>
    []'s<br>
    Alceu<br>
<br>
</div></blockquote><div class="HOEnZb"><div class="h5">
<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>