gpt4 book ai didi

machine-learning - 使用 Mahout 进行朴素贝叶斯分类的情感分析

转载 作者:行者123 更新时间:2023-11-30 09:24:15 25 4
gpt4 key购买 nike

我正在尝试使用 Mahout 训练朴素贝叶斯分类器。

我不太清楚的第一件事是我的训练数据应该是什么样子。我的数据集包含一个意见,以及它是正面还是负面(1 表示正面,-1 表示负面。)根据我从《Mahout in Action》一书中有关分类的章节中了解到的内容,我已经像这样设置了我的训练数据:

 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 文档 ( link )

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

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

这个link演练有关如何进行文本分析的示例。也许值得一看。

关于machine-learning - 使用 Mahout 进行朴素贝叶斯分类的情感分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11505035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com