本書介紹文字探勘 (text mining)應用在社會科學內容分析上的方法與技巧。文字探勘是資料科學(data sciences)大數據分析的產物,在電腦程式語言的協助下,處理大量的文字資料,利用各種演算法,找尋文字表達的內在規則。不過,要強調的是本書重點不在介紹方法,而是培養實際分析、解決問題的能力。我們採取的方法是舉實例,實際操作。這包括:一、程式寫作的能力,含必要的模組(演算法)的應用;二、對文本資料的瞭解與掌握;三、問題意識,文字探勘的方法可以幫助我們回答什麼問題?檢討 預期與結果有什麼落差? 本書嘗試結合這三個要素,提供完整的文本資料、介紹基本分析方法,思考解決問題的方法。透過豐富的範例,期待讀者在讀完後,對文字探勘有完整的認識,並能著手處理自己的問題。任何研究方法都有其限制,研究者的經驗、洞見,仍是成敗最重要的關鍵。
本書使用的文本資料是人民日報,從一九四六至今高達一百六十萬篇文章。人民日報雖然被視為政治宣傳,報導浮誇,很難是真實,但它在瞭解中共高層的一些想法或基本信念,卻有不可或缺的重要性。因此,本書有一個核心議題:中共的統治意識形態,我們想透過人民日報,瞭解中共統治者怎麼看待世界,這要從瞭解人民日報所要傳達的訊息開始。
本書分為十二章,各章的主題,說明如下:
第一章、環境設定。本書使用的程式語言是 python, 這可以從網路上免費下載取得。程式編輯器是 jupyter notebook,這是一個可以即時編譯執行的平台,使用方便,特別適合初學者。使用者可以選擇在網路上執行,然這要有 google 帳號,配合 google drive,在 colab 平台、網路環境下執行。本書就採取這個模式,主要是 google drive 可以放置、分享大量資料。如果不用 colab ,則所有的檔案、程式都要下載至個人電腦,單機亦可操作。本章會介紹環境設定問題,以及 jupyter notebook 的基本操作技巧。
第二章、人民日報的文本預處理。人民日報文本量巨大,必須將其預處理,我們以年為單位,將資料整理至 excel 檔,一年一個檔案,除了原始文本外,還有屬性欄位,如日期、作者、版次、檔名等,還有經過斷詞處理的原始文本 (token)、詞性(pos),重要關鍵字詞 (tfidf, textrank)。這些都置於 google drive,後面各章的學習包就是直接讀取這些預訓練的資料。本章學習包詳細說明人民日報文章預訓練的過程,將來讀者若是有自己的文本,亦可以探取類似的方式,先行整理資料。
第三章、統計人民日報各年度的字詞數、句數、段落數與文章數。關鍵字詞出現的頻率是另一個重點,這可以看出人民日報整體的發展趨勢。
第四章、如果要進行深入的分析,第一步要先篩選合適的文本。本章撰寫一個函數,可以透過設定條件:年度、關鍵字、隨機選取的比例, 篩選出需要的文本,儲存成 dataframe 格式。這個函數,在後面各章中會不斷使用。
第五章到第十章,主要介紹文字探勘的基本方法,包括:斷詞、詞對、字詞網絡、文字雲、詞頻計算、自然語言處理、降維、主群分析、分群,情感分析、分類等。不過,本章重點在以豐富的範例,說明方法的應用,同時觀察中共政權演變。每個範例都有實際的意義,例如:觀察中共建政以來的政治鬥爭,對西方的態度,施政重點,對爭議性的政治人物的情感態度、探討在中共語境下,民主、自由等概念的意涵(潛在語意)、中共對台政策的變化等。
第十一、十二章,探討文字探勘進階的方法,主要是機械學習與類神經網絡在分類上的應用。我們會以兩岸政治人物的評價為例說明之。
第十三、十四章,綜合運用前面各章介紹的方法,進行主題分析。對程式沒有興趣的讀者,可以直接閱讀這兩章,跳過程式的部分,也可以對中共政權有概觀的認識,當然這是人民日報顯現出來的中共,與真正的中共想必有落差。主題如下:
- 道德治國:一個充滿道德術語的國度;
- 革命與鬥爭:社會生存進步的動力;
- 權力集中與集體領導;
- 大躍進時期的虛假新聞與非正常死亡;
- 後習近平時代;
- 民族主義與民族復興;
- 儒學復興與中華文化;
- 人民日報的台灣印象與政策。
各章基本上嘗試結合兩個目的,一是文字探勘的方法,二是具體議題的分析。各章的核心部分稱為「學習包」,亦即範例程式,以實例探討相關議題。學習包以 jupyter notebook 撰寫,讀者打開程式,按 Contl -Enter 鍵,就可以逐步執行,立即看到執行的結果。程式旁有清楚的註解,說明指令的意義,與程式的目的。讀者可以自行改變程式參數,替換關鍵字,或者直接修改程式,滿足自己研究上的需要。善用學習包,從摹仿開始,懂得意義之後,再改寫擴充,可以節省大量的時間,不失為有效的學習方法。
各章有「背景說明」與「研究發現」,前者說明本章要處理的議題,使用到的文字探勘方法,以及學習包的內容,提醒注意事項;「研究發現」則討論學習包的分析結果。每一個學習包都匯集數個分析案例,從這些案例,讀者可以學習文字探勘的各種技巧,並實作。
為了使用的便利,我們開發一個模組 people ,匯集常用的函數,如果善加利用,可以大量減少寫程式的時間。在學習包中, 如果函數第一次使用,我們會說明其結構與語法,第二次使用就直接呼叫函數,以節省時間。讀者可直接叫出 people 模組,參考其內容,撰寫自己的模組,增加使用的便利性。
不過,學習包是範例程式,讀者必須懂得python 的基本語法,才能看得懂。對於那些沒程式基礎的讀者,不妨先從附錄一開始。附錄一是 python 語法介紹,網路上也有許多 phthon 的學習資源,有了基本概念之後,就可以進入學習包,掌握學習的內容。
附錄二介紹網路爬蟲的基本方法。本書使用的人民日報文本,主要來自網路。因此,網路爬蟲成為文字探勘很重要的技術。然而這並不容易,網路的結構不同,不同時期同個網站,很可能不同,因為網頁會經常改版,因此要配合調整處理。學習包介紹網路爬蟲的基本技巧,以幾個常見的網站為例,包括人民日報、政府的官方網站、論壇。通常不涉及機密或商業利益的網站比較容易下載,如果網站有保護裝置,讀者就不容易自行下載了。
附錄三是提供有關中共的一些背景資料,例如大事記、歷年政治鬥爭、人物經歷等,主要是整理自網路上的資料,共讀者參考。如果讀者對大陸瞭解不多,這些資訊會很有幫助,建議讀者先快速流覽。
以上說明本書的內容與使用方法,預祝大家學習順利。