以下的样本代码用Pyhton写成,主要使用了scrapy, sklearn两个库。

所以,什么是情感分析(Sentiment Analysis)?

情感分析又叫意见挖掘(Opinion Mining), 是一个研究人们对某种事物,例如产品,话题,政策的意见,情绪或者态度的领域。 随着网路上意见型数据的爆发,情感分析也被广泛研究和应用。Bing Liu 的 Sentiment Analysis and Opinion Mining 对此做了比较全面的概括和案例研究,另一篇Bo Pang 的经典论文 Opinion Minning and Sentiment Analysis 则着重研究了情感分类这一问题。

简单的一个应用的例子,某公司想调查自己在淘宝上销售的产品的受喜爱程度,就可以从产品评论入手, 用一个训练好的分类器判断每个留下评论用户的对此产品的喜好态度,积极的或者是消极的评价,以此展开,充分挖掘文本内容。

Python爬虫

当然,情感分析的第一步是获取数据,而网络尤其是社交网络是存在着丰富而易于获得的意见型数据资源。Python的开源爬虫库scrapy就很好用,这也是作为一个新手上手的首选工具。scrapy wiki 提供了全面的学习资源,甚至有中文的资料和说明文档。就像我一直强调的,数据科学家是一个要具备多领域技能的职位,以练代学不失为一种很好的途径。我鼓励对Python爬虫跃跃欲试的读者不要担心自己知识不足,这里没有门槛,直接上就是了。

当你读完了上述介绍文档之后,你应该知道一个scrapy项目的组成,抓取流程,scrapy里每种Spider的应用场景,大致了解XPATH的语法规则。这样之后你就了解到编写一个简单爬虫只需四步:

1.scrapy startproject PROJECT_NAME

2.定义一个爬虫类:

选择爬虫种类(Spider, CrawlSpider), 取决于目标和爬虫各自合适的应用场景

有一个初始url,或者一个生成初始url的方法

有一个能够生成请求(request)的“解析(parse)”方法

3. 在item类里想要抓取的内容

4. scrapy crawl SPIDER_NAME

我上手的第一个例子是爬取豆瓣的影评数据,选择豆瓣一是因为其丰富的语料资源和配备的打分体系,便于分类问题的标签获得。 二是可以避开账户登录,限制少。思路是选取一部特定的电影,然后爬取其所有的短评和评分。这样后期文本就可以作为分类特征,评分则作为分类标签。 我选了绣春刀(2014年最喜欢的电影)作目标,定义的爬虫类如下:

简短几十行代码之后你已经能够开始抓取一部电影的全部短评和评分了。在这之前,记得在settings里加一个DOWNLOAD_DELAY = 2,不然的话爬不到一半就会被豆瓣给禁了。

情感分类

特征转化

当我们得到一条影评时,能够通过某种算法自动地预测出该影评是否时积极还是消极?计算机不会理解人类的文字符号,有没有一种方法能够将文字转化为机器能够理解的信息?举简单的线性回归的例子,在作回归分析时我们都会利用对回归预测有帮助的变量作为特征(features), 这里我们主要将文字作为含有可用信息的特征。 通常多是的分类算法都需要量化的具有固定长度的特征向量,原始文本需要一步转换之后才能“喂给”这些分类算法。这也是情感分类问题与一般的分类问题相比不同的地方。

最直接也最常规的一种转化方法是计算单词(单个字) 在文本中的出现频率,也就是:

将一段文本划分成若干其组成词语,比如对英文我们可以以空格和标点符号分割单词,对中文我们可以利用一些完备的词语库。

计算每个词语在一段文本中的出现次数

这样,每单个词语的频率就代表一个变量(特征), 每一条短评代表一个样本。

成功将文本转化为特征阵之后,你可能会想,一些经常用到的词例如“的“,”我“,实际上对判断喜好的帮助应该不大,但是它们的高频率可能会盖过那些真正重要的词,从而降低特征的预测能力。TF-IDF 是一种常用的再权重方法。主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

N-grams

即使是加了权重以后,这种以单个词语作特征的方式还是没办法很好的传递句意啊。一段文字的意思不仅取决于其组成的词语,也在于这些词语间的排列和依赖关系。就像“我爱她”和“她爱我”由三个相同的字组成,但是字的顺序不同表达的意思也不一样。

一种解救的方法是利用N-gram。这里的N指的是一组词语的数量。与其用一个词语代表一个特征,我们可以将两个甚至更多的词语连在一起组成一个特征。背后的思路也很简单:比较两个文本,如果它们有更多的子集相同,那它们就更加相似。上面的例子里,除了“我”,“有”,“小毛驴”,“北京”之外,对一个2-gram,我们还会有“我有”,”有小毛驴“,”有北京“这样的组合出现在特征矩阵中。

重新回到 绣春刀…

我一共爬取了16587条短评,比总的短评数量要少,因为中途断网实际上爬取了一半左右的短评,更重要的原因是一些短评没有评级所有并没有使用。根据打星的数量,三个星及以下视为消极评价,四个星及以上是为积极评价。

基本的操作流程是:

使用了几个文本分类里表现较好的分类器:Naive Bayes, Stochastic Gradient Descent, Support Vector Machine, Random Forest.

最好的分类器是Bernoulli Naive Bayes,交叉验证估计的预测准确率为0.67。

