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

$probs->{positive} should be $probability->{positive}

Also, if you have empty lines in your files then add next unless $sentence; after each chomp, and you need to remove the commas from each sentence too.

Replies are listed 'Best First'.
Re^6: how to use Algorithm::NaiveBayes module
by agnes (Novice) on Apr 25, 2014 at 04:56 UTC
    Hi~ Thank you so much for your patience. I made some modification to the code according to your suggestion and it worked out!! However, the result is the tone of the whole text I test on, but I want to get the tone of each sentence in the text, what modification do I need to add on the code? Thank you again for your time!!
      Where you have print "%positive\n"; you should have print "positive: $sentence\n"; and the same for negative and neutral.
        HI~I have modified the code as you said, but it still deal with the text as a whole, and export the tone of the whole text, the output is like this:

        %neutral:given this focus execut area can control continu provid high valu product lowest total cost a detail discuss risk uncertainti caus actual result event differ materi forward look statement incluthese forward look statement general identifi word believe project expect anticipate estimate intend certain statement management discuss analysi md&a pure histor information includ estimates projections statement relat busi plans objectives expect oper results assumpt upon statement based forward look statements within mean privat secur litig reform act 1995 section 27a secur act 1933 section 21e secur exchang act 1934.

        the out put is the tone of the whole text and all the sentence in which the full stop of each sentence were removed from the text. you may need the code,the code is like this:
        #!/usr/bin/perl use warnings; use Algorithm::NaiveBayes; 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/process_sentence.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} > 1/3 ) { print "%positive:$sentence\n"; } if ( $probability->{negative} > 1/3 ) { print "%negative:$sentence\n"; } if ( $probability->{neutral} > 1/3 ) { print "%neutral:$sentence\n"; } } close($fh); # if ( $probability->{negative} > 1/3 ) { #print "%negative\n"; #} #if ( $probability->{neutral} > 1/3 ) { # print "%neutral\n"; #}
        I do not know what should I do next. It will be very kind of you to help me to solve this problem. Thank you!!