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