【发布时间】:2021-04-01 16:13:22
【问题描述】:
我试图理解此处给出的代码示例:https://www.perlmonks.org/?node_id=1083257 以及示例中给出的直接创建的哈希引用与我首先作为哈希创建的引用之间的区别。当我运行以下代码时:
use strict;
use warnings;
use Algorithm::NaiveBayes;
my $positive = {
remit => 2,
due => 4,
within => 1,
};
my $negative = {
assigned => 3,
secured => 1,
};
my $categorizer = Algorithm::NaiveBayes->new;
$categorizer->add_instance(
attributes => $positive,
label => 'positive');
$categorizer->add_instance(
attributes => $negative,
label => 'negative');
$categorizer->train;
my $sentence1 = {
due => 2,
remit => 1,
};
my $probability = $categorizer->predict(attributes => $sentence1);
print "Probability positive: $probability->{'positive'}\n";
print "Probability negative: $probability->{'negative'}\n";
我得到了结果:
Probability positive: 0.999500937781821
Probability negative: 0.0315891654410057
但是,当我尝试通过以下方式创建哈希引用时:
my %sentence1 = {
"due", 2,
"remit", 1
};
my $probability = $categorizer->predict(attributes => \%sentence1);
我明白了:
Reference found where even-sized list expected at simple_NaiveBayes.pl line 57.
Probability positive: 0.707106781186547
Probability negative: 0.707106781186547
为什么我的哈希 \%sentence1 与示例中给出的 $sentence1 哈希引用不同?
【问题讨论】:
标签: perl hash naivebayes