使用朴素贝叶斯情感分析实现 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的主要内容,如果未能解决你的问题,请参考以下文章