環境背景:
今天想嘗試一下導師說過的情感分析,根據自身的實際情況選擇SnowNLP來做個有趣的實驗。SnowNLP是咋們中國人受到了TextBlob的啟發後開發的python類庫,能夠非常方便的處理中文文本內容,劃重點方便處理中文的類庫!!!,類庫中的算法和訓練好的字典都已經準備好了。唯一需要注意的是要使用unicode編碼,所以使用時請自行decode成unicode。
知道這個SnowNLP是什麼之後,我們開始設計下實驗方案。
提出問題:
SnowNLP分析豆瓣電影簡介的情感度
解決方案:
爬蟲選用:scrapy
數據庫選用:mongodb
python環境選用:python3
情感分析選用:SnowNLP
實際操作:
第一步
安裝mongodb數據庫
第二步
安裝python 第三方庫
python -m pip install pip install pymongo
python -m pip install pip install scrapy
python -m pip install pip install snownlp
第三步
編寫爬蟲
ln -s /usr/local/python3/bin/scrapy /usr/bin/scrapy
scrapy startproject douban
cd douban
scrapy genspider douban douban.com
vi spider/douban.py
```
# -*- coding: utf-8 -*-
from scrapy.spiders import CrawlSpider
from douban.items import DoubanItem
import scrapy
class DoubanSpider(CrawlSpider):
name = "douban"
offset = 0
url = "https://movie.douban.com/top250?start="
start_urls = (
url + str(offset),
)
def parse(self,response):
item = DoubanItem()
movies = response.xpath('//div[@class="info"]')
print('*'*80)
print(len(movies))
for each in movies:
# 電影名
item['title'] = each.xpath('.//span[@class="title"][1]/text()').extract()[0]
# 基本信息
item['bd'] = each.xpath('.//div[@class="bd"]/p/text()').extract()[0]
# 評分
item['star'] = each.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').extract()[0]
# 簡介
quote = each.xpath('.//p[@class="quote"]/span/text()').extract()
if len(quote) != 0:
item['quote'] = quote[0]
yield item
if self.offset < 225:
self.offset += 25
yield scrapy.Request(self.url + str(self.offset), callback=self.parse)
```
vi items.py
```
# -*- coding: utf-8 -*-
import scrapy
from scrapy import Item,Field
class DoubanItem(scrapy.Item):
# 電影名
title = scrapy.Field()
# 基本信息
bd = scrapy.Field()
# 評分
star = scrapy.Field()
# 簡介
quote = scrapy.Field()
```
vi pipelines.py
```
class DoubanPipeline(object):
def __init__(self):
conn = MongoClient('172.10.2.105', 27017)
db = conn.moves
self.post = db.Book
def process_item(self, item, spider):
bookInfo = dict(item)
print(bookInfo)
self.post.insert(bookInfo)
return item
```
scrapy crawl douban
爬蟲腳本可以獲取豆瓣電影Top250 的一些基本信息,當然也包括我們需要的電影簡介。把這些爬到的數據都存在mongodb中,等下做情感分析的時候再從mongodb中獲取電影簡介~~
第四步
編寫情感分析
# -*- coding: utf-8 -*-
from pymongo import MongoClient
from snownlp import SnowNLP
conn = MongoClient('172.10.2.105', 27017)
db = conn.moves
my_set = db.Book
for i in my_set.find():
print(i['quote'])
analyze = SnowNLP(u'%s' % i['quote'])
print("情感度:%s " % analyze.sentiments)
第五步
運行情感分析文件,查看結果。。。
結果很明顯都是好評~~情感度就沒有低於0.85的!!!
大家可以修改一下腳本測測你和朋友同事聊天時,他們回覆時的情感度~~
閱讀更多 崔格拉斯 的文章