1

我使用 Weka 的 Naive Bayes 进行文本分类。我的句子有两个类,“正面”和“负面”。我收集了大约 207 个积极意义的句子和 189 个消极意义的句子,以创建我的训练集。

当我用一个包含强烈否定意义的句子的测试集运行朴素贝叶斯时,比如“恨”这个词,结果的准确率相当不错,大约 88%。但是当我使用具有积极意义的句子时,例如“爱”这个词中的一个,作为测试集,准确率要差得多,大约为 56%。

我认为这种差异可能与我的训练集有关,尤其是它的“正面”句子。

你能想到任何可以解释这种差异的原因吗?或者也许有一种方法可以帮助我找出问题的根源?

非常感谢您的时间,

南蒂亚

4

3 回答 3

1

我不会创建仅包含正样本或负样本的测试集,而是创建一个包含混合样本的测试集。您可以在 Weka 中查看生成的混淆矩阵,这使您可以查看正样本和负样本的分类情况。此外,我会使用(10 倍)交叉验证来获得更稳定的性能测量(一旦你这样做了,你可能想用混淆矩阵交叉验证结果编辑你的帖子,我们也许可以提供帮助更多的)。

于 2012-09-17T22:26:47.317 回答
1

可能是您的否定句中出现的词更一致,而您的肯定句中出现的词有更多变化,或者这些词也可能经常出现在否定句中。

如果不知道字典的大小(即属性的数量)、测试集的大小等,很难给出具体的建议。由于朴素贝叶斯分类器计算单个单词出现或不存在的概率的乘积,我将采取一些错误分类的正例并检查正分类和负分类的条件概率,以了解这些示例被错误分类的原因。

于 2012-09-18T13:45:00.373 回答
1

为了更好地理解分类器的工作原理,您可以检查参数以查看分类器认为哪些词最能预测句子的正面/负面。你能打印出正面和负面案例的主要预测因子吗?

例如,

top positive predictors:
p('love'|positive) = 0.05
p('like'|positive) = 0.016
...

top negative predictors:
p('hate'|negative) = 0.25
p('dislike'|negative) = 0.17
...
于 2012-10-20T01:05:43.467 回答