使用 Python 对电影评论进行情感分析

数据挖掘 Python 数据挖掘 大数据 熊猫 nltk
2021-09-23 04:41:31

我目前正在使用 Python 进行情绪分析。在这里,我从电影数据集中获取所有评论,并使用朴素贝叶斯算法来预测评论是正面的还是负面的。从输入数据集中,我使用一个逻辑来删除停用词,然后训练我的数据集来预测结果。到目前为止,我的测试结果是预测的,但很少有结果预测错误。

This was a great film. Jack Halley is comical as usual and Bela Lugos is  hilarious even in his tiny role. I love this flick.

例如,上面的句子是肯定的,但它预测为否定的。类似的情况发生在许多其他场景中。如果它有一些讽刺意味,那么它有可能以另一种方式预测。但是对于很少的直接评论,它正在预测另一种方式。您能否建议其他方法来改进我的算法,以提高预测的准确性。除了删除停用词还有其他有效的方法吗?我一直在通过互联网寻找各种建议,但我对这个话题很陌生,因此找不到有效的方法来继续。任何好的建议将不胜感激。

4个回答

鉴于这种确切的情况,我会假设您会因为评论中提到的名称而做出负面决定(在您的训练数据集中,演员更经常在负面评论中遇到)。您可能应该从评论中删除所有不相关的词,这不仅包括停用词,还包括所有人名(因为它们不是情绪标记,也许除了贾斯汀比伯,他对任何事情都是一个非常负面的标记:) )。

我假设您正在使用词袋,您可以尝试将二元组和/或三元组(或实际上任何其他任意 n-gram)添加到您的词汇表中。

我在使用潜在狄利克雷分配来预测特定句子的主题分布方面也取得了很大的成功。将该分布作为特征输入朴素贝叶斯算法。这有点像 hack,但对于我所做的有限情绪分析来说,它似乎非常有效。我的猜测是,LDA 在处理讽刺方面做得不错。它不是完整的证据,但它可能会帮助您获得更好的预测。这些是我至少会尝试的一些事情。

主要是准确性取决于预处理步骤、提取的特征和使用的学习模型。

预处理步骤通常包括删除停用词,这很好。特征提取有多种方法。由于生成向量的有趣特征,词嵌入在 NLP 中越来越受欢迎。Gensim为 word2vec 和 doc2vec 模型的词嵌入提供了一个不错的 python 库。有关其工作原理的详细算法,请阅读word2vecdoc2vec

从朴素贝叶斯、支持向量机到神经网络模型,有很多学习模型。它的准确性取决于使用的数据集和生成的特征,因此每个模型都需要在试错法下进行测试。sklearn为 ML 模型提供了很好的支持。

两个起点:

  1. 在 Google Scholar 中搜索“情感分析”并阅读过去几年的论文。

  2. 完成 Scikit-Learn 的文本分类教程复制那里的 20 个新闻组分类代码并根据您的任务对其进行修改。这将为您提供工作的基准。