一:前言
上次把斗魚彈幕數(shù)據(jù)抓取搞定后超歌,我就拿來試試用詞云分析看看效果专普,簡單學(xué)習(xí)一下。這是彈幕抓拍去分析的對象是斗魚主播大司馬码耐,因為他直播比較搞笑追迟,雖然我不玩游戲,但是之前看他還是有意思骚腥。這次我使用的數(shù)據(jù)是彈幕爬取后保存到text中的敦间,實現(xiàn)代碼放在這里:github.com/rieuse/DouyuTV,有了這個數(shù)據(jù)后續(xù)就可以使用詞云分析了束铭。
二:遇到的坑
第一次用需要安裝幾個插件:jieba廓块,scipy,wordcloud契沫,但是這個wordcloud在win下面容易出錯带猴。解決方法是使用http://www.lfd.uci.edu/~gohlke/pythonlibs/ 網(wǎng)站下載對應(yīng)的模塊,然后復(fù)制到你的電腦目錄中懈万,之后使用命令行工具進入該文件夾中拴清,然后執(zhí)行一下安裝操作,我是python3.6 64位電腦:pip install wordcloud?1.3.1?cp36?cp36m?win_amd64.whl其他版本請下載安裝對應(yīng)模塊会通。
三:簡單原理
- jieba這個模塊是用來分詞的口予,把一段文字分解成一個一個的詞匯,就像我的錘子手機的大爆炸一樣分詞涕侈。jieba.cut()分詞函數(shù)提供了三個模式:全模式沪停,精確模式,搜索引擎模式。全模式:速度塊木张,掃描成詞的詞語众辨,但時會出現(xiàn)歧義的詞語
精確模式:盡可能最準(zhǔn)確非切分詞語,比較適合作文本分析
搜索引擎模式:就是精確模式的基礎(chǔ)上窟哺,對長詞再次切分泻轰,提高召回率
這里默認的話就是精確模式技肩。第一次可以不用考慮模式問題且轨,先上來弄出個圖給自己美滋滋一下再說。 - 之后對分詞后的數(shù)據(jù)使用wordcloud模塊虚婿,進行對詞匯分析了
- 最后使用matplotlib.pyplot旋奢,繪圖展現(xiàn)出來。
四:代碼展現(xiàn)
-
1.Python的代碼量很少然痊,所以學(xué)習(xí)還是比其他語言來的舒服至朗。這里的就簡單這些代碼就實現(xiàn)了詞云的目的。我這里導(dǎo)入的文檔是彈幕爬取后的剧浸,代碼在我gituhub中锹引,就是把之前彈幕數(shù)據(jù)保存到mongodb改成只把彈幕內(nèi)容保存到text文檔中。
Paste_Image.png
import jieba,jieba.analyse
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import os
import PIL.Image as Image
import numpy as np
with open('大司馬即將上課前后.txt','r',encoding='utf-8') as f:
text = f.read()
f.close()
cut_text = " ".join(jieba.cut(text)) #使用空格連接 進行中文分詞
d = os.path.dirname(__file__) # 獲取當(dāng)前文件路徑
color_mask = np.array(Image.open(os.path.join(d,'img.jpg'))) # 設(shè)置圖片
cloud = WordCloud(
background_color='#F0F8FF', # 參數(shù)為設(shè)置背景顏色,默認顏色則為黑色
font_path="FZLTKHK--GBK1-0.ttf", # 使用指定字體可以顯示中文唆香,或者修改wordcloud.py文件字體設(shè)置并且放入相應(yīng)字體文件
max_words=1000, # 詞云顯示的最大詞數(shù)
font_step=10, # 步調(diào)太大嫌变,顯示的詞語就少了
mask=color_mask, #設(shè)置背景圖片
random_state= 15, # 設(shè)置有多少種隨機生成狀態(tài)躬它,即有多少種配色方案
min_font_size=15, #字體最小值
max_font_size=232, #字體最大值
)
cloud.generate(cut_text) #對分詞后的文本生成詞云
image_colors = ImageColorGenerator(color_mask) # 從背景圖片生成顏色值
plt.show(cloud.recolor(color_func=image_colors)) # 繪制時用背景圖片做為顏色的圖片
plt.imshow(cloud) # 以圖片的形式顯示詞云
plt.axis('off') # 關(guān)閉坐標(biāo)軸
plt.show() # 展示圖片
cloud.to_file(os.path.join(d, 'pic.jpg')) # 圖片大小將會按照 mask 保存
- 2.執(zhí)行之后就可以顯示出來了:
之后我又對斗魚主播蕪湖大司馬直播后一段時間的彈幕分析了一下冯吓,結(jié)果如下:
- 3.前面是使用自己的詞云分析倘待,之后我把我的兩個時間段的彈幕內(nèi)容放到bluemc凸舵,這里來分析是這樣的:
五:總結(jié)
通過兩個時間段的詞云分析增热,可以看的出來觀眾說的最多的,關(guān)注點是哪些摄咆。這次我做的詞云也很簡單朝蜘,后續(xù)在研究研究讓它更美觀一些,精準(zhǔn)一些副渴。
貼出我的github地址,我的爬蟲代碼和學(xué)習(xí)的基礎(chǔ)部分都放進去了勉盅,有喜歡的朋友可以點擊 start follw一起學(xué)習(xí)交流吧!github.com/rieuse/DouyuTV