(1、2.貴州師范大學(xué)大數(shù)據(jù)與計算機科學(xué)學(xué)院,貴州 貴陽550001)
現(xiàn)階段,人工智能和機器學(xué)習正在改變當下業(yè)務(wù)形態(tài),特別是隨著深度學(xué)習革命的興起,其系統(tǒng)化實現(xiàn)將引領(lǐng)數(shù)據(jù)驅(qū)動的計算智能在各領(lǐng)域爆發(fā)[1-3]。數(shù)據(jù)分析能力將逐漸成為商業(yè)游戲規(guī)則的核心競爭力。而針對當前大多數(shù)領(lǐng)域的數(shù)據(jù)分析而言,其數(shù)據(jù)往往停留在一些易獲取、易量化、可度量的傳統(tǒng)數(shù)值數(shù)據(jù)分析階段,數(shù)據(jù)驅(qū)動智能還遠遠沒有體現(xiàn)。特別是針對文本信息,其作為人類自然語言的載體,信息處理一直是智能化的瓶頸問題。
中文信息的預(yù)處理是一項繁雜的工作,近年來,隨著自然語言處理技術(shù)的發(fā)展,作為一種處理海量非結(jié)構(gòu)化文本的前沿技術(shù),其為大量的社會科學(xué)如傳播學(xué)[4]、社會學(xué)[5]等發(fā)展帶來了新的機遇。針對大量的非結(jié)構(gòu)化文本數(shù)據(jù),開源的數(shù)據(jù)分析平臺,解決了一臺計算機無法進行存儲、無法在要求時間內(nèi)進行處理的關(guān)鍵問題。Hadoop[6]作為一個開源的分布式系統(tǒng),因其實現(xiàn)了云計算和分布式云存儲,近年來得到廣泛的開發(fā)應(yīng)用。圍繞大數(shù)據(jù)存儲、大數(shù)據(jù)分析及管理,Hadoop形成了自身的大數(shù)據(jù)生態(tài)。文章結(jié)合Hadoop開源分布式計算框架,嵌入IKAnalyzer中文分詞模塊進行了中文分詞及詞頻統(tǒng)計分析,結(jié)合Spring boot框架及Node.js技術(shù),搭建了一個基于Web的中文分詞及詞頻分析統(tǒng)計平臺。與此同時,研究利用下載的金庸小說文本語料及貴州極貧鄉(xiāng)鎮(zhèn)教育調(diào)研收集的文檔語料進行了相關(guān)數(shù)據(jù)分析實踐。
Hadoop繼承并改進了Google的MapReduce編程框架[7],可以把應(yīng)用程序處理成眾多小塊,讓集群節(jié)點并行進行處理。Hadoop分布式計算基礎(chǔ)架構(gòu)由分布式文件系統(tǒng)(HDFS, Hadoop Distributed File System)和MapReduce編程模塊兩部分組成。HDFS部署在成本較低的PC上,它以流式訪問模式訪問數(shù)據(jù),能夠大大的提高數(shù)據(jù)吞吐量以提高系統(tǒng)整體的效率。它為MapReduce計算框架提供了基礎(chǔ)數(shù)據(jù)支撐,一個HDFS分布式文件管理系統(tǒng)包括一個NameNode節(jié)點和多個DataNode節(jié)點,NameNode節(jié)點即為文件管理系統(tǒng)的 “管理者”,主要負責管理文件系統(tǒng)的命名空間、存儲塊的復(fù)制和集群配置信息,DataNode節(jié)點是文件存儲的基礎(chǔ)單元,主要負責將文件塊存儲至本地文件系統(tǒng)并周期性地發(fā)送所有存儲的文件塊的信息給NameNode節(jié)點。MapReduce為并行計算框架,此系統(tǒng)中完成對中文信息的分詞及統(tǒng)計。
結(jié)合應(yīng)用及現(xiàn)有資源,系統(tǒng)基于同一局域網(wǎng)下三臺CentOS系統(tǒng)的虛擬機進行三個節(jié)點的Hadoop分布式集群搭建,三臺虛擬機主機分別為:HadoopAdmin(192.168.160.81)、HadoopPart01(192.168.160.82)、HadoopPart02(192.168.160.83),其中HadoopAdmin主機作為名稱節(jié)點,主要負責管理整個HDFS文件系統(tǒng),同時也作為數(shù)據(jù)節(jié)點,另外兩臺主機作為數(shù)據(jù)節(jié)點,主要負責保存文件中的數(shù)據(jù),HadoopPart01 作為SecondaryNameNode節(jié)點,HadoopPart02 作為ResourceManager服務(wù)器。本研究中構(gòu)建的HDFS體系集群結(jié)構(gòu)如圖1所示[8]。
圖1 HDFS體系結(jié)構(gòu)
為快速進行應(yīng)用開發(fā),系統(tǒng)選取Spring Boot作為系統(tǒng)框架[9],其為2013年推出的一款全新的Java Spring框架,目的在于解決用戶在Spring開發(fā)過程中需要進行大量繁雜配置的問題,使得開發(fā)人員能夠從復(fù)雜配置中解脫出來專注于程序開發(fā)。Spring Boot框架對現(xiàn)在主流的Maven構(gòu)建工具也提供了非常好的支持。因此,系統(tǒng)選取該框架作為系統(tǒng)開發(fā)的工具。
與此同時,選取了開源的Java中文分析包IKAnalyzer作為中文分詞及詞頻統(tǒng)計的工具包[10]。IKAnalyzer以開源項目Lucene為應(yīng)用主體的,結(jié)合詞典分詞和文法分析算法實施分詞。本文研究中采用的是IKAnalyzer2012_u6版本,在2012_u6版本中,其實現(xiàn)了分詞歧義排除算法,采用正向迭代最細粒度切分算法,支持細粒度分詞模式和智能分詞模式。
例如:“交管局正在治理解放大道路面結(jié)冰問題”
細粒度分詞模式對應(yīng)分詞結(jié)果為:交管局 | 交管 | 管局 | 正在 | 治理 | 理解 | 解放 | 放大 | 大道 | 道路 | 路面 | 結(jié)冰 | 問題
智能分詞模式對應(yīng)分詞結(jié)果為:交管局 | 正在 | 治理 | 解放 | 大道 | 路面 | 結(jié)冰 | 問題
系統(tǒng)在普通的環(huán)境中具有160萬字/秒的高速處理能力。
為了使得系統(tǒng)有一個友好而靈活的UI呈現(xiàn),系統(tǒng)采用了node.js技術(shù),選取了Vue.js構(gòu)建數(shù)據(jù)驅(qū)動的Web界面框架。利用iView組件及百度提供的Echarts實施前端設(shè)計及數(shù)據(jù)可視化呈現(xiàn)[11]。
Vue.js具有組件化開發(fā)思想,數(shù)據(jù)雙向綁定等優(yōu)點。利用組件化進行開發(fā),能體現(xiàn)出高內(nèi)聚低耦合的特性,并且組件化能夠?qū)TML、CSS、JavaScript前端開發(fā)語言集成到一個文件中,非常便于前端開發(fā)人員編寫、維護前端項目。各組件之間的數(shù)據(jù)、邏輯方法等互不干擾,非常利于開發(fā)人員定位解決問題。雙向數(shù)據(jù)綁定即是視圖層顯示數(shù)據(jù)與數(shù)據(jù)模型之間的綁定,當視圖層顯示數(shù)據(jù)發(fā)生改變時,其對應(yīng)的數(shù)據(jù)模型也發(fā)生改變,同樣的,當數(shù)據(jù)模型發(fā)生改變時,其對應(yīng)的視圖層顯示數(shù)據(jù)也會發(fā)生相應(yīng)的改變,這樣大大降低了前端開發(fā)人員的工作量。
系統(tǒng)搭建了友好的應(yīng)用界面,以便用戶能在Hadoop平臺實施應(yīng)用,研究實踐了從文檔收集、文檔預(yù)處理、分布式計算、詞頻分析、可視化呈現(xiàn)的初步流程實踐。
基于Hadoop分布式計算框架為大規(guī)模文本分析提供了基礎(chǔ)保障,嵌入IKAnalyzer中文分詞器進行中文文本切割,借助Hadoop自帶的交換Key-Value功能實現(xiàn)按詞頻降序排序功能。結(jié)合Web系統(tǒng)服務(wù)應(yīng)用開發(fā),用戶可通過訪問前端Web頁面實現(xiàn)用戶注冊,文件上載,文本分析,結(jié)果可視化等文本分析服務(wù)。
系統(tǒng)整體框架如圖2所示?,F(xiàn)階段實現(xiàn)的基礎(chǔ)功能如下:
系統(tǒng)搭建了Web應(yīng)用,用戶管理模塊可完成用戶信息注冊,登錄,查看和修改等功能,以便管理用戶為注冊用戶提供文本分析服務(wù);
系統(tǒng)實施注冊用戶驗證登陸后提供服務(wù)模式,用戶填入用戶名和密碼進行登錄,用戶可選擇記住密碼,若選擇記住密碼,登錄成功后系統(tǒng)將自動記住該用戶賬號和密碼,下次登錄時不用再輸入賬號密碼信息,若驗證通過則跳轉(zhuǎn)至系統(tǒng)首頁,否則頁面不做跳轉(zhuǎn)。
用戶登入系統(tǒng)進入首頁后,可將鼠標放置到用戶頭像處進行用戶信息查看,點擊“修改密碼”圖標進行密碼修改,點擊“退出系統(tǒng)”圖標登出系統(tǒng),點擊“上傳文件”按鈕進行待分詞文本文件上傳,點擊“開始分詞”按鈕調(diào)用算法進行中文分詞及詞頻統(tǒng)計操作,點擊“查看統(tǒng)計圖”按鈕進行分詞結(jié)果查看。
系統(tǒng)可進行服務(wù)端口配置,文件上載大小配置,為注冊用戶提供計算文檔的上載接口;在文件上傳成功后,便將文本文件重命名為text.input作為備用文件。
圖2 系統(tǒng)模塊
分詞是中文信息處理一個很難回避的基礎(chǔ)問題,文本分詞、關(guān)鍵詞提取、詞頻統(tǒng)計都是自然語言處理基礎(chǔ)性任務(wù),西方字母文字語言,如英語可利用單詞之間的空格作為自然分界符。中文信息是表意文字,缺乏形態(tài)變化,語義和語法規(guī)則進行字或詞切分存在固有的技術(shù)難點和障礙,所以,中文文本分詞被廣泛研究。常見的分詞工具有LTP,ICTCLAS,Jieba分詞,THULAC等,考慮基于Java開源平臺搭建Web應(yīng)用,研究采用開源的IKAnalyzer工具包,其中的IKSegmenter將文本內(nèi)容進行智能切分,并配置停用詞表將中文分詞常用停用詞進行過濾。
當中文文本數(shù)據(jù)量非常大時,基于Hadoop分布式系統(tǒng)進行并行運算,在MapReduce階段完成對大量文本數(shù)據(jù)的分詞與詞頻統(tǒng)計任務(wù),從而提高了文本分析系統(tǒng)的運行效率。
關(guān)鍵詞是文本分析的關(guān)鍵,其往往是文本摘要,主題呈現(xiàn)的關(guān)鍵,系統(tǒng)初步進行分詞詞頻,借助數(shù)據(jù)詞典,改進TF-IDF,如論文統(tǒng)計中考慮TF所在標題或摘要中的權(quán)重。TextRank等即可實現(xiàn)初步需求。系統(tǒng)給更進一步的主題分析提供了接口
系統(tǒng)利用node.js環(huán)境構(gòu)建Web前端服務(wù),通過安裝npm構(gòu)建Vue項目,通過npm包管理工具下載和安裝iView組件庫、vuex管理工具、axios和echarts。借助可視化圖表庫echarts完成文本統(tǒng)計結(jié)果的可視化呈現(xiàn)。
當前,系統(tǒng)集群計算主要是利用Mapreduce進行分詞及詞頻統(tǒng)計,Map借助IKAnalyzer中文分詞器的IKSegmenter將文本內(nèi)容進行智能切分模式的切分,并配置停用詞表進行文本濾掉。Reduce將Map產(chǎn)生的輸出結(jié)果作為輸入數(shù)據(jù)進行切分好的詞語的詞頻統(tǒng)計,最終以鍵值對的方式輸出,關(guān)鍵詞為鍵,詞頻為值。Reduce按照鍵來排序,因中文關(guān)鍵詞為鍵,所以當分詞和詞頻統(tǒng)計任務(wù)結(jié)束后先將輸出的結(jié)果文件保存至臨時文件夾temporaryData下,然后將臨時文件夾下的結(jié)果文件作為按詞頻降序排序任務(wù)的輸入文件繼續(xù)創(chuàng)建并執(zhí)行Job,此任務(wù)借助由Hadoop庫提供的InverseMapper類完成,該類將鍵值對數(shù)據(jù)中的鍵和值進行交換,交換后詞頻為鍵詞名為值,Hadoop會根據(jù)鍵值對中的值即詞頻進行降序排序,然后將結(jié)果文件輸出至指定目錄。
平臺實施文本分析的初步策略為:
1. 提供用戶管理,系統(tǒng)登錄平臺,傳輸所需要處理的文檔進行文本轉(zhuǎn)換等預(yù)處理操作。
2. 首先進行數(shù)據(jù)預(yù)處理,提取出數(shù)據(jù)集中所有的中文文本信息,將提取出的信息以UTF-8編碼格式整合至txt文本中,然后將待分詞txt文本上傳至Hadoop平臺的HDFS分布式文件系統(tǒng)上。
3. 后端程序創(chuàng)建并提交任務(wù)至Hadoop平臺,以上傳的待分詞文本為輸入數(shù)據(jù),經(jīng)過分詞,詞頻統(tǒng)計和按詞頻降序排序步驟將結(jié)果輸出至HDFS文件系統(tǒng)上。
4.實施文本分析任務(wù),將計算結(jié)果處理后進行顯示與數(shù)據(jù)可視化處理。
數(shù)據(jù)實驗語料來源之一為網(wǎng)絡(luò)下載的金庸小說集文本文件。與此同時,現(xiàn)實中大量的文本信息并非標準化文本文件,本文實驗語料之二來源于其他項目研究中獲取的貴州省20個極貧鄉(xiāng)鎮(zhèn)基礎(chǔ)教育辦公調(diào)研收集的1237份(約1G)基層文檔數(shù)據(jù)。借助Python文本數(shù)據(jù)處理的便利性,如工具包Pdfminer等構(gòu)建了文本預(yù)處理模塊,完成了pdf、doc、docx等文件的預(yù)處理及數(shù)據(jù)去噪工作。金庸武俠語料文本文件可直接作為text.input進行上載,基層教育文檔則需進行批量預(yù)處理轉(zhuǎn)存后作為處理文檔進行上載。如由于Word不同版本,要考慮壓縮文件,不同后綴.doc及.docx的批量統(tǒng)一轉(zhuǎn)換,以及文檔遍歷進行內(nèi)容的格式轉(zhuǎn)換。如圖3所示。
圖3 文檔預(yù)處理
由于Web應(yīng)用采用了Vue.js構(gòu)建的數(shù)據(jù)驅(qū)動Web框架,頁面顯示可由數(shù)據(jù)進行動態(tài)驅(qū)動,借助百度開源Echarts中可視化應(yīng)用,可以提供友好的可視化界面呈現(xiàn)。
語料一分析時長為33.371s,分析結(jié)果顯示,幾大英雄人名占主導(dǎo)地位,如郭靖、黃蓉、歐陽鋒和洪七公為出現(xiàn)頻次最多的四位,在文中出現(xiàn)次數(shù)分別為4993次、3644次、1167次和1059次,而“武功”中以“掌”為重點。
語料二分析時長為32.015s。計算得到基層教育調(diào)研文本中詞頻前十五名詞語在文本中出現(xiàn)次數(shù)差值并不是特別大。排名前三的依次為學(xué)生、教師和學(xué)校,分別出現(xiàn)16469次、14634次和12298次,圖4顯示了收集文檔的高頻關(guān)鍵詞匯??梢姌O貧地區(qū)基礎(chǔ)教育文檔數(shù)據(jù)反映學(xué)生、教師、學(xué)校三者主體地位不言而喻。而排名靠前的教學(xué)、活動、教育、工作、學(xué)習、課和培訓(xùn),說明基層教育辦公文檔核心內(nèi)容主要圍繞教學(xué)活動開展及發(fā)展。總體文檔顯示整體基層教育仍然不斷在夯實基礎(chǔ)上下功夫,相信教育才是我省精準扶貧的長效機制。
圖4 高頻關(guān)鍵詞統(tǒng)計結(jié)果
結(jié)合詞云圖分析等文本可視化技術(shù),系統(tǒng)能更直觀對信息文本進行直觀呈現(xiàn)。而相信引入更精細文本分析是大數(shù)據(jù)和智能計算的一個關(guān)鍵。
綜上所述,多學(xué)科融合,數(shù)據(jù)實證研究的興起,給文本計算提供了很多應(yīng)用場景,也給計算機應(yīng)用的集成提供了契機。本文的工作及研究具有很好的應(yīng)用價值和現(xiàn)實實踐意義,具體表現(xiàn)在:
自然語言處理是人工智能皇冠上的寶石,毫無疑問,文本是最便捷和廣泛的語言信息載體,日益增長的海量數(shù)據(jù)中,大量存在非結(jié)構(gòu)化文本數(shù)據(jù)。因此,基于Hadoop構(gòu)建一個文本分析系統(tǒng)具有很好的現(xiàn)實意義,而文本分詞和詞頻統(tǒng)計是文本分析中最基礎(chǔ)和重要的環(huán)節(jié),借助MapReduce并行計算模型實現(xiàn)分布式、并行運算可大大提升計算效率,增強文本處理的能力。
整合了文檔預(yù)處理及中文分詞和詞頻統(tǒng)計,可視化呈現(xiàn),為中文信息處理提供了一個基礎(chǔ)的信息處理流程的Web應(yīng)用,借助Spring Boot進行系統(tǒng)開發(fā),并實施基于node.js的數(shù)據(jù)驅(qū)動UI前端設(shè)計,為數(shù)據(jù)驅(qū)動的Web應(yīng)用提供了一個很好的案例實踐。
在現(xiàn)階段實踐的基礎(chǔ)上,還有以下兩個方面的工作需做更進一步的探索:
1.集群規(guī)模及效率
本系統(tǒng)基于三臺CentOS系統(tǒng)的虛擬機進行三個節(jié)點的Hadoop分布式集群搭建,集群處理數(shù)據(jù)能力有限,在今后研究中,集群節(jié)點擴大,集群性能優(yōu)化,集群運行效率及穩(wěn)定性等方面還有待于結(jié)合理論做進一步實踐。
2.中文信息表示及分析
由于中文信息缺乏形態(tài)變換,語言具有模糊性,歧義性等特點,且其形態(tài)在語素、詞、短語、句子、段落、篇章整體的切分及對應(yīng)的語義變換上存在固有的不確定性。因此,系統(tǒng)在后續(xù)的數(shù)據(jù)處理、語義表示及數(shù)據(jù)呈現(xiàn)上將進行更多的文本分析探索和實踐,相關(guān)研究將做進一步的系統(tǒng)集成。從語言和領(lǐng)域知識角度探討語義關(guān)系將需要進一步研究[12-13]。
當前大規(guī)模語言預(yù)訓(xùn)練模型如BERT, ERNIE,XLNet等得到了廣泛的關(guān)注和應(yīng)用,與此同時,隨著自然語言處理技術(shù)的發(fā)展和行業(yè)融合,結(jié)合領(lǐng)域知識,文本挖掘?qū)楦黝I(lǐng)域數(shù)據(jù)處理帶來更多新的發(fā)展機遇和挑戰(zhàn)[14-15]。