霍尊是當前滿紅的古風歌手尚困,他的歌曲優(yōu)美而引人遐思,幾乎成了唯美古裝劇的必配劳翰。在聽了n首之后敦锌,數(shù)據(jù)分析的本性難耐,碼了段程序佳簸,一起看看他的歌詞乙墙,主要寫了什么。
用的技巧不復雜溺蕉,就是結巴分詞和詞云圖伶丐。以前也有很多人用來分析其他歌手比如汪峰,周杰倫疯特。所以在此之前還搜了一下哗魂,好像沒人講霍尊。開干漓雅。所用程序是R語言录别。
首先安裝包,jiebaR和wordcloud2
library(jiebaR)
library(wordcloud2)
library(readr)
setwd("E:")
其次讀取文件邻吞∽樘猓霍尊出道不算很久,歌曲不多抱冷,我大約搜到了20首古風歌曲崔列,包括卷珠簾,桃花雨旺遮,粉墨等等赵讯,現(xiàn)代歌沒有錄入(比如玫瑰堡壘,比如天氣預報報一報(這歌名是什么鬼))耿眉,以免影響境界边翼。
然后做成txt文本文件。
讀取和分詞有兩個辦法鸣剪,我先試的是直接用read_table讀取txt文件组底,然后用worker函數(shù)分詞,但這樣的結果會很怪筐骇,重復的詞后面會有詞頻债鸡,比如“的_3”,好煩惱铛纬∧锼看以前的文章不會有這樣的現(xiàn)象,不知道是不是包的改動or版本的問題饺鹃。
改為scan后用segment函數(shù)莫秆,就好了间雀。
f <- scan('E:/hz.txt',sep='\n',what='',encoding="UTF-8")
wk<-worker()
lyric <- segment(f,wk)
lyric <- lyric[nchar(lyric)>1]
length(lyric)
然后把1個字的刪掉,算下總數(shù)镊屎,一共有1550個詞語惹挟。
運用count函數(shù),統(tǒng)計詞頻缝驳,然后按照順序排序连锯。
這里要注意的:
- 按理說sort也可以,比如lyric_50<-sort(tableword$freq,decreasing=T)[1:50]用狱,但我怎樣也不行运怖,然后就轉了order
- 要把count(lyric)轉化為數(shù)據(jù)框結構,這樣左列是詞語夏伊,右列是詞頻摇展。
tableword<-as.data.frame(count(lyric))
tableword[order(tableword[,2],decreasing=T),]
然后就可以畫詞云圖了,記得data也要用有詞頻的數(shù)據(jù)溺忧,而不是只有分詞的文件咏连,不然又要報錯。
wordcloud2(tableword2,size=0.5,shape='square')
先用所有詞試一下鲁森,滿滿的占了整屏幕祟滴,詞語還是很優(yōu)美的。語文老師大概會打85分歌溉。
好吧還是要篩選一下垄懂。只把詞頻在3以上的挑出來,而且字號調小痛垛。這次只有141個了草慧。最多的詞也只有6個詞頻,重復率并不高榜晦。
tableword2<-subset(tableword,tableword[,2]>=3)
wordcloud2(tableword2,size=0.5,shape='star')
出來一個比較扁的星星。三國比較多是因為他唱了一首游戲主題曲《放開那三國》...
感想:霍尊歌詞里重復的詞語不多羽圃,比如風字開頭的就有:風景乾胶,風骨,風雨朽寞,風月识窿,風浪,風涼...這可能跟他歌曲的作詞者比較不同有關脑融,所以盡管題材趨同喻频,但每一首還能給人較為清新的感覺。
潛力還很大嘛肘迎∩拢看好你哦锻煌!
所選歌曲:1.惜春詞 2.桃花雨 3.天行九歌 4.夢誅緣 5.粉墨 6.孤芳不自賞 7. 梨花落 8. 伊人如夢 9. 之子于歸 10. 卷珠簾 11. 青云志 12.素顏 13. 不送貼 14.花雅禪 15.東風引 16.玉佛傳燈 17.木棉 18. 放開那三國 19. 春宴 20.時光不忘
參考文章:
http://blog.csdn.net/sinat_26917383/article/details/51620019