R语言中的情感分析与机器学习

利用机器学习可以很方便的做情感分析。本篇文章将介绍在R语言中如何利用机器学习方法来做情感分析。在R语言中,由Timothy P.Jurka开发的情感分析以及更一般的文本挖掘包已经得到了很好的发展。你可以查看下sentiment包以及梦幻般的RTextTools包。实际上,Timothy还写了一个针对低内存下多元Logistic回归(也称最大熵)的R包maxtent。

然而,RTextTools包中不包含朴素贝叶斯方法。e1071包可以很好的执行朴素贝叶斯方法。e1071是TU Wien(维也纳科技大学)统计系的一门课程。这个包的主要开发者是David Meyer。

我们仍然有必要了解文本分析方面的知识。用R语言来处理文本分析已经是公认的事实(详见R语言中的自然语言处理)。tm包算是其中成功的一部分:它是R语言在文本挖掘应用中的一个框架。它在文本清洗(词干提取,删除停用词等)以及将文本转换为词条-文档矩阵(dtm)方面做得很好。这里是对它的一个介绍。文本分析最重要的部分就是得到每个文档的特征向量,其中词语特征最重要的。当然,你也可以将单个词语特征扩展为双词组,三连词,n-连词等。在本篇文章,我们以单个词语特征为例做演示。

注意,在R中用ngram包来处理n-连词。在过去,Rweka包提供了函数来处理它,感兴趣的可以查看这个案例。现在,你可以设置RTextTools包中create_matrix函数的参数ngramLength来实现它。

第一步是读取数据:

创建词条-文档矩阵:

现在,我们可以用这个数据集来训练朴素贝叶斯模型。注意,e1071要求响应变量是数值型或因子型的。我们用下面的方法将字符串型数据转换成因子型:

测试结果准确度:

显然,这个结果跟python得到的结果是相同的(这篇文章是用python得到的结果)。

其它机器学习方法怎样呢?

下面我们使用RTextTools包来处理它。

首先,指定相应的数据:

其次,用多种机器学习算法训练模型:

现在,我们可以使用训练过的模型做测试集分类:

准确性如何呢?

得到模型的结果摘要(特别是结果的有效性):

结果的交叉验证:

结果可在我的Rpub页面找到。可以看到,maxent的准确性跟朴素贝叶斯是一样的,其它方法的结果准确性更差。这是可以理解的,因为我们给的是一个非常小的数据集。扩大训练集后,利用更复杂的方法我们对推文做的情感分析可以得到一个更好的结果。示例演示如下:

推文情感分析

数据来自victornep。victorneo展示的是用python对推文做情感分析。这里,我们用R来处理它:

读取数据:

首先,尝试下朴素贝叶斯

然后,尝试其他方法:

这里,我们也希望得到正式的测试结果。包括:

1.analytics@algorithm_summary:包括精确度,召回率,准确率,F-scores的摘要

2.analytics@label_summary:类标签摘要

3.analytics@document_summary:所有数据和得分的原摘要

4.analytics@ensemble_summary:所有 精确度/覆盖度 比值的摘要

现在让我们看看结果:

与朴素贝叶斯方法相比,其它算法的结果更好,召回精度高于0.95。结果可在Rpub查看

原文链接:http://www.xueqing.cc/cms/article/107

原文发布于微信公众号 - CDA数据分析师(cdacdacda)

原文发表时间:2016-02-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

KDD 2018 | OCR神器来了!Facebook推出大规模图像文本提取系统Rosetta

人们在社交网络上分享和获取信息的主要途径之一是视觉媒介,如照片和视频。近年来,上传至社交媒体的照片数量成指数级增长,每天可达数亿张 [27],处理日渐增多的视觉...

19430
来自专栏AI研习社

用基于 TensorFlow 的强化学习在 Doom 中训练 Agent

深度强化学习(或者增强学习)是一个很难掌握的一个领域。在众多各式各样缩写名词和学习模型中,我们始终还是很难找到最好的解决强化学习问题的方法。强化学习理论并不是最...

31750
来自专栏深度学习之tensorflow实战篇

机器学习人群扩散(LPA算法) R实现

1、 业务场景说明: 2、 从业务映射到机器学习: 3、 友商应用资料: 4、 LPA方法原理:[1][3] 5、 特征过滤的解决方案:[4] 6、 R语言试验...

64170
来自专栏机器之心

业界 | 谷歌大脑开源多种新型神经网络优化器,AutoML探索新架构

选自Google Research Blog 作者: Irwan Bello 机器之心编译 参与:张倩、刘晓坤 谷歌大脑团队希望用类似于 AutoML 发现新神...

33340
来自专栏新智元

AutoML又一利器来了,谷歌宣布开源AdaNet(附教程)

今天,谷歌宣布开源AdaNet,这是一个轻量级的基于TensorFlow的框架,可以在最少的专家干预下自动学习高质量的模型。

29850
来自专栏AI科技评论

动态|谷歌开源T2T模型库,深度学习系统进入模块化时代!

AI 科技评论按:6月19日,谷歌发布了T2T(Tensor2Tensor)深度学习开源系统,这个系统的一大优点是模块化,这也就意味着系统更加灵活,适应性更强。...

33280
来自专栏机器学习之旅

应用:交叉销售算法

最近做了一个交叉销售的项目,梳理了一些关键点,分享如下,希望对大家有所启发 核心目标:在有限资源下,尽可能的提供高转化率的用户群,辅助业务增长 初步效果:商...

7110
来自专栏机器之心

专栏 | 自动选模型+调参:谷歌AutoML背后的技术解析

596100
来自专栏ATYUN订阅号

谷歌开源基于TensorFlow的通用框架AdaNet,快速且易于使用

Ensemble learning结合不同机器学习模型预测,被广泛用于神经网络以实现最先进的性能,得益于丰富的历史和理论保证,成功的挑战,如Netflix奖和各...

8220
来自专栏BestSDK

深度学习 VS 深度克隆,谁才是解决聊天机器人的最佳方法?

对话式 AI (聊天机器人)涉及到三个维度的问题:(1)语言技能(2)知识获取(3)对话行为。 这三者虽然强相关,但人类大脑通过单独的实验,在不同的时间段内,可...

32050

扫码关注云+社区

领取腾讯云代金券