情感分析的现代方法(修复代码问题)

19 sec read

最近在研究情感分析的内容,翻到了《Modern Methods for Sentiment Analysis》这篇文章,这篇文章本身讲的方法并没有什么“现代”,采用的是一些传统的方法。这里摘录的部分内容,做一些学习。由于原文代码可能由于版本问题都无法运行,这里重新进行了整理。

Word2Vec的情感分析的作用

Word2Vec 可以识别单词之间重要的关系。这使得它在许多 NLP 项目和我们的情感分析案例中非常有用。将它运用到情感分析案例之前,让我们先来测试下 Word2Vec 对单词的分类能力。我们将利用三个分类的样本集:食物、运动和天气单词集合,我们可以从Enchanted Learning下载得到这三个数据集。这里Word2Vec使用训练好的词向量文件:GoogleNews-vectors-negative300.bin

由于这是一个 300 维的向量,为了在 2D 视图中对其进行可视化,我们需要利用 Scikit-Learn 中的降维算法 t-SNE 处理源数据。

从上图可以看出,Word2Vec 很好地分离了不相关的单词,并对它们进行聚类处理。

Emoji 推文的情感分析

利用 emoji 表情对我们的数据添加模糊的标签。笑脸表情:-)表示乐观情绪,皱眉标签:-(表示悲观情绪。总的 400000 条推文被分为乐观和悲观两组数据。我们随机从这两组数据中抽取样本,构建比例为 8:2 的训练集和测试集。随后,我们对训练集数据构建 Word2Vec 模型,其中分类器的输入值为推文中所有词向量的加权平均值。

训练数据:https://github.com/udaykeith/Meetup-4thNov

返回结果:Test Accuracy: 0.73

在没有创建任何类型的特性和最小文本预处理的情况下,利用 Scikit-Learn 构建的简单线性模型的预测精度为 73%。有趣的是,删除标点符号会影响预测精度,这说明 Word2Vec 模型可以提取出文档中符号所包含的信息。处理单独的单词,训练更长时间,做更多的数据预处理工作,和调整模型的参数都可以提高预测精度。使用人工神 经网络(ANNs)模型可以提高 5% 的预测精度。需要注意的是,Scikit-Learn 没有提供 ANN 分类器的实现工具,所以利用了创建的自定义库:https://github.com/mczerny/NNet

执行后的结果为 Test Accuracy: 0.67,反而更差了。另外NNet在执行时会报错,需要对报错的地方进行修复,代码混乱,不建议使用。

利用 Doc2Vec 分析电影评论数据

利用词向量均值对推文进行分析效果不错,这是因为推文通常只有十几个单词,所以即使经过平均化处理仍能保持相关的特性。一旦我们开始分析段落数据时,如果忽略上下文和单词顺序的信息,那么我们将会丢掉许多重要的信息。在这种情况下,最好是使用 Doc2Vec 来创建输入信息。作为一个示例,使用 IMDB 电影评论数据及来测试 Doc2Vec 在情感分析中的有效性(相关代码与上篇中的使用Word2Vec/Doc2Vec对IMDB情感分析基本一致)。该数据集包含 25000 条乐观的电影评论,25000 条悲观评论和 50000 条尚未添加标签的评论。首先对未添加标签的评论数据构建 Doc2Vec 模型:

执行后准确率为:Test Accuracy: 0.83

打赏作者
微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

黑客马拉松 (Hackathon):POI去重记录

10月24日参加了公司举办的黑客马拉松,我们选的题目是POI的去重。给到的数据格式如下: 目标是去重重复数据。
标点符
2 min read

scikit-learn中的文本特征提取

文本分析是机器学习算法的主要应用领域。由于大部分机器学习算法只能接收固定长度的数值型矩阵特征,导致文本字符串等
标点符
2 min read

斯坦福大学自然语言处理包StanfordNLP

最近在推荐点评的影响抽取,中间涉及到分词后的词性识别,看了各种开源分词工具,主要是词性标注集存在差异,最终选定
标点符
3 min read

发表评论

电子邮件地址不会被公开。 必填项已用*标注