Python 詞雲分析周杰倫新歌《說好不哭》

周杰倫可貴出新歌 ,最近終於推出了單曲《說好不哭》,而後直接把QQ音樂服務器幹崩了,天王的實力可見一斑,QQ音樂還把這個看成 今天過年 html

image.png

看我公衆號頭像就知道是杰倫粉了 ,高中的時候開始喜歡上了他的歌,一晃都這麼多年了,我整理了他全部的歌曲和部分電影/演唱會視頻,能夠在公衆號回覆 周杰倫 獲取,2個多小時的2004 無與倫比演唱會看了n遍。 git

image.png

還作了個杰倫的我的PPT sushengbuhuo.gitee.io/blog/jay/#/…, 在pc上使用空格或者方向鍵來查看PPT。 github

image.png
image.png

下面開始用詞雲來分析杰倫這首歌都寫的什麼內容。windows

詞雲

詞雲,又稱文字雲,由詞彙組成相似雲的彩色圖形,用於展現大量文本數據,就是對網絡文本中出現頻率較高的「關鍵詞」予以視覺上的突出,造成「關鍵詞雲層」,從而過濾掉大量的文本信息,使瀏覽者只要一眼掃過文本就能夠領略文本的主旨。 瀏覽器

image.png

歌詞

先看看這首歌的歌詞,在QQ 音樂上能夠找到y.qq.com/n/yqq/song/…服務器

先把歌詞保存到文件 no_cry.txt ,而後用Python的wordcloud來分析 。微信

wordcloud

wordcloud 是Python的一個擴展包,直接使用pip install wordcloud來安裝。 github.com/amueller/wo…網絡

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import jieba,wordcloud
from snownlp import SnowNLP
import jieba.analyse
from collections import Counter

with open('no_cry.txt', 'r',encoding='utf-8') as f:
     data = f.read()
mytext = " ".join(jieba.cut(data))
wordlist = jieba.analyse.extract_tags(mytext, topK=10)   # 分詞,取前10
['怎麼', '別人', '挽留', '打擾', '放手', '說好', '在乎', '沒有', '從不', '拼命']
#c = Counter(mytext)
#c = c.most_common(10)
wordcloud = WordCloud(font_path="c:\windows\fonts\simhei.ttf").generate(mytext)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
wordcloud.to_file('no_cry.jpg')
複製代碼

保存到本地的文件 no_cry.jpg圖片效果:dom

image.png
改變下尺寸效果
image.png

接着看看這首歌的主要關鍵詞jvm

s = SnowNLP(mytext)
# for sentence in s.sentences:
# 	print(sentence)
# 	sentc = SnowNLP(sentence)
# 	print(sentc.sentiments)
>>> s.sentiments
0.9875230187654408

>>> s.summary(limit=10)  
複製代碼

關鍵詞以下:

['我都是聽別人說', '不習慣一我的生活', '不習慣一我的生活', '說好不哭讓我走', '說好不哭讓我走', '都這個
時候 你還在乎着', '都這個時候 你還在乎着', '電話開始躲 從不對我說', '電話開始躲 從不對我說', '挽留的話卻沒有說']
複製代碼

而後加個白色背景

def handle(textfile, stopword):
    with open(textfile, 'r',encoding='utf-8') as f:
       data = f.read()
    wordlist = jieba.analyse.extract_tags(data, topK=100)   # 分詞取前100
    wordStr = " ".join(wordlist)
     
    hand = np.array(Image.open('img/no_cry.jpeg'))    
    my_cloudword = WordCloud(
        # wordcloud參數配置
        width=1024,
        height=768,
        background_color = 'white',  
        #mask = hand,                   
        max_words = 100,               
        stopwords = stopword,          
        max_font_size = 100,            
        font_path='c:\windows\fonts\simhei.ttf',   
        random_state=3,   
    )
    my_cloudword.generate(wordStr)           
    my_cloudword.to_file('res.jpg')     
    plt.axis('off')   
    ax = plt.imshow(my_cloudword)   
    fig = ax.figure
    fig.set_size_inches(25,20)                  
    plt.show()   
stopwords = set(STOPWORDS)
handle('no_cry.txt', stopwords)
複製代碼

效果圖

image.png

wordcloud_cli

若是你不想寫代碼 ,能夠直接用命令行工具wordcloud_cli , amueller.github.io/word_cloud/… 能夠看看命令行參數

直接執行 wordcloud_cli --text no_cry.txt --imagefile no_cry.jpg --mask ye.jpg --fontfile c:\windos\fonts\simhei.ttf,生成圖片效果

image.png

一首歌可能還看不出效果,下面以周杰倫於2003年發行的專輯《葉惠美》爲例,共收錄了11首歌曲

image.png

百科地址https://baike.baidu.com/item/%E5%8F%B6%E6%83%A0%E7%BE%8E/893 近600行歌詞,保存到文件 jay.txt

image.png
效果圖:

image.png

這張專輯的主要關鍵詞

['微笑 東風破 乒乓 彈奏 咱們 驕傲 睫毛 不想 一曲 好難 獲得 走過 琵琶 一天 天空 多強 畫面 嘴角 到底 一直
 粉嫩 恰恰 二班 回憶 永遠 看不見 故事 不到 爲何 不用 沉默 外表 請原諒 從前 可不能夠 孤獨 水蜜桃 沒有
雙刀 脣膏 怎麼 知道 國度 刻着 一點 多汁 離開 漸漸 墜入 小孩 原地打轉 仁慈 還要 清秀 自負 亮麗 受傷 沒人
能 我試 過握 大到 訓導處 荒煙漫草 先對 我戒 那魯灣 裁判 唐裝 本身 依賴 第一名 答案 示好 石板路 專輯 喊
叫 香味 楓葉 一股 捨不得 那年 溫柔 放晴 自信 洋溢 雨淋 距離 俯瞰 看不慣 古道 颳風 籬笆 不要 天台 剝落
琴聲 紀錄片 幽幽 預兆 仍是']

複製代碼

若是你不會代碼怎麼生成詞雲呢,有許多對應的網站。

wordart

一個在線生成詞雲的網站 wordart.com/create 將文字導入進去

image.png
上傳中文字體,不然亂碼,效果如圖:
image.png

國內也有對應的 cloud.niucodata.com/,將歌詞複製進去,點擊…

image.png

公衆號詞雲

這是新榜針對公衆號文章的詞雲分析工具,能夠無償使用https://data.newrank.cn/wordCloud.html ,好比個人公衆號文章詞雲圖

image.png

推薦閱讀:

如何發一條空白的朋友圈

那些在國內還能使用的谷歌產品

那些你可能不知道的微信奇技淫巧

如何在豆瓣租房小組快速找到滿意的房子

公衆號蘇生不惑原創文章整理

Chrome 瀏覽器擴展神器油猴

免費星球

公衆號:蘇生不惑

掃描二維碼關注
相關文章
相關標籤/搜索