当前位置: 首页 > 知识库问答 >
问题:

情感分析专家

桓信鸥
2023-03-14

使用mahout,我能够对数据的情绪进行分类。但我被一个混乱矩阵所困扰。

我正在使用mahout 0.7 naive bayes算法对推特的情绪进行分类。我使用trainnbtestnb朴素贝叶斯分类器来训练分类器,并将tweet的情绪分类为“积极”、“消极”或“中性”。

样本阳性训练集

      'positive','i love my i phone'
      'positive' , it's pleasure to have i phone'  

同样,我准备了阴性和中性的训练样本,这是一个庞大的数据集。

我提供的示例测试数据推文不包括情绪。

  'it is nice model'
  'simply fantastic ' 

我能够运行mahout分类算法,它将分类实例的输出作为混淆矩阵。

下一步,我需要找出哪些推文显示积极的情绪,哪些是消极的。使用分类的预期输出:用情绪标记文本。

       'negative','very bad btr life time'
      'positive' , 'i phone has excellent design features' 

在mahout中,我需要实现哪种算法才能获得上述格式的输出。或者需要任何自定义源实现。

为了“友好地”显示数据,请向我推荐ApacheMahout提供的算法,这些算法将适用于我的twitter数据情绪分析。

共有2个答案

祁俊喆
2023-03-14

我不确定我是否能完全帮助你,但我希望我能给你一些切入点。一般来说,我给您的建议是下载Mahout的源代码,看看示例和目标类是如何实现的。这不是那么容易,但你应该准备好,Mahout没有容易进入的门。但一旦你们进入他们的学习曲线将很快。

首先,这取决于您使用的Mahout版本。我自己使用0.7,所以我的解释将是关于0.7。

public void classify(String modelLocation, RawEntry unclassifiedInstanceRaw) throws IOException {

    Configuration conf = new Configuration();

    NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelLocation), conf);
    AbstractNaiveBayesClassifier classifier = new StandardNaiveBayesClassifier(model);

    String unclassifiedInstanceFeatures = RawEntry.toNaiveBayesTrainingFormat(unclassifiedInstanceRaw);

    FeatureVectorEncoder vectorEncoder = new AdaptiveWordValueEncoder("features");
    vectorEncoder.setProbes(1); // my features vectors are tiny

    Vector unclassifiedInstanceVector = new RandomAccessSparseVector(unclassifiedInstanceFeatures.split(" ").length());

    for (String feature: unclassifiedInstanceFeatures) {
        vectorEncoder.addToVector(feature, unclassifiedInstanceVector);
    }

    Vector classificationResult = classifier.classifyFull(unclassifiedInstanceVector);

    System.out.println(classificationResult.asFormatString());

}

这里发生了什么:

1) 首先,加载通过trainnb得到的模型。调用trainnb时,使用-o参数将此模型保存在指定的位置。模型是。bin文件。

2)使用您的模型创建标准朴素贝叶斯分类器

3) RawEntry是我的自定义类,它只是数据原始字符串的包装器。toNaiveBayesTrainingFormar获取我想要分类的字符串,根据我的需要从中移除噪声,并简单地返回一个功能字符串“word1 word2 word3 word4”。因此,我的未分类原始字符串被转换为适用的分类格式。

4)现在需要将特征串编码为Mahout的向量,因为分类器输入仅在向量中

5) 将向量传递给分类器-magic。

这是第一部分。现在,分类器返回向量,该向量包含带有概率的类(在您的例子中是情绪)。您需要特定的输出。最直接的实现(但我认为不是最有效和最时尚的)是下一步:

1) 创建map reduce作业,该作业将遍历所有要分类的数据

2)对于你调用分类方法的每个实例(别忘了做一些改变,不要为每个实例创建标准朴素贝叶斯分类器)

3) 有了分类结果向量,您可以在地图缩小作业中以任何格式输出数据

