前段時(shí)間食拜,我們爬取了幾部熱門(mén)的電影,分別是《三生三世》勉吻,《戰(zhàn)狼》,《二十二》旅赢,我們今天 就以這幾部為例齿桃,進(jìn)行一個(gè)簡(jiǎn)單的詞云的制作。
我們主要以《二十二》為例煮盼,來(lái)制作一個(gè)評(píng)論的詞云短纵。
首先需要安裝幾個(gè)必要的工具庫(kù):
- Pandas 用來(lái)實(shí)現(xiàn)文件讀取和存儲(chǔ),以及必要的數(shù)據(jù)轉(zhuǎn)換僵控。
- jieba 一個(gè)強(qiáng)大的分詞工具香到,用來(lái)實(shí)現(xiàn)分詞,也是我們實(shí)現(xiàn)詞云的一個(gè)最重要的工具报破。
- wordcloud 詞云工具悠就,用來(lái)實(shí)現(xiàn)最終的詞云的制作,也是必要的工具充易。
下面我們就開(kāi)始梗脾。
首先需要導(dǎo)入相應(yīng)的庫(kù),并讀取我們下載的csv文件盹靴。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df_ershier = pd.read_csv('ershier.csv', encoding='utf-8')
df_ershier.comment.fillna(' ')
df_ershier.comment = df_ershier.comment.astype(str)
下面就是實(shí)現(xiàn)詞云的主要步驟炸茧。
import jieba
from wordcloud import WordCloud
import PIL
result = [] # 用來(lái)存放切分的詞
def parse(raw_text):
for word in jieba.cut(raw_text): # raw_text是字符串,也就是我們獲取到的全部評(píng)論信息
if len(word) > 1:
result.append(word)
def wordcloudplot(data, file_name): # data 是以空格分隔的字符串
path = 'msyh.ttf'
alice_mask = np.array(PIL.Image.open('yuan.jpg'))
stopwords = ['nan', '就是', '還是', '但是', '沒(méi)有','覺(jué)得', '三生三世', '三生', '三世',
'還有', '演員', '怎么', '這么', '電影', '這部']
wordcloud = WordCloud(font_path=path, background_color="white",
margin=5,
width=1000, height=800,
mask=alice_mask, max_words=1000, max_font_size=100,
stopwords = stopwords, random_state=0)
wordcloud = wordcloud.generate(data)
wordcloud.to_file(file_name)
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
下面是執(zhí)行部分
raw_text = ' '.join(list(df_ershier.comment))
parse(raw_text)
text = ' '.join(result)
wordcloudplot(text, 'ershier_.jpg')
最后生成如下的詞云
image
同樣的道理稿静,生成如下的《戰(zhàn)狼》梭冠,《三生三世》
image
image