in reply to Re^10: how to use Algorithm::NaiveBayes module
in thread how to use Algorithm::NaiveBayes module

Glad to see you have persevered. You need to change the if condition to:
if ($probability->{positive} > $probability->{negative} and $probability->{positive} > $probability->{neutral}) { print "positive: $sentence\n"; } elsif ($probability->{negative} > $probability->{positive} and $probability->{negative} > $probability->{neutral}) { print "negative: $sentence\n"; } elsif ($probability->{neutral} > $probability->{positive} and $probability->{neutral} > $probability->{negative}) { print "neutral: $sentence\n"; }

Replies are listed 'Best First'.
Re^12: how to use Algorithm::NaiveBayes module
by agnes (Novice) on Apr 29, 2014 at 15:40 UTC
    Thank you so much! I got the result I need! It won't be successful without your help. Thank you so much for your help!!
1084428
by agnes (Novice) on Apr 30, 2014 at 03:27 UTC
    Re^12: how to use Algorithm::NaiveBayes module
    by agnes (Novice) on Apr 30, 2014 at 04:45 UTC
      Hi! I am sorry to bother you again. But I have a problem, now, I want to add one function to my program, I want to classify each sentence to these categories: profit, revenue and cost using Algorithm::NaiveBayes module. Is there any way to modify the existing program so that these two classification can implement together? my training data is like this:

      we no believ reason possibl total amount unrecogn tax benefit will signif increa decrea within next 12 months, no believ audit will conclud within next 12 months. negative, profit

      if actual result differ signif estimates, stock-ba compen expen result oper impacted. negative, cost

      and my code is like this:
      #!/usr/bin/perl use warnings; use Algorithm::NaiveBayes; local $/ = "\015"; my $pos_file = '/Users/Agnes/Documents/positive.TXT'; my $neg_file = '/Users/Agnes/Documents/negative.txt'; my $neu_file = '/Users/Agnes/Documents/neutral.txt'; my $categorizer = Algorithm::NaiveBayes->new; my $fh; open($fh,"<",$pos_file) or die "Could not open $pos_file: $!"; while (my $sentence = <$fh>) { chomp $sentence; my @words = split(' ',$sentence); my %positive; $positive{$_}++ for @words; $categorizer->add_instance( attributes => \%positive, label => 'positive'); } close($fh); open($fh,"<",$neg_file) or die "Could not open $neg_file: $!"; while (my $sentence = <$fh>) { chomp $sentence; my @words = split(' ',$sentence); my %negative; $negative{$_}++ for @words; $categorizer->add_instance( attributes => \%negative, label => 'negative'); } close($fh); open($fh,"<",$neu_file) or die "Could not open $neg_file: $!"; while (my $sentence = <$fh>) { chomp $sentence; my @words = split(' ',$sentence); my %neutral; $neutral{$_}++ for @words; $categorizer->add_instance( attributes => \%neutral, label => 'neutral'); } close($fh); $categorizer->train; my $sentence_file = '/Users/Agnes/Documents/2012_10_18stem.txt'; open($fh,"<",$sentence_file) or die "Could not open $sentence_file: $! +"; while (my $sentence = <$fh>) { chomp $sentence; my @words = split(' ',$sentence); my %test; $test{$_}++ for @words; my $probability = $categorizer->predict(attributes => \%test); if ($probability->{positive} > $probability->{negative} and $probability->{positive} > $probability->{neutral}) { print "positive: $sentence\n"; } elsif ($probability->{negative} > $probability->{positive} and $probability->{negative} > $probability->{neutral}) { print "negative: $sentence\n"; } elsif ($probability->{neutral} > $probability->{positive} and $probability->{neutral} > $probability->{negative}) { print "neutral: $sentence\n"; } } close ($fh);
      Thank you so much for you time!!
        Can you create two categorizer objects?
        my $opinion = 'Algorithm::NaiveBayes'->new; my $money = 'Algorithm::NaiveBayes'->new;
        لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
          Thank you for your reply, but if I create two categories object, how to modify the following code? Thank you so much for your time!