:::

不只文字雲,而是文字網路雲 / Word Network Graph

2023-0120-180855.png

好,正式確定了社會網路分析取代文字雲的分析價值。


脈絡 / Context

最近為了分析學生在課堂的討論內容,我感覺到傳統的文字雲的上限。

文字雲終歸只能呈現出詞頻的數量,但是它不能展現出文字之間的脈絡,也就很難讓人瞭解文本中隱含的模式。

https://blog.pulipuli.info/2017/03/jieba-js-online-chinese-analyzer-jieba.html#postcatajieba-js-online-chinese-analyzer-jieba.html0_anchor4

於是我改求助於社會網路分析。

我將斷詞後的詞彙視為節點(node),出現在同一個段落的詞彙視為彼此連結的邊(edge)。詞彙出現的頻率、詞彙與詞彙中連結的頻率,則作為權重設定到節點和邊上。

2023-0120-181410.png

https://js.cytoscape.org/

接著使用Cytoscape.js繪製社會網路分析圖,利用fcose力引導排版來繪製網路圖。結果出乎意外地令人感到滿意。

出現頻率較高的詞彙,因為權重和邊的關係,在力引導排版下很容易出現在網路圖的中間。加上結合權重調整的文字大小,使得出現頻率較高的詞彙更容易被看見。
這樣一來就已經達到了文字雲可以呈現的效果。


社會網路分析 / Social network analysis

2023-0120-181343.png 接著我再為Cytoscape.js加上聚焦功能。當使用者選擇其中一個詞彙時,與該詞彙有所相連的詞彙都會一同標亮。這樣有助於我們想要研究特定詞彙與相關詞彙的關係。但詞彙這麼多,一個一個查看,似乎不是什麼明智之舉。我需要更快的分析工具。 2023-0120-181327.png https://github.com/cytoscape/cytoscape.js-markov-cluster我找到了cytoscape-markov-cluster,一個能適用於Cytoscape.js的Markov Cluster演算法。它似乎原本有上架到npm,但實際上已經被下架。我分析了它的原始碼,調整後結合到自己的專案內,結果令我特別滿意。現在詞彙網路可以將脈絡相近的詞彙分群,找出數量不等的群集。我將群集結果用不同顏色標示,這樣就能明顯看到不同類別的詞彙在整個文本的地位。下面也做了統計表格,讓人更容易整理分群後的結果。整體來說,結果令人非常滿意。美中不足的是,JavaScript可以分析的資料量非常有限。畢竟它只是瀏覽器上運作的小程式。資料量一大,立刻就當機了。不過作為講解概念的工具,可說是非常適合了。2023-0120-181301.png做完的結果請看這裡:https://pulipulichen.github.io/PWA-iClass-Discuss-Analysis/#/


你覺得社會網路分析跟文字探勘結合還可以怎麼用呢?
靈感蒐集中!快快留言吧!