至于分类器的比较,变量筛选,参数选择等内容已经超出了这篇文章覆盖的范围。

总结

1. 介绍了情感分析的动机和定义

2. 情感分析的前提是意见型数据,而爬虫能够获取大量评论及文本型数据,于是我们介绍了流行的Python爬虫工具scrapy,尝试从头开始学起写一个简单的爬虫

3. 文本分类的一个困难在于将文本转化为能“喂给”分类算法的特征阵,最直接的方法是将文本分隔成一组词语并计算词语出现的频率

4. 利用N-gram试图抓取词语间的顺序和依赖关系,尽可能减少语义的流失

python 情感分析实例_情感分析实例相关推荐

  1. eds能谱图分析实例_成分分析的四大神器—XRF、ICP、EDX和WDX

    成分分析技术主要用于对未知物.未知成分等进行分析,通过成分分析技术可以快速确定目标样品中的各种组成成分是什么,帮助实验人员对样品进行定性定量分析,鉴别等.今天,小析姐就给大家介绍四种成分分析的常见设备 ...

  2. 电路分析导论_生存分析导论

    电路分析导论 In our extremely competitive times, all businesses face the problem of customer churn/retenti ...

  3. ahp层次分析法_层次分析法在历史街区研究中的应用简析

    摘要 AHP (Analytic Hierarchy Process)层次分析法通常被运用于解决多目标.多标准.多要素.多层次的非结构化的复杂决策性问题,特别是战略决策性问题,在建筑.规划.风景园林等 ...

  4. mysql实例管理工具巨杉_实例管理工具_操作_MySQL实例_关系型数据库实例_文档中心_SequoiaDB巨杉数据库...

    实例管理工具 sdb_mysql_ctl 是 MySQL 实例组件的管理工具.用户通过 sdb_mysql_ctl 既可以初始化.启动和停止实例,也可以修改实例的引擎配置参数. 参数说明 参数 描述 ...

  5. rda冗余分析步骤_群落分析的典范对应分析(CCA)概述

    典范对应分析(CCA)与去趋势典范对应分析(DCCA)概述典范对应分析(canonical correspondence analysis,CCA)是单峰约束排序方法,是对应分析(CA)与多元回归的结 ...

  6. ansys经典界面分析工字钢_工字钢_ANSYS实例分析72道(含结果)

    DOC 格式 . 2.3 工字钢 -ANSYS 实例分析 ( 三维实体结构 ) 介绍 三维实体结构的有限元分析 . 一.问题描述 图 1 所示为一工字钢梁,两端均为固定端,其截面尺寸为 1.0 , 0 ...

  7. python类实例_类和实例

    面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的"对象",每个对象都拥有相同的 ...

  8. python装饰器用法_深入浅出分析Python装饰器用法

    本文实例讲述了Python装饰器用法.分享给大家供大家参考,具体如下: 用类作为装饰器 示例一 最初代码: class bol(object): def __init__(self, func): s ...

  9. python决策树代码解读_建模分析之机器学习算法(附pythonR代码)

    0序 随着移动互联和大数据的拓展越发觉得算法以及模型在设计和开发中的重要性.不管是现在接触比较多的安全产品还是大互联网公司经常提到的人工智能产品(甚至人类2045的的智能拐点时代).都基于算法及建模来 ...

最新文章

  1. 如何删除一个CSDN上自己上传的资源
  2. gpio引脚介绍 树莓派3b_使用微创联合M5S空气检测仪、树莓派3b+、prometheus、grafana实现空气质量持续监控告警WEB可视化...
  3. elasticsearch 条件去重_elasticsearch去重计数
  4. SharePoint 部署解决方案Feature ID冲突
  5. 通信工程专业的一些小知识点
  6. linux版本的edge多网页标签(tag)不见了咋办
  7. 跟我一起学Redis之Redis配置文件啃了一遍之后,从尴尬变得有底气了(总结了一张思维图)...
  8. django-模板变量
  9. .NET轻量级任务管理类
  10. 苹果iOS 13概念曝光 音量UI大改鼠标即时配对
  11. SQL Server更新联接概述
  12. centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
  13. fork()函数详解
  14. 记一次给笔记本安装固态硬盘
  15. android 小鸡走动动画,使用Matter.js实现的小鸡掉落动画
  16. SpringBoot 搭建微信小程序支付(JSAPI) 纯后端
  17. 修复Warning: Use of undefined constant PRC – assumed ‘PRC
  18. 汽车之家配置参数抓取
  19. 2022年中国铝合金产量、下游应用及主要企业经营情况分析[图]
  20. 计算机基础统考模拟系统,计算机应用基础(统考)模拟1

热门文章

  1. 平安健康向4.0时代迈进,“渠道生态”找准长期增长方法论
  2. 富而喜悦一年一渡专属于你的特别的礼物!快来收!
  3. 基于PHP的二手车交易系统的设计与实现
  4. SSH 客户端神器之 MobaXterm
  5. linux中free -m命令详解,Linux中free命令起什么作用呢?
  6. 多个超声波读取模块(ROS)
  7. Two Stream R-C3D用于时序区域行为检测
  8. 采用React框架搭建项目
  9. 机器学习基础环境部署 | 机器学习系列
  10. oracle中闪回概念,Oracle数据库的闪回操作