3

我目前正在对一家电信公司数据的 twitter 数据进行情感分析。我正在将数据加载到 HDFS 中,并使用 Mahout 的朴素贝叶斯分类器来预测情绪是积极的、消极的还是中性的。

这就是我正在做的

  1. 我正在向机器提供训练数据 (key :sentiment,value:text) 。

  2. 使用 mahout 库通过计算文本的tf-idf(逆文档频率)来创建特征向量。

    mahout seq2sparser -i /user/root/new_model/dataseq --maxDFPercent 1000000 --minSupport 4 --maxNGramSize 2 -a org.apache.lucene.analysis.WhitespaceAnalyzer -o /user/root/new_model/predicted

  3. 将数据拆分为训练集和测试集。

  4. 我将该特征向量传递给朴素贝叶斯算法来构建模型。

mahout trainnb -i /user/root/new_model/train-vectors -el -li /user/root/new_model/labelindex -o /user/root/new_model/model -ow -c

  1. 使用这个模型,我正在预测新数据的情绪。

这是我正在做的非常简单的实现,通过这种实现,即使我有很好的训练集,我的准确度也会很低。所以我正在考虑切换到逻辑回归/SVM,因为它们为这类问题提供了更好的结果。

所以我的问题是如何使用这些算法来构建我的模型或使用这两种算法预测推文的情绪。我需要遵循哪些步骤来实现这一目标?

4

1 回答 1

0

尝试使用 CrossFoldLearner,但我怀疑它是否将朴素贝叶斯作为学习模型,我前段时间使用过 OnlineLogisticRegression。或者希望你可以用朴素贝叶斯作为学习器编写自己的 crossFoldLearner。我也不认为改变算法会大大改善结果。这意味着您必须仔细查看分析器以进行标记化。也许考虑二元标记化,而不是只使用一元标记。您是否考虑过语音,因为大多数推特单词都不是来自字典。

于 2014-09-19T09:12:47.690 回答