艾比布拉·阿不拉,馬 振,哈力旦·阿布都熱依木,吳冰冰
(新疆大學(xué) 電氣工程學(xué)院,新疆 烏魯木齊 830047)
對(duì)于文本分類,已有不少這方面的研究,但是利用大數(shù)據(jù)的處理方式來進(jìn)行維吾爾文文本分類的研究還處于起步階段。文獻(xiàn)[1]提供了一種使用字符級(jí)卷積網(wǎng)絡(luò)進(jìn)行文本分類;文獻(xiàn)[2]設(shè)計(jì)了一種適用于文本聚類任務(wù)的特征選擇算法,提出詞條屬性的概念;文獻(xiàn)[3]提出一種基于TextRank算法和互信息相似度的維吾爾文關(guān)鍵詞提取及文本分類方法;文獻(xiàn)[4]提出一種基于深度置信網(wǎng)絡(luò)的維吾爾文短信文本分類模型;文獻(xiàn)[5]使用了一種自動(dòng)的維吾爾文組詞算法dme-TS,該算法用一種組合統(tǒng)計(jì)量(dme)來度量文本中相鄰單詞之間的關(guān)聯(lián)程度。
本文結(jié)合Hadoop分布式計(jì)算的特點(diǎn)與改進(jìn)維吾爾文組詞算法(DM算法)的優(yōu)點(diǎn),運(yùn)用MapReduce并行計(jì)算模型,然后再利用Hadoop生態(tài)環(huán)境下的子項(xiàng)目Mahout來對(duì)組詞后的文本進(jìn)行維吾爾文文本分類計(jì)算,其中包括文本的序列化、向量化、訓(xùn)練貝葉斯分類器和分類器的測(cè)試,設(shè)計(jì)了基于Hadoop和改進(jìn)維吾爾文組詞算法的文本分類模型,并用實(shí)驗(yàn)進(jìn)行驗(yàn)證。該模型在維吾爾文檢索系統(tǒng)、輿情分析等方面具有重要的意義。
(1)
(2)
其中,T是閾值,當(dāng)互信息值大于T時(shí),即單詞a,b之間是強(qiáng)關(guān)聯(lián),則表示單詞a,b應(yīng)該連在一起,作為一個(gè)特征單元。反之,則應(yīng)該斷開。
(3)
其中,P(c|b)、P(b|a)分別是b關(guān)于c和a關(guān)于b的條件概率。σ2(P(c|b))、σ2(P(b|a))是各自的方差。單詞b與單詞a和c的關(guān)系如式(4)
(4)
dts(x,y)=ta,y(x)-tx,b(y)
(5)
當(dāng)dts(x,y)>α(α為閾值),則單詞x,y之間是強(qiáng)關(guān)聯(lián),應(yīng)該連在一起。
由于互信息反應(yīng)的是兩個(gè)單詞之間的靜態(tài)結(jié)合力,t-測(cè)試差考慮了上下文關(guān)系。這兩種算法在一定程度形成優(yōu)劣互補(bǔ),因此可以將其線性組合成一種新的DM算法,首先考慮到MI和dts之間的變化范圍不一樣,因此現(xiàn)將其標(biāo)準(zhǔn)化,即分別算出其各自對(duì)應(yīng)的標(biāo)準(zhǔn)差MI*(x,y)、dts*(x,y),然后按照一定的權(quán)重比值將其疊加在一起,如式(6)
dm(x,y)=α×MI*(x,y)+β×dts*(x,y)
(6)
α,β分別為互信息和t-測(cè)試差的權(quán)值系數(shù)。
在對(duì)維吾爾文文本進(jìn)行預(yù)處理的時(shí)候,由于標(biāo)點(diǎn)符號(hào)兩邊的單詞不可能組成在一起,因此在組詞前必須先保留標(biāo)點(diǎn)符號(hào),在組詞結(jié)束后在對(duì)其去除。本文首先對(duì)文本按標(biāo)點(diǎn)進(jìn)行分段處理,然后在每一段分別進(jìn)行組詞。
從文本集中讀取一個(gè)文本,按標(biāo)點(diǎn)符號(hào)將其才分成長(zhǎng)度不同的m個(gè)字符串;然后依次計(jì)算出每個(gè)詞串中的每個(gè)單詞之間的dm值,并與給定的閾值進(jìn)行比較。假定dm給定的閾值為T,如果dm(x,y)>T,則單詞x和y之間應(yīng)該組合在一起。反之,如果dm(x,y) 圖1 語(yǔ)義劃分實(shí)例 由于實(shí)驗(yàn)平臺(tái)是以Hadoop為基礎(chǔ)的,采用的是分布式文件處理系統(tǒng)HDFS,它處理的任務(wù)是用MapReduce進(jìn)行編寫程序的。因此特征抽取的并行化處理是必不可少的過程[6]。 并行DM算法在Hadoop平臺(tái)上的實(shí)現(xiàn)步驟如下: 步驟1 初始化Hadoop任務(wù)。用戶向ResourceMana-ger提交Job。 步驟2 讀取并復(fù)制源數(shù)據(jù)。將源數(shù)據(jù)復(fù)制到Hadoop的分布式文件系統(tǒng)HDFS中,并合理分配到各個(gè)子節(jié)點(diǎn)。 步驟3 MapReduce過程。實(shí)現(xiàn)各個(gè)子節(jié)點(diǎn)映射數(shù)據(jù)集并處理。 特征抽取一共分為4個(gè)MapReduce任務(wù),執(zhí)行流程如圖2所示。 圖2 MapReduce任務(wù)執(zhí)行流程 第一個(gè)MapReduce的任務(wù)是統(tǒng)計(jì)每類包含的文檔數(shù),文檔總數(shù),每個(gè)單詞出現(xiàn)的頻數(shù); 第二個(gè)MapReduce的任務(wù)是計(jì)算相鄰兩個(gè)單詞的互信息,輸出鍵值對(duì)<(x,y),MI(x,y)>; 第三個(gè)MapReduce的任務(wù)是計(jì)算相鄰兩個(gè)單詞的t-測(cè)試差,輸出鍵值對(duì)<(x,y),dts(x,y)>; 第四個(gè)MapReduce的任務(wù)是計(jì)算dm(x,y),并根據(jù)其值組詞輸出。 組合式MapReduce計(jì)算作業(yè)每個(gè)子任務(wù)都需要提供獨(dú)立的作業(yè)配置代碼。MapReduce1的輸出路徑outpath1將作為MapReduce2和MapReduce3的輸入路徑。MapReduce4任務(wù)必須要等MapReduce2和MapReduce3執(zhí)行完成后才能執(zhí)行,其組合式MapReduce作業(yè)的配置和執(zhí)行代碼如下: //子任務(wù)mapreduce1配置執(zhí)行代碼 Configuration jobconf 1=new Configuration(); job1=new Job(jobconf1,“Job1”); job1.setJarByClass(jobclass1); … … //job1的其它設(shè)置 FileInputFormat.addInputPath(job1,input1); FileOutputFormat.setOutputPath(job1,outpath1); job1.waitForCompletion(true); //子任務(wù)mapreduce2配置執(zhí)行代碼 Configuration jobconf2=new Configuration(); job2=new Job(jobconf2,“Job2”); FileInputFormat.addInputPath(job2,outpath1); … … //job2的其它設(shè)置 //子任務(wù)mapreduce3配置執(zhí)行代碼 Configuration jobconf3=new Configuration(); job3=new Job(jobconf3,“Job3”); FileInputFormat.addInputPath(job3,outpath1); … … //job3的其它設(shè)置 //子任務(wù)mapreduce4配置執(zhí)行代碼 Configuration jobconf4=new Configuration(); job3=new Job(jobconf4,“Job4”); FileInputFormat.addInputPath(job4,outpath1); … … //job4的其它設(shè)置 //設(shè)置job4與job2的依賴關(guān)系,job4將等待job2執(zhí)行完畢 Job4.addDependingJob(job2); //設(shè)置job4與job3的依賴關(guān)系,job4將等待job3執(zhí)行完畢 Job4.addDependingJob(job3); //設(shè)置JobControl, 把job任務(wù)加入到j(luò)obControl JobControl JC=new JobControl(“sumJob”); … JC.run(); 基于Hadoop和DM算法的文本分類模型的方法包括文本序列化、改進(jìn)維吾爾文組詞算法、文件向量化、樸素貝葉斯分類算法,最終實(shí)現(xiàn)維吾爾文文本的準(zhǔn)確分類。具體步驟如下: 步驟1 采用MapReduce計(jì)算模型將文本數(shù)據(jù)轉(zhuǎn)化為Hadoop能夠處理的SequenceFile文件。每一行的key值為每個(gè)文件夾的名字加上文件夾下面的文件名,value值為文件夾下面的文件內(nèi)容[7]。 步驟2 利用MapReduce計(jì)算模型對(duì)序列化文件進(jìn)行DM算法組詞計(jì)算。 步驟3 把經(jīng)過DM算法處理過的序列文件轉(zhuǎn)化為向量文件。具體實(shí)現(xiàn)如下: (1)對(duì)序列化文件進(jìn)行單詞計(jì)數(shù)、單詞編碼。 (2)創(chuàng)建并合并局部變量。 (3)對(duì)局部變量采用TF-IDF算法計(jì)算得到新的局部變量。TF-IDF算法如下: 在一份給定的文件里,詞頻(term frequency,TF)指的是某一個(gè)給定的詞語(yǔ)在該文件中出現(xiàn)的頻率,如式(7)所示 (7) 其中,ni,j是該詞ti在文件dj中出現(xiàn)的次數(shù),而分母是在文件dj中所有字詞的出現(xiàn)次數(shù)之和。 逆向文件頻率(inverse document frequency,IDF)是一個(gè)詞語(yǔ)普遍重要性的度量。如式(8)所示 (8) 其中,|D|是語(yǔ)料庫(kù)的總數(shù),|{j:ti∈dj}|包含詞語(yǔ)ti的文件數(shù)目。 某一特定文件內(nèi)的高詞語(yǔ)頻率,以及該詞語(yǔ)在整個(gè)文件集合中的低文件頻率,可以產(chǎn)生出高權(quán)重的TF-IDF,如式(9)所示 tfidfi,j=tfi,j×idfi (9) (4)創(chuàng)建局部變量并合并。 序列化文件到向量文件這步可分為8個(gè)小步驟,在Mahout中是由7個(gè)Job和1個(gè)reduce操作并分別執(zhí)行的[8]。文本轉(zhuǎn)化為向量流程如圖3所示。 步驟4 利用Hadoop的子項(xiàng)目Mahout[9]訓(xùn)練樸素貝葉斯,生成分類器模型。 分類器生成之后,接著就是對(duì)分類器進(jìn)行測(cè)試?;贖adoop和DM算法的文本分類模型的整體處理流程如圖4所示。 數(shù)據(jù)源來源于新疆維吾爾自治區(qū)人民政府網(wǎng)(http://www.xinjiang.gov.cn/)和Ulinix(http://www.ulinix.com/)等主要維吾爾文門戶網(wǎng)站。實(shí)驗(yàn)數(shù)據(jù)描述見表1。 圖3 文本轉(zhuǎn)化為向量流程 圖4 維吾爾文文本分類流程 樣本1訓(xùn)練集樣本1測(cè)試集樣本2訓(xùn)練集樣本2測(cè)試集社會(huì)事實(shí)12826318100生活與健康1403724090體育922429997文學(xué)1272835092 本次實(shí)驗(yàn)的實(shí)驗(yàn)環(huán)境為,采用的3臺(tái)計(jì)算機(jī),一個(gè)namenode,兩個(gè)做datanode,操作系統(tǒng)為CentOS 7.0,Hadoop版本為2.7.0,Java安裝的版本為jdk1.8.0-20,Mahout版本為0.9。Maven版本為3.2.3。 文本分類中對(duì)性能評(píng)估[10]的指標(biāo)有很多,其中常用的有查全率(recall,R)、查準(zhǔn)率(precision,P)和F1值等。P=分類正確的文本數(shù)目/所有的分類文本數(shù)目,R=分類正確的文本數(shù)目/應(yīng)有的文本數(shù)目 實(shí)驗(yàn)1:DM算法閾值T的確定:將DM算法的閾值T設(shè)置為不同的數(shù),得到相應(yīng)的分類結(jié)果,實(shí)驗(yàn)結(jié)果如圖5所示。在此,設(shè)置11為閾值T進(jìn)行后續(xù)的實(shí)驗(yàn)。 圖5 不同閾值下的維吾爾文文本分類的準(zhǔn)確度 實(shí)驗(yàn)2:本文改進(jìn)算法與互信息算法、t-測(cè)試差算法的比較。實(shí)驗(yàn)采用樣本1和樣本2數(shù)據(jù),特征維數(shù)從1000到6000之間取值,對(duì)查準(zhǔn)率(P)和平均值F1的值的變化進(jìn)行了統(tǒng)計(jì)和對(duì)比,如圖6、圖7所示。 圖6 改進(jìn)算法與互信息、t-測(cè)試差的分類準(zhǔn)確率 圖7 改進(jìn)算法與互信息、t-測(cè)試差的F1值 實(shí)驗(yàn)結(jié)果表明: (1)由圖5可知,當(dāng)樣本數(shù)目確定的時(shí)候,維吾爾文文本分類的準(zhǔn)確率跟組詞時(shí)所取的閾值T有關(guān),當(dāng)T≥11時(shí),分類的準(zhǔn)確率趨于穩(wěn)定。 (2)由圖6可知,當(dāng)特征維數(shù)小于100時(shí),3種算法的準(zhǔn)確性都是呈逐漸上升趨勢(shì)。當(dāng)特征維數(shù)大于100小于250時(shí),3種算法都是緩慢下趨勢(shì)??傮w來看,本文改進(jìn)算法優(yōu)于互信息算法和t-測(cè)試差算法。 (3)由圖7可知,從F1值方面來看,本文改進(jìn)算法也在分類性能方面也都明顯高于互信息算法和t-測(cè)試差算法。2 DM算法的并行化
3 基于Hadoop和DM算法的文本分類模型
4 實(shí)驗(yàn)及結(jié)果分析
4.1 數(shù)據(jù)集
4.2 分類及性能評(píng)估
5 結(jié)束語(yǔ)