Python TextBlob朴素的贝叶斯。选择最大似然

Python TextBlob朴素的贝叶斯。选择最大似然,python,machine-learning,nltk,naivebayes,textblob,Python,Machine Learning,Nltk,Naivebayes,Textblob,作为培训数据,使用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" p

作为培训数据,使用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分类器将目标术语训练为相关类别

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

“最令人感兴趣的可能是,最糟糕的服务态度来自于该机构的所有者
”,它们是
[“服务态度”、“所有者”、“机构”]


我想知道根据类别,其中哪一个最有可能,在本例中是
SERVICE#GENERAL
。我该怎么做呢?

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

考虑到大量的单词是独立处理单词的,你应该把这些名词短语转换成一个单词。你可以用“-”代替空格,例如(“服务态度”应该是“服务态度”)

例如:

from textblob.classifiers import NaiveBayesClassifier

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

cl = NaiveBayesClassifier(train)

如果需要,您可以自定义特征提取:

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

考虑到大量的单词是独立处理单词的,你应该把这些名词短语转换成一个单词。你可以用“-”代替空格,例如(“服务态度”应该是“服务态度”)

例如:

from textblob.classifiers import NaiveBayesClassifier

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

cl = NaiveBayesClassifier(train)

如果需要,可以自定义特征提取:

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