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