在 Analytics Cloud 里根據業務數據繪制詞云(Word Cloud)
詞云(WordCloud)的概念,據網絡上搜索到的資料,最早由美國一位新聞學專業的副教授提出,對文本中出現頻率較高的關鍵詞予以視覺上的突出,一般采取“出現頻次越高,關鍵詞渲染尺寸越大”的規則。由這些尺寸不一的關鍵詞形成類似云狀的彩色圖形,能幫助瀏覽者一眼掃過圖形,就能領略該詞云背后文本的主旨。
比如周杰倫《雙截棍》歌詞的詞云如下:
其中出現頻率排前三位的詞高亮如下:
詞云除了廣泛應用在互聯網前端外,在SAP領域也能發揮其優勢。比如Jerry在文章 SAP Analytics Cloud和SAP Cloud for Customer的集成 里提到,最近我們做的一個項目,通過微信小程序收集用戶和SAP Conversation AI的聊天記錄,然后使用詞云顯示出這些聊天記錄里的關鍵詞。
起初Jerry在Github找了一些生成詞云的開源工具,有javaScript也有Python實現:
https://www.npmjs.com/package/tag-cloud
https://github.com/amueller/word_cloud
后來了解到SAP Analytics Cloud自身就支持使用R的開發包wordclound生成詞云:
https://www.sapanalytics.cloud/resources-r-packages/
所以我就想嘗試著用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 <- BestRunJerry
P
r
o
d
u
c
t
:讀取模型
B
e
s
t
R
u
n
J
e
r
r
y
的
P
r
o
d
u
c
t
數據,存儲到變量
w
o
r
d
s
里;
(
3
)
f
r
e
q
u
e
n
c
y
<
?
B
e
s
t
R
u
n
J
e
r
r
y
Product:讀取模型BestRunJerry的Product數據,存儲到變量words里; (3) frequency <- BestRunJerry
Product:讀取模型BestRunJerry的Product數據,存儲到變量words里;(3)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格式返回給瀏覽器:
下一步Jerry會研究如何將文本格式的聊天記錄里的關鍵詞提取出來,以詞云的方式顯示在SAP Analytics Cloud里,這也是我目前做的項目需要實現的需求,敬請期待。
javaScript Node.js 大數據
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。