Python Tool 101-Tool 002-Python 情感分析 SnowNLP

環境背景:

今天想嘗試一下導師說過的情感分析,根據自身的實際情況選擇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的!!!

大家可以修改一下腳本測測你和朋友同事聊天時,他們回覆時的情感度~~

Python Tool 101-Tool 002-Python 情感分析 SnowNLP


分享到:


相關文章: