Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
JerryWang
Advisor
Advisor
词云(WordCloud)的概念,据网络上搜索到的资料,最早由美国一位新闻学专业的副教授提出,对文本中出现频率较高的关键词予以视觉上的突出,一般采取“出现频次越高,关键词渲染尺寸越大”的规则。由这些尺寸不一的关键词形成类似云状的彩色图形,能帮助浏览者一眼扫过图形,就能领略该词云背后文本的主旨。

比如周杰伦《双截棍》歌词的词云如下:




其中出现频率排前三位的词高亮如下:




词云除了广泛应用在互联网前端外,在SAP领域也能发挥其优势。比如Jerry 曾经做过的一个原型开发项目,通过微信小程序收集用户和 SAP Conversation AI 的聊天记录,然后使用词云显示出这些聊天记录里的关键词。

起初Jerry在Github找了一些生成词云的开源工具,有JavaScript也有Python实现:

后来了解到SAP Analytics Cloud 自身就支持使用R的开发包 wordclound 生成词云:

 




所以我就想尝试着用SAP Analytics Cloud来实现。

要使用SAP Analytics Cloud上的wordcloud的开发包,需要通过配置将其连接到一个可用的R运行环境。R语言是一种编程语言,在统计分析和各种图表展示领域里特别具有优势。

在System配置里,可以选择使用SAP Analytics Cloud集成的R运行环境或者远程连接到一个部署在第三方的R运行环境。




绘制词云的数据源由下面这个csv文件提供:某地区每个超市每个月不同产品的销售数量。我设定的词云绘制规则比较简单,销售量越大(字段QuantitySold)的产品,其产品名称出现在词云中的尺寸越大。






 

上述Excel文件可以从SAP官网下载:

https://www.sapanalytics.cloud/wp-content/uploads/2018/02/BestRun.xlsx

我对其作了大幅简化,上传到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 <- BestRunJerryProduct:读取模型BestRunJerry的Product数据,存储到变量words里; (3) frequency <- BestRunJerryQuantitySold:用产品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/web/packages/wordcloud/wordcloud.pdf




每当我们在SAP Analytics Cloud的R编辑器里点击Execute按钮时,可以在Chrome开发者工具里观测到编辑器发送了一个HTTP请求给R运行环境,该请求包含了当前我们编辑的R脚本和之前插入的R Visualization控件的长和宽。




根据这些输入,SAP Analytics Cloud的R运行环境进行服务器端的词云渲染,再将渲染好的词云内容以png图片文件的base64格式返回给浏览器:




 




2 Comments