我正在尝试在相对较大的数据集(10000 行)上应用情绪分析(预测负面和正面推文)。到目前为止,我使用朴素贝叶斯和如下所示的名为“最终”的方法来提取特征,仅获得了约 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
最佳答案
您应该首先将推文拆分成句子,然后进行标记。 NLTK 为此提供了一种方法。
from nltk.tokenize import sent_tokenize
sents = sent_tokenize(tweet)
此后,将此句子列表提供给您的 nltk.pos_tag
方法。这应该会给出准确的 POS 标签。
关于python - 使用朴素贝叶斯情感分析进行 PoS 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51201830/