4) 这里有用的设置是jC。设置(“mapreduce.textoutputformat.separator”,”;其中jC是JobConf。这允许您从mapreduce作业中为输出文件选择分隔符。在您的情况下,这是“,”。

同样,这些都适用于Mahout 0.7。不保证它会按原样为您工作。不过这对我很管用。

总的来说,我从来没有在命令行中使用过Mahout,对我来说,JavaMahout是一条路。

薄鸿远
2023-03-14

一般来说,要对一些文本进行分类,你需要运行具有不同前科(在你的情况下是正面和负面)的朴素贝叶斯,然后选择一个导致更大价值的文本。

这本摘录自Mahout的书有一些例子。请参见清单2:

Parameters p = new Parameters();
p.set("basePath", modelDir.getCanonicalPath());9
Datastore ds = new InMemoryBayesDatastore(p);
Algorithm a = new BayesAlgorithm();
ClassifierContext ctx = new ClassifierContext(a,ds);
ctx.initialize();

....

ClassifierResult result = ctx.classifyDocument(tokens, defaultCategory);

这里的结果应该有“积极”或“消极”的标签

 类似资料:
  • 因此,我们已经使用Power Automation Power BI twitter开发API建立了twitter情绪分析。直到本月初,一切都很顺利。然而,由于无效的订阅密钥或错误的APIendpoint,我们突然开始出现以下错误:拒绝访问。请确保为活动订阅提供有效密钥,并为您的资源使用正确的区域API终结点”。进一步调查发现my Azure subcription已禁用。(免费帐户)。但是,免费

  • 问题内容: 我正在寻找 文本情感分析 (http://en.wikipedia.org/wiki/Sentiment_analysis)的开源实现,最好是python 。有谁熟悉我可以使用的开源实现? 我正在编写一个应用程序,该应用程序在Twitter上搜索某个搜索词,例如“ youtube”,并计算“快乐”推文与“悲伤”推文的数量。我正在使用Google的appengine,所以它在python

  • 本文向大家介绍python snownlp情感分析简易demo(分享),包括了python snownlp情感分析简易demo(分享)的使用技巧和注意事项,需要的朋友参考一下 SnowNLP是国人开发的python类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,

  • 但是,我还没能在Stanford CorenLP中找到任何文本分类的注释器。我有什么办法可以实现我的想法。更好的是,有没有更好的方法来实现我想要实现的目标。 提前谢了。

  • 我需要使用斯坦福NLP工具对关于特定主题的新闻文章进行情感分析。 这样的工具只允许基于句子的情感分析,而我想提取关于我的主题的整个文章的情感评价。 例如,如果我的主题是苹果,我想知道关于苹果的新闻文章的观点。 另一方面,将我的句子过滤到只包含Apple这个词的句子中,会遗漏类似“Apple的产品A很好。但是,它缺乏以下关键功能:...”的文章。在这种情况下,如果我只使用包含Apple这个词的句子,

  • 与 TF-IDF + LogReg 之类的简单且快得多的方法相比,LSTM 实际上由于数据集太小而无济于事。 注意 RNN 非常棘手。批次大小、损失和优化器的选择很重要,等等。某些配置无法收敛。 训练期间的 LSTM 损失减少模式可能与你在 CNN/MLP 等中看到的完全不同。 from __future__ import print_function from keras.preprocess

  • 本文向大家介绍使用Python编程进行Twitter情感分析。,包括了使用Python编程进行Twitter情感分析。的使用技巧和注意事项,需要的朋友参考一下 情感分析是估算通过书面文本或口头交流为特定事件提供反馈的人们的情绪的过程。当然,口头交流也必须转换为书面文本,以便可以通过python程序进行分析。人们表达的情绪可能是正面的也可能是负面的。通过为情感文本中的不同单词分配权重,我们可以计算出

  • 链接到斯坦福情绪分析页面 “使用PTB格式的数据集,可以使用以下命令重新训练模型:” 来自dev.txt的示例(前导的4代表5...4/5正极性)