【问题标题】:TextBlob Naive Bayes. Choosing highest likelihoodTextBlob 朴素贝叶斯。选择最高可能性
【发布时间】:2017-09-11 00:21:37
【问题描述】:

作为训练数据,以 XML 格式对餐馆进行评论,以及相关的目标表达,表达情感,类别是其所属的离散标签,以及表达的极性:

<text>With the great variety on the menu , I eat here often and never get bored .</text>
     <Opinions>
         <Opinion target="menu" category="FOOD#STYLE_OPTIONS" polarity="positive" from="30" to="34"/>
     </Opinions>

我使用 TextBlob NB 分类器将目标术语训练为相关类别。

对于测试数据,我的目标是预测目标表达,给定一个句子和类别。我首先从句子中提取了名词和名词短语,假设表达式是其中的一个子集。对于句子:

"what may be interesting to most is the worst sevice attitude come from the owner of this establishment",这些是['sevice attitude', 'owner', 'establishment']

我想知道哪个最有可能给定类别,在本例中为SERVICE#GENERAL。我该怎么办?

【问题讨论】:

  • 分类器总是执行标记任务。它应该预测的信息是您在训练期间作为标签提供的信息。如果要在给定类别的情况下预测单词,则需要在训练期间提供类别作为特征,每个单词作为标签。
  • @lenz 好的,明白了。至于将每个句子的分类器限制为我的候选集中的单词(这些是从句子中提取的名词短语),我该怎么做?
  • 我不确定我是否理解。您可以更新您的问题或发布一个新问题吗?
  • @lenz 现在已经这样做了

标签: python machine-learning nltk naivebayes textblob


【解决方案1】:

TextBlob 的 NB 分类器默认将文本特征提取为一个词袋。因此,您可以简单地将提取的名词列表中的单词连接起来,然后将其与类别连接起来,将结果用作训练文本。并使用目标作为训练标签。

考虑到词袋独立对待词,您应该将这些名词短语转换为一个词。例如,您可以使用“-”代替空格(“服务态度”将是“服务态度”)。

例子:

from textblob.classifiers import NaiveBayesClassifier

train = [('sevice-attitude owner establishment SERVICE#GENERAL', 'owner'),
         ('menu variety FOOD#STYLE_OPTIONS', 'menu')]

cl = NaiveBayesClassifier(train)

如果您愿意,可以自定义特征提取:https://textblob.readthedocs.io/en/dev/classifiers.html#feature-extractors

【讨论】:

    猜你喜欢
    • 2012-04-09
    • 2016-08-02
    • 2015-08-27
    • 2012-04-09
    • 2020-04-17
    • 2015-09-16
    • 2018-01-13
    • 2012-02-21
    • 2011-12-28
    相关资源
    最近更新 更多