詞云
做過(guò)數(shù)據(jù)分析的應(yīng)該對(duì)詞云這個(gè)概念不會(huì)陌生,詞云以云圖的方式將詞(一般指tag)的頻率信息很好的呈現(xiàn)出來(lái)。下面是來(lái)自百度百科的定義。
“詞云”這個(gè)概念由美國(guó)西北大學(xué)新聞學(xué)副教授、新媒體專業(yè)主任里奇·戈登(Rich Gordon)于近日提出。戈登做過(guò)編輯、記者,曾擔(dān)任邁阿密先驅(qū)報(bào)(Miami Herald)新媒體版的主任。他一直很關(guān)注網(wǎng)絡(luò)內(nèi)容發(fā)布的最新形式——即那些只有互聯(lián)網(wǎng)可以采用而報(bào)紙、廣播、電視等其它媒體都望塵莫及的傳播方式。通常,這些最新的、最適合網(wǎng)絡(luò)的傳播方式,也是最好的傳播方式。 因此,“詞云”就是對(duì)網(wǎng)絡(luò)文本中出現(xiàn)頻率較高的“關(guān)鍵詞”予以視覺(jué)上的突出,形成“關(guān)鍵詞云層”或“關(guān)鍵詞渲染”,從而過(guò)濾掉大量的文本信息,使瀏覽網(wǎng)頁(yè)者只要一眼掃過(guò)文本就可以領(lǐng)略文本的主旨。
今天瀏覽網(wǎng)頁(yè)的時(shí)候看到一個(gè)基于R語(yǔ)言的詞云包,學(xué)些了一番,下面以阿里旅行的全局搜sug數(shù)據(jù)演示其使用過(guò)程。
數(shù)據(jù)準(zhǔn)備
阿里旅行的全局搜索框如下,當(dāng)用戶輸入query的時(shí)候,搜索框會(huì)實(shí)時(shí)提示相關(guān)的信息,這些信息被稱為sug。例如,當(dāng)輸入“北京”這個(gè)query時(shí),下面提示的列表就是北京相關(guān)的sug。
這些數(shù)據(jù)在云梯上以日志的形式存在的,所以首先出需要將sug信息從日志中抽取日志。下面是抽取sug數(shù)據(jù)的sql代碼,為了方便演示,將出現(xiàn)頻率頻率小于10且sug長(zhǎng)度大于40的數(shù)據(jù)過(guò)濾掉了。
SELECT tb.sug as sug, tb.ct as ct
FROM (
SELECT ta.sug AS sug
, COUNT(1) AS ct
FROM (
SELECT url_decode(KEYVALUE(args, ',', '=', 'sug')) AS sug
FROM sometable
WHERE ds = '20160702'
AND is_active = '1'
AND arg1 = 'Page_GlobalSearch_Index_Button-Sug'
AND event_id = '2101'
AND app_type = 'trip'
) ta
GROUP BY ta.sug
HAVING COUNT(1) > 10
) tb
where length(tb.sug) <= 40
wordcloud2使用
wordcloud2是基于wordcloud2.js封裝的一個(gè)R包,使用HTML5的canvas繪制。瀏覽器的可視化具有動(dòng)態(tài)和交互效果,相對(duì)于曾經(jīng)的R包worldcoud,最牛逼的是wordcloud2還支持任意形狀的詞云繪制。
安裝過(guò)程非常簡(jiǎn)單,只需要本地有R環(huán)境即可,
install.packages("devtools")
devtools:install_github("lchiffon/wordcloud2")
library(wordcloud2)
將上面的sug數(shù)據(jù)導(dǎo)入到R中,第一列是sug,第二列是sug出現(xiàn)的次數(shù)。然后在R環(huán)境中運(yùn)行下面的代碼即可。效果如圖。
library(wordcloud2)
wordcloud2(df_sug) -- df_sug即為導(dǎo)入到R中的sug數(shù)據(jù)
比較有意思的這個(gè)包支持任意形狀的詞云,這樣很容易適應(yīng)自己的品牌和業(yè)務(wù)場(chǎng)景,下面的是以大象的輪廓為圖片展示的效果圖。更多內(nèi)容情參考wordcloud2的github。