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