使用朴素贝叶斯情感分析实现 PoS

Posted

技术标签:

【中文标题】使用朴素贝叶斯情感分析实现 PoS【英文标题】:PoS Implementation with Naive Bayes Sentiment Analysis 【发布时间】:2018-12-14 13:22:21 【问题描述】:

我正在尝试在相对较大的数据集(10000 行)上应用情绪分析(预测负面和正面推文)。到目前为止,我使用朴素贝叶斯和我的名为“final”的方法提取特征的准确率仅达到了约 73%,如下所示。我想添加 PoS 来帮助分类,但我完全不确定如何实现它。我尝试编写一个名为“pos”的简单函数(我在下面发布)并尝试使用我清理过的数据集上的标签作为特征,但这种方式只能获得大约 52% 的准确度。任何人都可以引导我朝着正确的方向实施 PoS适合我的模型?谢谢。

def pos(word):
 return [t for w, t in nltk.pos_tag(word)]


def final(text):

   """
   I have code here to remove URLs,hashtags, 
   stopwords,usernames,numerals, and punctuation.
   """

   #lemmatization
   finished = []
   for x in clean:
      finished.append(lem.lemmatize(x))

   return finished

【问题讨论】:

在您的 pos(x) 中,x 是单个单词还是整个推文?因为 POS 标记单个单词可能非常不准确。 我用这一行将它应用于每个单词:clean_text = clean_text.apply(pos),其中“clean_text”是所有推文的标记化版本。那我应该如何/在哪里申请 pos?我道歉;我对此完全陌生。 @PradipPramanick 【参考方案1】:

您应该首先将推文分成句子,然后进行标记。 NLTK 为此提供了一种方法。

   from nltk.tokenize import sent_tokenize
   sents = sent_tokenize(tweet)

在此之后,将此句子列表提供给您的 nltk.pos_tag 方法。这应该会给出准确的 POS 标签。

【讨论】:

非常感谢您的帮助

以上是关于使用朴素贝叶斯情感分析实现 PoS的主要内容,如果未能解决你的问题,请参考以下文章

#私藏项目实操分享# Java实现基于朴素贝叶斯的情感词分析

机器学习朴素贝叶斯

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

基于朴素贝叶斯分类器的情感分析

史诗级干货长文朴素贝叶斯

基于支持向量机SVM和朴素贝叶斯NBM情感分析