R包之wordcloud2

词云

做过数据分析的应该对词云这个概念不会陌生,词云以云图的方式将词(一般指tag)的频率信息很好的呈现出来。下面是来自百度百科的定义。

“词云”这个概念由美国西北大学新闻学副教授、新媒体专业主任里奇·戈登(Rich Gordon)于近日提出。戈登做过编辑、记者,曾担任迈阿密先驱报(Miami Herald)新媒体版的主任。他一直很关注网络内容发布的最新形式——即那些只有互联网可以采用而报纸、广播、电视等其它媒体都望尘莫及的传播方式。通常,这些最新的、最适合网络的传播方式,也是最好的传播方式。 因此,“词云”就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。

今天浏览网页的时候看到一个基于R语言的词云包,学些了一番,下面以阿里旅行的全局搜sug数据演示其使用过程。

数据准备

阿里旅行的全局搜索框如下,当用户输入query的时候,搜索框会实时提示相关的信息,这些信息被称为sug。例如,当输入“北京”这个query时,下面提示的列表就是北京相关的sug。

1_pic

这些数据在云梯上以日志的形式存在的,所以首先出需要将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数据
screenshot

比较有意思的这个包支持任意形状的词云,这样很容易适应自己的品牌和业务场景,下面的是以大象的轮廓为图片展示的效果图。更多内容情参考wordcloud2的github

screenshot

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • //我所经历的大数据平台发展史(三):互联网时代 • 上篇http://www.infoq.com/cn/arti...
    葡萄喃喃呓语阅读 51,311评论 10 200
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,914评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,242评论 25 708
  • 五月的天,没有想象中的那般明媚清爽,时冷时热地天气成了随机播放的形式。刚才还万里无云,转眼就倾盆大雨,眼看交班时间...
    静华2016阅读 540评论 2 4
  • 今天中午,芳草在海燕家给我们煮饭吃,送别淘金。饭后格子来接我去正果,到老王的农庄欢度教师节。林师父也来了,帮我们看...
    超级傻妞阅读 144评论 0 0