KOL 是指在群眾中廣泛地被人們信任並能引導決策的核心人物,因此如何從複雜的社群網絡中找出並認識 KOL 便成為了非常重要的議題!在這次的演講中我將與大家分享我透過 Python 分析 2020台灣總統大選 3 位候選人 Facebook 粉絲專頁資料的發現。首先我以 igraph 套件展開社群網絡分析(SNA),藉由民眾間的互動行為資料(互動的廣度與強度),找出位在網絡核心的 KOL。並且透過 sklearn 套件的 LDA 分析進行自然語言處理(NLP)的主題分析(Topic Model),剖析 KOL 的留言內容並從中萃取出許多在選舉過程中被廣泛討論的熱門話題。最終我結合了 SNA 與 NLP 的分析結果,並視覺化成二維的分析圖,能夠幫助我們快速了解社群網絡的樣貌以及不同社群討論話題的差異與態度。而各產業、公司也可以依據各自擁有的網絡資料進行 SNA 並對資料進行加值,找出並認識屬於你們的 KOL!
# Python 應用
由於 Python 的優雅、明確、簡單等設計哲學,如今已成為我們在進行網路爬蟲、分析、建模、視覺化等等任務時最首要選擇的程式語言。我透過 Python 開發了 Facebook 的網路爬蟲程式並藉此爬取了 3 位總統候選人公開的粉絲專頁資料後,共爬取了 1,794 則貼文, 5,253,125 則留言與 1,819,293 則回覆。因此以下我將透過 Python 針對這些資料展開 SNA 與 NLP 的分析。
# SNA
在這裡我透過民眾彼此間的留言與回覆資料,並經過簡單的資料清理流程,最終整理出的 Graph Data 共有 379,706 個 node 與 605, 186 個 edge。接著我們就可以透過節點在網絡中的重要性來找出位在網絡核心的 KOL,節點重要性評估指標有相當多種,具體在應用時會隨著不同的分析場景而有不同的選擇,在此我藉由 PageRank 來評估節點的重要性,並藉此找出位在網絡核心的 KOL,接著我進一步透過社群偵測演算法針對這些 KOL 間的互動行為進行分群,幫助我們快速了解 KOL 的群體狀況與行為。分析的結果發現 KOL 可以區分成 5 大群體,除了單純支持 宋 / 韓 / 蔡等3位候選人的群體之外,還發現了兩個穿梭在不同陣營間的社群,在網絡中扮演了溝通的角色。
# NLP
緊接著我透過 KOL 的留言內容進行主題分析嘗試從中萃取出在選舉過程中被廣泛討論的熱門話題。由於留言內容屬於非結構化的文本資料,因此會需要針對資料進行文本特徵的處理流程才能展開分析,包含建構詞典、斷詞、轉換為詞頻矩陣等等。處理後的分析結果發現,KOL 討論的話題相當豐富,包含了國家主權、博士論文、帶職參選...等等都是 KOL 經常討論的話題。藉由這個階段的分析後,我們就成功的對這些非結構化的文本資料進行加值,並且也藉以賦予了留言更豐富的意義。
# 綜合分析
由於這次演講目的是結合 SNA 與 NLP 的分析,嘗試找出並認識位在網絡核心的 KOL。因此在這裡不針對分析結果進行過多政治意義的解讀,而會將焦點放在檢視不同社群的 KOL 感興趣的話題是否存在差異,以及對於不同話題的態度。分析的結果發現不同社群的KOL討論的話題確實存在差異,而討論話題的差異也導致了部分群體能夠位在網絡的核心(能夠吸引不同的民眾與KOL互動),反之也有部分社群討論的話題無法吸引其他社群的民眾互動,因為導致位在網絡中邊陲的位置。