鄭鵬飛 李菁菁


關鍵詞:文本大數據;R語言;可視化
1引言
在大數據時代,海量文本的積累在各個領域不斷涌現。從人文研究到相關部門決策,從精準醫療到量化金融,從客戶管理到市場營銷,海量文本作為最重要的信息載體之一,處處發揮著舉足輕重的作用。各種語言都擁有獨特的語言模式,并時常伴隨著各式各樣的“噪音”。對這樣的文本(尤其是中文文本)進行處理,面臨著極大的技術挑戰[1]。
與英文文本相比,中文文本數據處理起來尤為困難,主要因為英文文本由獨立的單詞構成,可以很方便地進行詞頻統計,而中文漢字單個字符信息量有限,主要通過若干個字符組成的詞語來承載文本含義,因此對其進行詞頻分析時首先要解決斷句的難題。若要準確斷句,則必須先建立一個容量足夠大的“詞庫”以供比對,這對中文文本數據的分析形成了不小的挑戰。
R語言是一種開放式的統計軟件,世界各地的使用者都可以將自己的研究成果在平臺上共享,這為綜合應用各種資源來解決復雜問題提供了可能[2]。
2統計軟件R語言的特征
R語言是一種功能強大的統計軟件,它具有以下幾項基本特征。
(1)開源??梢栽谒木W站及其鏡像中下載任何安裝程序、源代碼、程序包及其源代碼、文檔資料。標準的安裝文件自身就帶有許多模塊和內嵌統計函數,安裝好后可以直接實現許多常用的統計功能[3]。
(2)可編程。作為一個開放的統計編程環境,語法通俗易懂,很容易學會和掌握語言的語法。而且學會之后,我們可以自己編制函數來擴展現有的語言,這也就是為什么它的更新速度比一般統計軟件運行速度快得多的原因。
(3)程序包。只有當一個包被載人時,它的內容才可以被訪問。一些常用、基本的程序包已經被收入在標準安裝文件中,隨著新的統計分析方法的出現,標準安裝文件中所包含的程序包也隨著版本的更新而不斷變化[4]。
(4)互動性。除了圖形輸出是在另外的窗口處,它的輸入/輸出窗口都是在同一個窗口進行的,輸入語法中如果出現錯誤會馬上在窗口中得到提示,對以前輸入過的命令有記憶功能,可以隨時再現、編輯修改,以滿足用戶的需要。
然而,R語言具有一定的學習門檻,初學者往往需要輸入至少一萬行代碼才能入門,而且很多程序包的學習甚至比R語言本身還要復雜(如ggplot2軟件包)[5]。
3基于R的文本大數據分析方法
3.1分析目標
迅速提取一段文本數據的中心思想,并進行可視化展示。
3.2解決思路
步驟1將文本數據轉存為方便R軟件讀取的txt格式。
步驟2將文本數據與特定“詞庫”進行比對和斷句,形成若干個獨立的中文短語。
步驟3剔除上述中文短語中的“白噪音”,如阿拉伯數字、語氣詞、助詞等,保留有用信息。
步驟4對上一步得到的信息進行頻數統計,按降序排列。
步驟5對上一步得到的信息進行適當的可視化。
步驟6對分析結果進行解讀。
3.3主要代碼
install.packages(c(¨Rwordseg¨,¨wordcloud2¨))
代碼注釋:下載并安裝兩個工具包。
library( Rwordseg)
代碼注釋:該工具包主要用于中文文本的斷句,由開發者Jian Li于2019年貢獻,版本0.3.2。
library( wordcloud2)
代碼注釋:該工具包主要用于可視化展示,由開發者Dawei Lang等于2018年貢獻,版本0.2.1。
代碼注釋:將txt格式的某報告文本讀人內存,約3萬5千字。
y<一segmentCN( strwords=contents,analyzer=¨hmm¨,returnType=¨vector¨)
代碼注釋:對上一步讀取的文本內容進行斷句,使之成為一個由孤立中文詞語組成的列表。
y<一unlist(y)
代碼注釋:修改上一步得到的分析結果的數據形式。
y<一y[!
grepl(1 0-9] ',y)]
代碼注釋:去掉文本中的阿拉伯數字,也可根據研究需要去掉更多的內容。
y<一y[ nchar(y》=2]
代碼注釋:去掉文本中的單個漢字,僅保留由兩個或兩個以上的漢字組成的詞語。
table(y)
代碼注釋:對上一步的分析結果進行詞頻統計。
top50<一sort( table(y),decreasing=TRUE)[1:50]
代碼注釋:進行降序排列,取出現次數排名前50的詞匯,也可根據研究需要取更多或更少的內容[6]。
wordcloud2( top50)
代碼注釋:進行可視化展示。默認的可視化形狀為圓形,如果加入shape=“star"或shape=“pentagon”可繪制五角星或五邊形。如果信息太多導致無法完整呈現,可使用size參數縮小圖形尺寸。
3.4結果呈現
按上述流程對某報告正文進行分析,頻次最高的50個詞匯如表1所列;可視化展示如圖2、圖3所示。
圖1和圖2都是用wordcloud2命令繪制的可視化圖形。該圖形完全根據表1的內容進行繪制,該命令形式如下:
如上所示,該命令參數眾多,可以對數據來源、圖形尺寸、網格尺寸、字體、文字粗細、前景顏色、背景顏色、旋轉角度、圖形比例、圖形形狀等多項顯示內容進行調節,為使用者提供了豐富的個性化手段[7]。
3.5結果分析
通過對長達3萬5千字的某報告全文進行上述處理可以看到,出現頻次最多的3個詞分別為“發展”“社會”和“堅持”,分別出現了238次、185次和173次,從數據上再一次證明了“發展才是硬道理”[8]。
4結束語
本文實現了一種基于R語言環境的文本大數據分析方法。與其他文本大數據處理方法相比,本文方法步驟相對簡便、結果呈現直觀、多種參數可調,既能作為一項日常的、批量化的文本數據處理工具,又能作為R語言教學的一個案例,激發學生的學習興趣。