词云(WordCloud)的概念,据网络上搜索到的资料,最先由美国一位新闻学专业的副教授提出,对文本中出现频率较高的关键词予以视觉上的突出,通常采起“出现频次越高,关键词渲染尺寸越大”的规则。由这些尺寸不一的关键词造成相似云状的彩色图形,能帮助浏览者一眼扫过图形,就能领略该词云背后文本的主旨。前端
好比周杰伦《双截棍》歌词的词云以下:git
其中出现频率排前三位的词高亮以下:github
词云除了普遍应用在互联网前端外,在SAP领域也能发挥其优点。好比Jerry在文章 SAP Analytics Cloud和SAP Cloud for Customer的集成 里提到,最近咱们作的一个项目,经过微信小程序收集用户和SAP Conversation AI的聊天记录,而后使用词云显示出这些聊天记录里的关键词。web
起初Jerry在Github找了一些生成词云的开源工具,有JavaScript也有Python实现:npm
https://www.npmjs.com/package...
https://github.com/amueller/w...编程
后来了解到SAP Analytics Cloud自身就支持使用R的开发包wordclound生成词云:小程序
https://www.sapanalytics.clou...微信小程序
因此我就想尝试着用SAP Analytics Cloud来实现。浏览器
要使用SAP Analytics Cloud上的wordcloud的开发包,须要经过配置将其链接到一个可用的R运行环境。R语言是一种编程语言,在统计分析和各类图表展现领域里特别具备优点。服务器
在System配置里,能够选择使用SAP Analytics Cloud集成的R运行环境或者远程链接到一个部署在第三方的R运行环境。
绘制词云的数据源由下面这个csv文件提供:某地区每一个超市每月不一样产品的销售数量。我设定的词云绘制规则比较简单,销售量越大(字段QuantitySold)的产品,其产品名称出如今词云中的尺寸越大。
上述Excel文件能够从SAP官网下载:
https://www.sapanalytics.clou...
我对其做了大幅简化,上传到SAP Analytics Cloud以后基于该文件建立一个新的Model取名BestRunJerry, 将QuantitySold列设置成Measure.
将Product的Description设置为ProductName,这样稍后用R绘制出的词云,显示的是可读性更好的Product Name,而不是产品ID.
基于建好的Model建立一个新的Story,插入一个新的R Visualization,这是一个UI控件,负责显示渲染的词云:
将Product设置为Rows的一个成员:
而QuantitySold设置成Columns的一员,这样接下来的R编辑器里,能够经过访问Product和QuantitySold两个变量,获取模型里存储的对应数据。
如今开始添加R脚本:
四行脚本搞定:
点击Execute,看到执行效果:
最后生成的效果图:
4行R脚本的含义:
(1) library(wordcloud):加载SAP Analytics Cloud的R开发包wordcloud;
(2) words <- BestRunJerry$Product:读取模型BestRunJerry的Product数据,存储到变量words里;
(3) frequency <- BestRunJerry$QuantitySold:用产品QuantitySold字段的值模拟关键词出现的频率,存储到变量frequency里;
(4) wordcloud(words, frequency, scale = c(3, 1), rot.per=0.2, colors=brewer.pal(8, "Dark2"))
调用wordcloud开发包,生成词云。输入参数的含义参考该开发包的文档:
https://cran.r-project.org/we...
每当咱们在SAP Analytics Cloud的R编辑器里点击Execute按钮时,能够在Chrome开发者工具里观测到编辑器发送了一个HTTP请求给R运行环境,该请求包含了当前咱们编辑的R脚本和以前插入的R Visualization控件的长和宽。
根据这些输入,SAP Analytics Cloud的R运行环境进行服务器端的词云渲染,再将渲染好的词云内容以png图片文件的base64格式返回给浏览器:
下一步Jerry会研究如何将文本格式的聊天记录里的关键词提取出来,以词云的方式显示在SAP Analytics Cloud里,这也是我目前作的项目须要实现的需求,敬请期待。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":