張德成 王 楊 趙傳信 甄 磊 李 昌
(1. 蚌埠醫(yī)學(xué)院公共基礎(chǔ)學(xué)院, 安徽 蚌埠 233000; 2. 安徽師范大學(xué)數(shù)學(xué)計(jì)算機(jī)科學(xué)學(xué)院, 安徽 蕪湖 241000)
在各種智能終端和社交軟件中,用戶可以對(duì)各類事件發(fā)表評(píng)判意見,即用戶評(píng)判。用戶評(píng)判多以不完整的極短文本來表達(dá),決策者需要從大量的極短文本中快速提取出有價(jià)值的信息。通常文本分類方法主要包括聚類詞嵌入法和頻率加權(quán)法。
(1)聚類詞嵌入法。將k-均值算法應(yīng)用到文檔的單詞向量上,以獲得固定大小的集群集合。每個(gè)文本被表示為一個(gè)超級(jí)單詞嵌入包,計(jì)算每個(gè)超級(jí)單詞嵌入在各自文本中的頻率,即可得文本分類結(jié)果[1]。
(2)頻率加權(quán)法。將所缺少的條款計(jì)算在內(nèi),計(jì)算有條款的文本權(quán)重,結(jié)合SVM分類器,得出性能最優(yōu)分類結(jié)果[2]。極短文本的形式具有碎片化、即時(shí)性的特征,運(yùn)用傳統(tǒng)的文本分類方法難以快速提取此類文本中的信息。
在文本分類研究中,貝葉斯理論得到了廣泛應(yīng)用[3-6]。本次研究提出的是一種基于貝葉斯決策的極短文本分類模型。
狹義文本是指書面語言的表現(xiàn)形式,從文學(xué)角度說,通常是具有完整、系統(tǒng)含義的一個(gè)句子或多個(gè)句子的組合。廣義文本是指任何由書寫所固定下來的任何話語。在狹義文本的基礎(chǔ)上,文本長度不超過160個(gè)字符的文本稱作短文本[7],比如通過微博、網(wǎng)易云評(píng)論,中文垃圾短信,垃圾郵件等形成的文本。他們是目前研究文本分類的主要對(duì)象。隨著信息技術(shù)的發(fā)展與生活節(jié)奏的加快,出現(xiàn)了一類用更加簡(jiǎn)潔的文字來描述事物的文本,即極短文本(Extremely Short Text, EST)。
極短文本是指書面語言的表現(xiàn)形式,可能包含某種客觀陳述或者評(píng)價(jià)建議,不一定具有完整、系統(tǒng)含義,由幾個(gè)詞語或者短語組成的文本,句子長度一般不超過15個(gè)字。
極短文本主要來源于互聯(lián)網(wǎng),具有數(shù)量大、噪聲強(qiáng)、內(nèi)容特征極稀疏等特點(diǎn)[8]。生活中諸如共享單車故障的報(bào)錯(cuò)描述、淘寶商品的簡(jiǎn)短評(píng)價(jià)、全民社管上報(bào)案卷等信息都屬于極短文本。有效識(shí)別并對(duì)極短文本進(jìn)行分類,從而快速處理極短文本的內(nèi)容[9],在數(shù)據(jù)應(yīng)用、公司管理、政府決策等方面有著重要的意義。
在分析極短文本時(shí),分詞并選取特征詞對(duì)后續(xù)研究尤為重要。由于文本過短,一般僅可從已知內(nèi)容中提取3到4個(gè)關(guān)鍵詞。如果僅基于這些特征詞建立分類模型,則信息量不足,無法保證分類結(jié)果的精確度。針對(duì)此情況,我們提出一種特征詞增量模型。
下面以社會(huì)垃圾信息管理為例,說明該模型中特征詞的擴(kuò)容。首先,分析社會(huì)管理上報(bào)案卷的極短文本并提取特征詞,記為特征詞組成的特征向量,此處取值較小,一般不超過4;然后,進(jìn)一步分析文本可知,“水上漂浮”“綠化帶”“路面”等詞語描述了垃圾的位置信息,可以將其概括為一個(gè)新的特征詞;以此類推,即得到增量特征向量。在取值大于等于5時(shí),特征向量就具備了較強(qiáng)的代表性。
文本預(yù)處理分4個(gè)步驟進(jìn)行:
(1) 利用Kettle工具對(duì)原始文本清洗并分為3類,即大類序號(hào)、小類序號(hào)和文本;
(2) 存入數(shù)據(jù)庫;
(3) 利用分詞工具—— Jieba分詞,對(duì)第3個(gè)字段的內(nèi)容(即純文本)進(jìn)行分詞;
(4) 根據(jù)詞性將分好的詞每行留下3個(gè)并存入數(shù)據(jù)庫。
Kettle是一款開源ETL工具,可以接收各種類型的數(shù)據(jù)輸入,并以一種指定的格式流出[10]。該工具允許用戶在圖形化的工作環(huán)境下管理來自不同數(shù)據(jù)庫的數(shù)據(jù)。Kettle中有transformation和job 2種腳本文件,其中transformation文件用于完成針對(duì)數(shù)據(jù)的基礎(chǔ)轉(zhuǎn)換,而job文件則可完成對(duì)整個(gè)工作流的控制。
Jieba分詞是一種使用Python語言開發(fā)的中文分詞工具。它的主要特點(diǎn)是:(1)支持精確模式、全模式、搜索引擎模式等3種分詞模式;(2)支持繁體分詞;(3)支持自定義詞典。
Jieba分詞的實(shí)現(xiàn)原理是:(1)基于Trie樹結(jié)構(gòu)實(shí)現(xiàn)高效的詞圖掃描,生成句子中的漢字所有可能成詞情況所構(gòu)成的有向無環(huán)圖(DAG);(2)采用動(dòng)態(tài)規(guī)劃查找最大概率路徑, 找出基于詞頻的最大切分組合;(3)對(duì)于未登錄詞,采用了Viterbi算法和基于漢字成詞能力的HMM模型(隱馬爾可夫模型)[11]。
本次研究將采用Jieba分詞中的精確模式。該模式是Jieba分詞中最基礎(chǔ)和自然的模式,它試圖盡可能精確地劃分語句,因此適合極短文本分析。
運(yùn)用貝葉斯分類方法,對(duì)極短文本的若干特征詞進(jìn)行分類。先確定新文本中關(guān)鍵詞出現(xiàn)在特征詞類中的概率,然后利用貝葉斯概率公式求解后驗(yàn)概率,根據(jù)概率的大小得出分類結(jié)論。
設(shè)S是實(shí)驗(yàn)E的樣本空間,C1,C2,…,Cm為E的1組事件。若
(i)CjCk=?,j≠k,j,k=1,2,…,m;
(ii)C1∪C2∪…∪Cm=S;
則稱C1,C2,…,Cm是樣本空間的一個(gè)劃分。
記B(B1,B2,…,Bm)為特征向量,C1,C2,…,Cn為n個(gè)分類結(jié)果;P(Ci|B),i=1,2,…,n表示待分類文本屬于第i個(gè)分類結(jié)果的概率;P(Bj|Ci),j=1,2,…,m,i=1,2,…,n表示第j個(gè)特征詞屬于第i類的概率。
定理1 設(shè)實(shí)驗(yàn)E的樣本空間為S,C為E的事件,C1,C2,…,Cn是樣本空間S的一個(gè)劃分,且
P(Ci)>0,P(B)>0,i=1,2,…,n
則稱
(1)
為貝葉斯公式。
當(dāng)針對(duì)新文本進(jìn)行分類時(shí),只需要計(jì)算出n個(gè)類別中P(Ci|B)的值,將新的樣本判定到概率值最大的類中。其中,概率P(B)是與類別無關(guān)的常數(shù),再根據(jù)特征向量B(B1,B2,…,Bm)各個(gè)特征詞之間的獨(dú)立性,將式(1)簡(jiǎn)化為:
(2)
在此,規(guī)定N為預(yù)測(cè)的樣本總數(shù),cou(Ci)表示第i個(gè)分類在樣本中的計(jì)數(shù),
(3)
cou(Bij)表示第i個(gè)分類中、第j個(gè)特征詞的個(gè)數(shù),則有:
(4)
計(jì)算出待分類樣本屬于各類別的概率,得出最大的概率:
(5)
判斷最大概率所屬類別,預(yù)測(cè)出待分類樣本歸屬類別。
結(jié)合貝葉斯模型,對(duì)極短文本進(jìn)行分類處理(見圖1)。
圖1 極短文本分類流程
由于某個(gè)特征詞的計(jì)數(shù)值可能是0,因此在設(shè)計(jì)程序時(shí)對(duì)每個(gè)特征詞的計(jì)數(shù)變量作初始化處理:cou(Bij)+1,cou(Ci)+2。 當(dāng)計(jì)算Pi時(shí),最大值的計(jì)算公式由概率轉(zhuǎn)換而來,其值非常小,因此,在程序運(yùn)行中可能出現(xiàn)下溢出問題。對(duì)初始化公式兩邊取自然對(duì)數(shù):
(6)
最終,得到式(7)所示的適合編程且不損失結(jié)果的判斷函數(shù):
(7)
在Python編程環(huán)境下,根據(jù)以上數(shù)學(xué)公式,編寫程序;同時(shí),輸入訓(xùn)練數(shù)據(jù),并將待分類樣本作為預(yù)測(cè)數(shù)據(jù),對(duì)極短文本進(jìn)行預(yù)測(cè),得出實(shí)驗(yàn)結(jié)果。
選取蕪湖市“全民社管”軟件采集的實(shí)際數(shù)據(jù),對(duì)模型的可用性進(jìn)行了進(jìn)一步檢驗(yàn)。所謂“全民社管”,即市民發(fā)現(xiàn)本市的不文明現(xiàn)象、安全隱患、損壞的公共設(shè)施等問題后,通過手機(jī)或終端在網(wǎng)上進(jìn)行爆料,為政府有關(guān)部門提供信息,從而為實(shí)現(xiàn)“共建、共治、共享”的社會(huì)治理格局作出貢獻(xiàn)。運(yùn)用本次模型針對(duì)每條上報(bào)的案卷,判別該案卷所屬類別,以便快速處理。通過該軟件,采集到9 906條極短文本,涉及到6個(gè)部門,每個(gè)部門下面又有若干個(gè)辦事處。
實(shí)驗(yàn)運(yùn)用Python語言進(jìn)行數(shù)據(jù)分析,將數(shù)據(jù)隨機(jī)分為70%的訓(xùn)練集和30%的測(cè)試集,針對(duì)模型的準(zhǔn)確率進(jìn)行了6次預(yù)測(cè)實(shí)驗(yàn)(見圖2)。圖2中,6個(gè)子圖分別代表所預(yù)測(cè)的歸屬,所有數(shù)據(jù)集分成了6個(gè)大類,不包括壞數(shù)據(jù)。在每個(gè)大類中,均有數(shù)目不等的若干個(gè)小類,如第1幅子圖中,即第1個(gè)大類,有9個(gè)小類,6條曲線代表了6次實(shí)驗(yàn),縱坐標(biāo)表示相應(yīng)的準(zhǔn)確率。大類、小類代表處理文本的機(jī)構(gòu)及下屬部門。
圖2 模型預(yù)測(cè)的準(zhǔn)確率
在大量訓(xùn)練樣本的條件下,模型的準(zhǔn)確率較高。對(duì)于某個(gè)大類中的某個(gè)小類,當(dāng)訓(xùn)練樣本不少于800時(shí),模型的準(zhǔn)確率約86%。但有的類別預(yù)測(cè)準(zhǔn)確率極低:一是訓(xùn)練樣本過少,有的僅有2~3條訓(xùn)練樣本;二是個(gè)別數(shù)據(jù)存在歸類分歧,在9 906條數(shù)據(jù)中,有效數(shù)據(jù)為9 896條。完成20次實(shí)驗(yàn)后,模型的準(zhǔn)確率穩(wěn)定在79%左右。
為檢驗(yàn)?zāi)P偷恼`分度,在不改變訓(xùn)練集的前提下,分別選取了預(yù)測(cè)集當(dāng)中的600、1 000、2 000個(gè)數(shù)據(jù)進(jìn)行實(shí)驗(yàn)。在預(yù)測(cè)集逐漸增大的情況下,誤分度有趨近樣本數(shù)的倒數(shù)的趨勢(shì);隨著樣本數(shù)的增大,誤分度在一條水平直線上波動(dòng),該直線略高于樣本數(shù)的倒數(shù)。模型在大規(guī)模數(shù)據(jù)樣本的場(chǎng)景下性能較優(yōu)。