词云
做过数据分析的应该对词云这个概念不会陌生,词云以云图的方式将词(一般指tag)的频率信息很好的呈现出来。下面是来自百度百科的定义。
“词云”这个概念由美国西北大学新闻学副教授、新媒体专业主任里奇·戈登(Rich Gordon)于近日提出。戈登做过编辑、记者,曾担任迈阿密先驱报(Miami Herald)新媒体版的主任。他一直很关注网络内容发布的最新形式——即那些只有互联网可以采用而报纸、广播、电视等其它媒体都望尘莫及的传播方式。通常,这些最新的、最适合网络的传播方式,也是最好的传播方式。 因此,“词云”就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
今天浏览网页的时候看到一个基于R语言的词云包,学些了一番,下面以阿里旅行的全局搜sug数据演示其使用过程。
数据准备
阿里旅行的全局搜索框如下,当用户输入query的时候,搜索框会实时提示相关的信息,这些信息被称为sug。例如,当输入“北京”这个query时,下面提示的列表就是北京相关的sug。
这些数据在云梯上以日志的形式存在的,所以首先出需要将sug信息从日志中抽取日志。下面是抽取sug数据的sql代码,为了方便演示,将出现频率频率小于10且sug长度大于40的数据过滤掉了。
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封装的一个R包,使用HTML5的canvas绘制。浏览器的可视化具有动态和交互效果,相对于曾经的R包worldcoud,最牛逼的是wordcloud2还支持任意形状的词云绘制。
安装过程非常简单,只需要本地有R环境即可,
install.packages("devtools")
devtools:install_github("lchiffon/wordcloud2")
library(wordcloud2)
将上面的sug数据导入到R中,第一列是sug,第二列是sug出现的次数。然后在R环境中运行下面的代码即可。效果如图。
library(wordcloud2)
wordcloud2(df_sug) -- df_sug即为导入到R中的sug数据
比较有意思的这个包支持任意形状的词云,这样很容易适应自己的品牌和业务场景,下面的是以大象的轮廓为图片展示的效果图。更多内容情参考wordcloud2的github。