使用Mahout,我能够对数据的情感进行分类。但我现在卡在了混淆矩阵上。
我使用Mahout 0.7版本的朴素贝叶斯算法来对推文的情感进行分类。我使用trainnb
和testnb
朴素贝叶斯分类器来训练分类器,并将推文的情感分类为“积极”、“消极”或“中性”。
示例积极训练集
'positive','我爱我的iPhone' 'positive' , '拥有iPhone是一种享受'
同样,我已经准备了消极和中性的训练样本,这是一个庞大的数据集。
我提供的样本测试数据推文不包括情感。
'这是一个不错的型号' '简直太棒了'
我能够运行Mahout分类算法,它会以混淆矩阵的形式输出分类实例的结果。
下一步,我需要找出哪些推文显示出积极的情感,哪些是消极的。期望的输出是使用分类来标记文本的情感。
'negative','非常糟糕的一生' 'positive' , 'iPhone的设计功能非常出色'
在Mahout中,我需要实现哪个算法才能以这种格式获得输出。或者是否需要自定义源代码实现?
请“友好地”建议我Apache Mahout提供的适合我进行Twitter数据情感分析的算法。
回答:
一般来说,要对某些文本进行分类,你需要运行具有不同先验概率(在你的例子中是积极和消极)的朴素贝叶斯算法,然后选择结果值较大的那个。
Mahout书籍中的这一节有一些例子。请看列表2:
Parameters p = new Parameters();p.set("basePath", modelDir.getCanonicalPath());9Datastore ds = new InMemoryBayesDatastore(p);Algorithm a = new BayesAlgorithm();ClassifierContext ctx = new ClassifierContext(a,ds);ctx.initialize();....ClassifierResult result = ctx.classifyDocument(tokens, defaultCategory);
这里的result应该包含“positive”或“negative”标签。