听听海 发表于 2016-5-6 09:53:39

利用Python爬虫来做情感分析

<p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>这篇短文的目的是分享我这几天里从头开始学习<a href='http://www.iplaypython.com/crawler/' target='_blank' target='_blank' >Python爬虫</a>技术的经验,并展示对爬取的文本进行情感分析(文本分类)的一些挖掘结果。 不同于其他专注爬虫技术的介绍,这里首先阐述爬取网络数据动机,接着以豆瓣影评为例介绍文本数据的爬取,最后使用文本分类的技术以一种机器学习的方式进行情感分析。由于内容覆盖面巨大,无法详细道尽,这篇文章旨在给那些对相关领域只有少量或者没有接触的人一个认知的窗口,希望激发读者自行探索的兴趣。</p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  以下的样本代码用Pyhton写成,主要使用了scrapy, sklearn两个库。</p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  <strong style='border:0px;margin:0px;padding:0px;'>所以,什么是情感分析(Sentiment Analysis)?</strong></p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  情感分析又叫意见挖掘(Opinion Mining), 是一个研究人们对某种事物,例如产品,话题,政策的意见,情绪或者态度的领域。 随着网路上意见型数据的爆发,情感分析也被广泛研究和应用。Bing Liu 的 Sentiment Analysis and Opinion Mining 对此做了比较全面的概括和案例研究,另一篇Bo Pang 的经典论文 Opinion Minning and Sentiment Analysis 则着重研究了情感分类这一问题。</p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  简单的一个应用的<a href='http://www.iplaypython.com/' target='_blank' target='_blank' >python教程</a>例子,某公司想调查自己在淘宝上销售的产品的受喜爱程度,就可以从产品评论入手, 用一个训练好的分类器判断每个留下评论用户的对此产品的喜好态度,积极的或者是消极的评价,以此展开,充分挖掘文本内容。</p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  <strong style='border:0px;margin:0px;padding:0px;'>Python爬虫</strong></p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  当然,情感分析的第一步是获取数据,而网络尤其是社交网络是存在着丰富而易于获得的意见型数据资源。Python的开源爬虫库scrapy就很好用,这也是作为一个新手上手的首选工具。scrapy wiki 提供了全面的学习资源,甚至有中文的资料和说明文档。就像我一直强调的,数据科学家是一个要具备多领域技能的职位,以练代学不失为一种很好的途径。我鼓励对<a href='http://www.iplaypython.com/news/' target='_blank' target='_blank' >Python</a>爬虫跃跃欲试的读者不要担心自己知识不足,这里没有门槛,直接上就是了。</p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  当你读完了上述介绍文档之后,你应该知道一个scrapy项目的组成,抓取流程,scrapy里每种Spider的应用场景,大致了解XPATH的语法规则。这样之后你就了解到编写一个简单爬虫只需四步:</p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  <strong style='border:0px;margin:0px;padding:0px;'>1.scrapy startproject PROJECT_NAME</strong></p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  <strong style='border:0px;margin:0px;padding:0px;'>2.定义一个爬虫类:</strong></p><ul style='border:0px;margin:26px 0px 0px 30px;padding:0px;font-size:14px;color:#333333;font-family:微软雅黑, 宋体;line-height:26px;'><li style='border:0px;margin:0px;padding:0px;'>选择爬虫种类(Spider, CrawlSpider), 取决于目标和爬虫各自合适的应用场景</li><li style='border:0px;margin:0px;padding:0px;'>有一个初始url,或者一个生成初始url的方法</li><li style='border:0px;margin:0px;padding:0px;'>有一个能够生成请求(request)的“解析(parse)”方法</li></ul><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  <strong style='border:0px;margin:0px;padding:0px;'>3. 在item类里想要抓取的内容</strong></p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  <strong style='border:0px;margin:0px;padding:0px;'>4. scrapy crawl SPIDER_NAME</strong></p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  我上手的第一个例子是爬取豆瓣的影评数据,选择豆瓣一是因为其丰富的语料资源和配备的打分体系,便于分类问题的标签获得。 二是可以避开账户登录,限制少。思路是选取一部特定的电影,然后爬取其所有的短评和评分。这样后期文本就可以作为分类特征,评分则作为分类标签。 我选了绣春刀(2014年最喜欢的电影)作目标,定义的爬虫类如下:</p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  <img src='http://img.mp.itc.cn/upload/20160504/27cd2e2631a047928dddb60253f11768_th.jpg' alt='' style='border:0px;margin:0px;padding:0px;font-size:0px;color:transparent;max-width:600px;' /></p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'>  简短几十行代码之后你已经能够开始抓取一部电影的全部短评和评分了。在这之前,记得在settings里加一个DOWNLOAD_DELAY = 2,不然的话爬不到一半就会被豆瓣给禁了。</p><p style='border:0px;margin-top:0px;margin-bottom:0px;padding:26px 0px 0px;font-size:14px;color:#333333;word-wrap:break-word;font-family:微软雅黑, 宋体;line-height:26px;'></p><a href="http://www.iplaypython.com/news/" target="_blank" title="Python;教程">Python;教程</a>
页: [1]
查看完整版本: 利用Python爬虫来做情感分析