R語言文字探勘&語意分析applying on MOOC-實作
大數據(big data)的技術從大概4、5年前開始被極力鼓吹,到有些各個其他領域開始注重這樣的技術應用,如資料新聞學、客評經濟等等。如果真的要實作資料新聞學,對記者來說的難度不低,畢竟要去抓取大範圍的數據或資料,進一步整理篩選,再來用電腦輔助分析,沒有一點程式語言的底子確實是窒礙難行。但是新聞從業人員說故事的能力也不容被小覷。
一開始筆者是在GitHub上逛到微博的爬蟲程式碼(可點擊這裡),經過一些本地電腦的調整與安裝套件後總算可行了,這樣就解決了資料來源的問題。(如果想研究Facebook呢?可試試Netvizz、或是R裡的Rfacebook套件)
再來就是這麼多的文字資料,我們要如何進行分析,用什麼角度分析?主要參考了陳嘉葳在2014寫的推廣PPT以及chengjunwang對於宋詞的文本分析採取的方法(還有網路上眾多其他資源,基本的Google搜尋可以知道其他人如何解決R語言進行時的編碼問題)。參閱過兩位前輩的方法,可以得知R語言透過套件的指令操作,可以幫我們達成以下幾個目的:
※詞彙頻率
※文字雲
※詞彙重要程度(TF-IDF)
※詞彙彼此間重要程度關聯
※共現詞組
※語意主題多樣性以及視覺化
其中詞彙頻率與文字雲都有現成的網路工具可以完成,如果只是想完成前兩個目的可以不用親自操作到R語言。而TF-IDF是種平衡浮濫字詞如常見的連接詞:「的」、「在」等等的一種計算方式,他的計算可以找出在資料文本裡詞頻不是那麼高,但的確在某個時間範圍或是部分文本裡有出現的特殊詞彙。然後透過TF-IDF計算後的權重,可以再依據R語言裡的dendrogram作圖方式,將權重值相似的cluster在一起,在視覺上可以更直覺清楚資料的群聚效應。
共現詞組(co-occurrence)以往在R語言裡會透過將字詞切割斷詞後後填入矩陣,透過矩陣間關聯度的計算來達到發現與某一字詞關聯性最高,也就是最常一起出現的字詞有哪些,稱為findAssocia函數的使用。但這邊另闢蹊徑使用的是Appriori的關聯分析。再來是LDA裡面Gibbs的取樣方式,在這麼多的文本裡面讓電腦去辨別最佳主題數量為多少,再來決定各個主題應該要呈現的詞彙數量,然後讓這些字詞連成一個線。各個主題有可能會透過共同的字詞而相交,那麼相交的字詞就是這個文本資料裡相對重要性高、使用程度高的字詞。
最後我會利用Google的Word2vec開源套件來辨別文字資料前後期的趨勢變化。這部分屬於機器學習領域的應用實作。話不多說,就開始R語言程式碼的範例。
這個部分是TF-IDF的操作,前兩行指令是將需要用到的套件匯進來(安裝過後,重新開啟工作專案皆要輸入)。第4行是將整理好的文字資料指定到csv。最後一行則是將分析過後的結果寫到指定目錄。
分析過後的結果就是一個EXCEL檔,像是:

再來是這個稱為SVD,奇異值分解的語意分析技術。這個技術可以應用在電腦協助處理的文本分類,若是應用在社群媒體,透過R語言裡ggplot的繪圖套線呈現出分類結果,可以知道第幾號貼文與其他貼文在點狀分布象限圖上距離較遠,那麼較表示這號貼文談論的主題與其他貼文比較不同。若是貼文數量很多,從他們的點狀群聚分布,可以知道這個文本範圍內的資料,談論的主題多樣性高不高。
以下第一張圖是MOOC學院的分析結果,要有其他的文本研究對象,且文本數量相近會比較好知道分析結果:

與第二張圖學堂在線比對可知道學堂在線的語意分布較廣,學堂在線幾乎是無所不聊,回頭去看他貼文內容可以娛樂性也包含了時事新聞:

這部分是依據第一部份TF-IDF的權重值來做dendrogram的圖示。可以注意到的是第20行 removeSparseTerms這個函數,可以在全部資料構成的矩陣中,手動剔除一些權重值較低的字詞,這邊設為0.95出來的圖示適中,文字不會太擁擠。若0.9又會太稀疏,這邊需要依據資料狀況自行判斷。
以下可以看到皮鞭一詞的使用在MOOC學院裡,電腦判別它的重要性程度高,因此在最上方,最下方不重要的是那些網址字符。(dendrogram的圖可以搜尋其他資源,得知如何看圖。應用在巨量文字資料這個方式不是那麼合適,因資料量太多,在視覺化上無法窮盡。)

這個部分是依據關聯規則Apriori來做共現詞組分析。第10行將一些無意義的字詞寫成一個函數,把這些字詞先排除再來做圖示。第22行可以調整支持度(supp),篩選出來的圖示就會不一樣。
以下是圖示結果,可以發現MOOC學院在提到MOOC時會提到果殼網、心理學,以及其他平台業者如:學堂在線(這邊因為簡體字抓回來會先經過word轉成繁體所以呈現「學堂線上」)、FutureLearn:

這部分屬於LDA(隱含狄利克雷分布)的程式碼,沒有變動太多,只修改定義抓取每個主題的前五個字詞,其他是直接從chengjunwang的Blog上抓過來的,而主題數量辨別也可以參考chengjunwang的Blog。應用最常用的Gibbs取樣方式,主題分類結果如下:

以上實作方式如有問題可以留言,善盡個人能力範圍內交流解決,希望可以達到推廣R語言使用的目的。
而Word2vec的實作,請先等待一陣子。近日忙碌呀......