[Cascavel-pm] Comparacao aproximada entre duas strings

Nelson Ferraz nferraz em gmail.com
Domingo Outubro 16 16:55:16 PDT 2005


> creio que isso não é bom para comparação de frases, mas sim de palavras das
> frases.
>
> Exemplo seria se eu colocasse um NÃO em uma das duas, a resposta deveria ser
> 0%, o que não deve ocorrer..

O objetivo não é dizer se duas frases têm o mesmo significado, mas se
elas tratam do mesmo assunto.

Por exemplo: existe um artigo do Richard Stallman que se chama "Why
Software Should Be Free"; imagine que alguém publique uma réplica
chamada "Why Software Shouldn't Be Free". Nesse caso, teríamos:

Similarity(
        "Why Software Should Be Free",
        "Why Software Shouldn't Be Free",
); # => 80%

Os artigos podem ser inteiramente diferentes, mas o tema é exatamente o mesmo.

A propósito, aqui vai uma pequena correção na sub Clean:

sub Clean {
  my $str = shift;

  $str =~ s/[^\w\s]//g;

  my @stop_words = qw/a an the for and is are be to what where when why for/;
  foreach (@stop_words) {
    $str =~ s/^$_ //gi;
    $str =~ s/ $_$//gi;
    $str =~ s/ $_ / /gi;
  }

  return $str;
}

[]s

Nelson

--
Nelson Ferraz
GNU BIS - www.gnubis.com.br


Mais detalhes sobre a lista de discussão Cascavel-pm