詞雲圖分析微博評論

微博評論詞雲圖

最近小豬在5月20號發佈了一篇對周揚青的小作文,我正好也想做一個詞雲圖的項目,
所以爬取了這條微博的評論,做個詞雲圖來看看大家都在說些什麼,
PS:有些信息只能脫敏

#導包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import repeat_word as rw
import jieba
import jieba.analyse
from wordcloud import WordCloud,STOPWORDS #詞雲圖,屏蔽詞
from PIL import Image#讀取圖片

#顯示中文
plt.rcParams['font.sans-serif']='simhei'
plt.rcParams['axes.unicode_minus']=False

數據處理

# 這是我之前已經爬取好的評論數據
df =  pd.read_excel(r"F:\Eddy\羅志祥博文評論.xlsx")
df.head()
發帖子人 博文發佈時間 評論者 評論內容 評論時間 評論點贊
0 lzx 5月20日 09:12 1 四十歲啦還自稱男孩6666(學到了 5月20日 13:20 1163934.00
1 lzx 5月20日 09:12 2 土狗,我初中就不寫這種東西了 5月20日 09:20 953578.00
2 lzx 5月20日 09:12 3 熱搜預備:羅志祥舔起來了 5月20日 09:12 370486.00
3 lzx 5月20日 09:12 4 不是繁體,是本人寫的嗎?難每天半夜給周揚青發消息的只是你的替身?是個大陸人? 5月20日 09:17 324679.00
4 lzx 5月20日 09:12 5 你的戀愛,我心疼;你的文字,還愛她。 5月20日 09:18 261725.00
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 687 entries, 0 to 686
Data columns (total 6 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   發帖子人    687 non-null    object 
 1   博文發佈時間  687 non-null    object 
 2   評論者     686 non-null    object 
 3   評論內容    679 non-null    object 
 4   評論時間    686 non-null    object 
 5   評論點贊    349 non-null    float64
dtypes: float64(1), object(5)
memory usage: 32.3+ KB
#刪除無評論項
df.dropna(inplace=True)
# 重置下索引
df.reset_index(drop=True,inplace=True)
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

<ipython-input-45-3e1500d1d53c> in <module>
----> 1 df.reset_index(drop=true,inplace=True)


NameError: name 'true' is not defined
#看一下前10評論都說了什麼
df[["評論者","評論內容","評論點贊"]][0:10]
評論者 評論內容 評論點贊
0 1 四十歲啦還自稱男孩6666(學到了 1163934.00
1 2 土狗,我初中就不寫這種東西了 953578.00
2 3 熱搜預備:羅志祥舔起來了 370486.00
3 4 不是繁體,是本人寫的嗎?難每天半夜給周揚青發消息的只是你的替身?是個大陸人? 324679.00
4 5 你的戀愛,我心疼;你的文字,還愛她。 261725.00
5 6 怎麼qq空間日誌即視感啊男孩女孩 237951.00
6 7 ??? 211969.00
7 8 你不配這個女孩,臭八爪魚 194336.00
8 9 真的想洗白就給大家還花唄 184394.00
9 10 ?????¡評論配圖 158093.00

數據探索

# 提取評論
lzx = df.評論內容
lzx
0                           四十歲啦還自稱男孩6666(學到了
1                              土狗,我初中就不寫這種東西了
2                                熱搜預備:羅志祥舔起來了
3      不是繁體,是本人寫的嗎?難每天半夜給周揚青發消息的只是你的替身?是個大陸人?
4                          你的戀愛,我心疼;你的文字,還愛她。
                        ...                  
632                         新型洗白方式,大家學起來。啥時候舔
637                                  是他自己寫的嗎。
653               “這段日子是我近年來最長的一段(沒有和異性)獨處時間”
656                            你垂死掙扎的樣子,像極了盧某
671                       藝人不是普通人沒有自己私生活事?何必?
Name: 評論內容, Length: 346, dtype: object
# 這裏是之前寫的一個刪除評論前後重複的Python腳本
lzx_01 = rw.del_forward(rw.del_backward(lzx))
lzx_01[0:6]
['四十歲啦還自稱男孩6666(學到了',
 '土狗,我初中就不寫這種東西了',
 '熱搜預備:羅志祥舔起來了',
 '不是繁體,是本人寫的嗎?難每天半夜給周揚青發消息的只是你的替身?是個大陸人?',
 '你的戀愛,我心疼;你的文字,還愛她。',
 '怎麼qq空間日誌即視感啊男孩女孩']
len(lzx_01)
346
# 去個重
lzx_03 = set(lzx_01)
len(lzx_03)
322
# 使用jieba切詞,把所有評論放到一個列表中
text = ""
for i in lzx_03:
    text += " ".join(jieba.lcut(i))
# 簡單看一下
text[0:220]
'你 平安 喜樂 就 好你 很 愛 她是不是 爲了 周揚 青看 懂 才 換 的 簡體哥 平安 就 好其實 分手 最好 , 沒 覺得 他倆 般配放過 她 吧 , 哥 , 放過 人 女孩子 吧圖片 評論 ¡ 評論 配圖哥最好 的 豬豬 🐷溜回 臺灣 了 , 還 不忘發 文章 討一波 打賞 , 不愧 是 時間 管理員 , 一寸光陰一寸金你 的 團隊 真能作 , 請 你 放過 她臥槽 ? ?這 就 開始 洗白 了 嗎 。 。 。 。 羣 p 都 '

詞雲圖繪製

#配置詞雲的基本參數,先簡單繪製一下
mask = np.array(Image.open("地圖.jpg"))
my_cloud = WordCloud(
    mask = mask,
    background_color='white',
    stopwords=STOPWORDS,  #這裏是屏蔽詞,等下我們可以製作一個自己的屏蔽詞
    font_path="F:\Eddy\simsun.ttc")

# 把上面生成好的text文本放在詞雲實例中生成
my_cloud.generate(text)

# 各自畫圖格式
#顯示詞雲
plt.rcParams['figure.figsize'] = (10, 6)
plt.imshow(my_cloud)
plt.axis('off')
plt.show()

在這裏插入圖片描述

  • 可以看到這裏的詞雲圖是非常混亂的,看不出來什麼東西,有很多用不到的詞,我們需要對源數據清洗一下然後重新繪製
#這裏是一個txt問件,裏面我已經提前加好了一些屏蔽詞
sw = pd.read_csv(r"F:\Eddy\sw.txt",quoting=3,names=["屏蔽詞"])
sw.head()
屏蔽詞
0 評論
1 微博
2 配圖
3 周揚
4 小豬
c = ""
for i in lzx_03:
    seg = jieba.lcut(i)
    for word in seg:
        if word in sw.values:
            continue
        else:
            c += " " + word
# 簡單看一下,清洗過後的評論信息
c[0:200]
' 平安 喜樂 愛 青看 懂 換 簡體 哥 平安 分手 他倆 般配 放過 哥 放過 女孩子 ¡ 哥 豬豬 🐷 溜回 臺灣 不忘發 文章 討一波 打賞 不愧 時間 管理員 一寸光陰一寸金 團隊 真能作 請 放過 臥槽 洗白 羣 p 原諒 錯 錯 錯過 錯過 安好 挑 520 發 人間 迷惑 迴歸 網絡 異常 愛情 默默 守護 女朋友 一年 哥哥 好好 說 我哥 女孩 故事 不忍心 完 哥 幹嘛 ¡ 好'
#製作詞頻,用來繪製詞雲圖
freq = jieba.analyse.extract_tags(c,topK=30,withWeight=True)
print(freq[:30])
freq = {i[0]: i[1] for i in freq}
[('真的', 0.1367668533273763), ('安好', 0.11470157989691877), ('520', 0.11162247901867413), ('好好', 0.09713376472918767), ('女孩', 0.06969680003370682), ('愛過', 0.06597395530849673), ('幹嘛', 0.060498606227647064), ('希望', 0.05832311792918768), ('加油', 0.0575616173279085), ('幸福', 0.05721095744537815), ('複合', 0.05627792496164333), ('洗白', 0.055811239509337064), ('文章', 0.05565907500285715), ('放過', 0.0548981662838562), ('男孩', 0.05404879653692811), ('粉絲', 0.052188852511540616), ('故事', 0.05143171902579831), ('定時', 0.04881395992235294), ('簡體字', 0.04781350275742297), ('感情', 0.04762335690644258), ('分手', 0.04507342145529411), ('喫瓜', 0.04464899160746965), ('女友', 0.043443313734080294), ('珍惜', 0.04062642680070028), ('非主流', 0.038972704945658264), ('臥槽', 0.03893747241456583), ('真心', 0.038794074096451914), ('時間', 0.03809093961213819), ('原諒', 0.03737756684271709), ('向前', 0.03664900142089636)]
#配置詞雲的基本參數,繪製詞頻詞雲圖
mask = np.array(Image.open("地圖.jpg"))
my_cloud = WordCloud(
    mask=mask,
    background_color='white',
    stopwords=STOPWORDS,  #這裏是屏蔽詞,等下我們可以製作一個自己的屏蔽詞
    font_path="F:\Eddy\simsun.ttc",
    width=1000,
    height=200)

# 把上面生成好的text文本放在詞雲實例中生成
my_cloud.fit_words(freq)

# 各自畫圖格式
#顯示詞雲
plt.rcParams['figure.figsize'] = (10, 6)
plt.imshow(my_cloud)
plt.axis('off')
plt.show()

在這裏插入圖片描述

  • 這樣就做出來了我們需要的詞雲圖,可以看出祝安好的還是有很多人的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章