我目前正致力于对一家电信公司数据的Twitter数据进行情感分析。我正在将数据加载到HDFS中,并使用Mahout的朴素贝叶斯分类器将情绪预测为正面,负面或中性。
这就是我在做什么
我正在为机器提供培训数据(关键:情绪,价值:文字)。
通过计算文本的 tf-idf (反文档频率)来使用mahout库,它正在创建特征向量。
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 / predict
将数据拆分为训练集和测试集。
我传递给朴素贝叶斯算法构建模型的特征向量。
mahout trainnb -i / user / root / new_model / train-vectors -el -li / user / root / new_model / labelindex -o / user / root / new_model / model -ow -c
这是我正在做的非常简单的实现,通过这种实现,即使我有良好的训练集,我的准确度也很低。所以我想改用Logistic回归/ SVM,因为它们可以为这类问题提供更好的结果。
所以我的问题是如何使用这些算法来构建我的模型或使用这两种算法预测推文的情绪。我需要遵循哪些步骤来实现这一目标?
答案 0 :(得分:0)
尝试使用CrossFoldLearner,但我怀疑是否需要天真的贝叶斯作为学习模型,我曾经使用过OnlineLogisticRegression。或者希望你可以用天真的贝叶斯作为学习者来编写自己的crossFoldLearner。我也不认为改变算法会大大改善结果。这意味着您必须仔细查看分析器以进行标记化。也许考虑使用bigram标记化,而不是仅使用unigram标记。 您是否考虑过语音,因为大部分推特词都不是来自词典。