使用Mahout的Naive Bayes分类的情感分析



我正在尝试用Mahout训练Naive Bayes分类器。

我不太清楚的第一件事是我的训练数据应该是什么样子。我的数据集包括一个观点,以及它是积极的还是消极的(1表示积极,-1表示消极

 1   'Content of positive opinion'
-1   'Content of negative opinion'

我已经使用seqdirectory将这些数据转换为序列文件,并使用以下命令训练分类器:

$MAHOUT_HOME/bin/mahout trainnb -i seq_data/chunk-0 -o bmodel -ow

它输出这个错误:

Exception in thread "main" java.io.FileNotFoundException: File temp/labelIndex does not exist.

浏览trainnb接受的选项,我看到了--labelIndex选项。我不太清楚这是怎么回事,我需要澄清一下。

然后我像这样运行命令(lindex是我创建的文件):

$MAHOUT_HOME/bin/mahout trainnb -i seq_data/chunk-0 -o bmodel -ow -li lindex

它输出这个错误:

java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.mahout.math.VectorWritable
    at org.apache.mahout.classifier.naivebayes.training.IndexInstancesMapper.map(IndexInstancesMapper.java:29)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:212)

如果我的方法不正确,我想知道我在这里做错了什么。我应该如何构建训练数据和运行命令?

以下是Hadoop关于什么是序列文件(链接)的文档

因此,从您的错误来看,trainnb步骤似乎需要VectorWritable而不是Text。

seqdirectory步骤似乎以Text,Text形式生成数据。我认为您必须在序列文件上运行seq2sparse命令才能生成TF或TF-IDF加权向量。

此链接介绍如何进行文本分析的示例。也许值得一看。

相关内容

  • 没有找到相关文章

最新更新