吳龍峰
摘要:針對短文本的文本分類出現(xiàn)的特征維度高和數(shù)據(jù)稀疏性的問題,本文提出了一種結(jié)合神經(jīng)網(wǎng)絡(luò)語言模型word2vec和文檔主題模型LDA的文本特征表示模型,并使用表示矩陣模型,矩陣模型不僅可以有效地表示單詞的語義特征,還可以表達(dá)上下文特征,增強(qiáng)模型的特征表達(dá)能力。將特征矩陣輸入卷積神經(jīng)網(wǎng)絡(luò)(CNN)進(jìn)行卷積池化,并進(jìn)行文本分類實(shí)驗。
關(guān)鍵詞:文本分類;Word2vec;LDA;CNN
中圖分類號:TP311? ? ?文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)22-0203-02
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
1 引言
近年來,隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,主流社交平臺不斷產(chǎn)生大量的文本信息。其中,短文占據(jù)著很大比例,短文分類作為自然語言處理領(lǐng)域的基本任務(wù),受到研究人員的密切關(guān)注。因此,有效和準(zhǔn)確的文本分類方法對于數(shù)據(jù)挖掘,信息處理和網(wǎng)絡(luò)維護(hù)具有重要意義。文本的特征表示和分類算法是文本分類工作的重要組成部分,它直接影響文本分類效果。傳統(tǒng)的機(jī)器學(xué)習(xí)分類算法包括樸素貝葉斯,支持向量機(jī)(SVM),K近鄰算法等。這些分類算法通常使用人工設(shè)計的特征選擇算法,如TF-IDF,信息增益(IG),卡方統(tǒng)計(CHI)等等。這些特征選擇算法存在諸多問題,比如特征表示不足、容易忽略類別之間的關(guān)系。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)研究領(lǐng)域的熱門話題。卷積神經(jīng)網(wǎng)絡(luò)(CNN)最初應(yīng)用于計算機(jī)視覺領(lǐng)域[1]。目前,CNN在自然語言處理領(lǐng)域也取得了很好的成績,Kim將單詞向量與CNN結(jié)合起來,并將其應(yīng)用于主題分類和語義分析,以取得良好的效果[2]。CNN輸入矩陣僅提取單詞粒度級別的單詞向量矩陣,忽略文本粒度級別的整體語義特征表達(dá),導(dǎo)致文本特征表示的不準(zhǔn)確,影響文本分類的準(zhǔn)確性。本文試圖將word2vec模型與LDA模型相結(jié)合,形成一個新的文本特征表示矩陣,然后傳遞給CNN進(jìn)行文本分類,取得了良好的分類效果。
2 相關(guān)工作
2.1 文本預(yù)處理
文本預(yù)處理的過程一般包括以下步驟:將從互聯(lián)網(wǎng)上爬取的文本數(shù)據(jù)進(jìn)行統(tǒng)一編碼;然后利用分詞程序進(jìn)行將文本切分成一個個單詞[3];最后利用停用詞表去除對文本分類無用的詞語。
2.2 文本表示
文本通常是一種非結(jié)構(gòu)的信息,由文字和符號共同組成。利用計算機(jī)進(jìn)行文本分類時,必須將文本轉(zhuǎn)換成結(jié)構(gòu)化的信息才能被計算機(jī)識別和處理。常用的文本表示模型有空間向量模型、LDA模型等,其中,LDA模型包含單詞、主題和文檔結(jié)構(gòu),通過簡要描述文檔并保留基本特征信息[4]。Word2vec模型可以快速有效地訓(xùn)練單詞向量,訓(xùn)練之后,Word2vec模型可用于將每個單詞映射到向量以表示單詞和單詞之間的關(guān)系。
2.3 文本分類
文本分類模型一般分為兩類:機(jī)器學(xué)習(xí)模型和深度學(xué)習(xí)模型[5]。由于CNN卷積神經(jīng)網(wǎng)絡(luò)模型對文本分類任務(wù)有很好的適應(yīng)性,文本表示特征提取方法的應(yīng)用比較成熟,但很容易導(dǎo)致高維數(shù)據(jù)和不完整的特征表達(dá)。LDA模型提取語義特征并忽略語義特征。Word2vec模型訓(xùn)練單詞矢量模型并忽略語義特征。如果將這兩個表示特征用作CNN的輸入矩陣,則分類效果將令人滿意。
3 Word2vec和LDA組合模型
3.1 構(gòu)建CNN輸入矩陣
(1)訓(xùn)練詞向量
Word2vec主要包含兩個重要的模型,連續(xù)詞袋(CBOW)模型和Skip-gram模型。兩種模型都包括輸入層,隱藏層和輸出層。本文使用Skip-gram模型進(jìn)行訓(xùn)練詞向量,文檔的N維向量表示如下:
[M=M11M12…M1NM21M22…M2N????Mk1Mk2…MkN]? ? ? ? ? ? ? ?(1)
其中:M是數(shù)據(jù)集的任一文檔,[MkN]是詞的權(quán)重。
(2)訓(xùn)練主題向量
LDA模型將文檔視為單詞向量的集合。該過程如下:對于文檔,文檔和主題滿足多項式分布,并且主題和詞匯中的單詞也滿足多項式分布。兩個多項式分別是具有超參數(shù)α和β的Dirichlet先驗分布。因此,文檔d處理流程為:從文檔主題分布θ中提取主題,然后從與提取的主題相對應(yīng)的單詞分布φ中提取單詞,重復(fù)以上步驟,形成包含N個字的文章。完成LDA模型后,數(shù)據(jù)集的任意數(shù)據(jù)的主題分布矩陣如下:
[Z=Z11Z12…Z1NZ21Z22…Z2N????Zk1Zk2…ZkN]? ? ? ? ? ? ? ? ? (2)
其中:[ZMN]是對應(yīng)于文本M的主題概率向量,N是語料庫大小,k是向量維度,并且數(shù)字與單詞向量維度相同。
(3)矢量拼接
改進(jìn)的文本表示方法是疊加通過訓(xùn)練上述兩個模型得到的矩陣,形成一個新的特征矩陣。
[Mnew=M⊕Z=M11M12…M1NM21M22…M2N??…?Mk1Mk2…MkNZl1Zl2…ZlN]? ? ? ? ? ? ? ?(3)
其中:⊕是矢量拼接操作,完成拼接后獲得新的矩陣[Mnew],用于CNN的輸入矩陣。
3.2 卷積神經(jīng)網(wǎng)絡(luò)模型
CNN是一種優(yōu)化的卷積神經(jīng)網(wǎng)絡(luò),核心在于輸入矩陣和不同卷積核之間的卷積運(yùn)算。卷積神經(jīng)網(wǎng)絡(luò)主要由卷積層,池化層和分類層組成。
輸入層是句子中單詞的單詞矢量矩陣。假設(shè)有n個單詞且單詞向量維度是d,則輸入矩陣的大小為n[×]d。在訓(xùn)練模型期間,可以固定或優(yōu)化單詞矢量的值作為參數(shù)。
隱藏層包括卷積層和池化層。卷積本質(zhì)是輸入信號的加權(quán)疊加,它是卷積內(nèi)核(濾波器)的不同大小的文本體積h[×]d(h是卷積內(nèi)核窗口中包含的字?jǐn)?shù),d代表每個單詞的向量維度)。實(shí)驗卷積核設(shè)計為三種尺寸,即3[×]d,4[×]d,5[×]d,CNN卷積運(yùn)算公式如下所示:
[ci=f(W1?Xi:i+h-1+b1)]? ? ? ? ? ? ? ? ? (4)
其中[ci]表示卷積運(yùn)算的結(jié)果,即輸出矩陣和卷積核的點(diǎn)乘以及偏移后的激活輸出。h是窗口大小,[Xi:i+h-1]是輸入的i到i+h-1窗口中的字向量矩陣,[W1]是卷積核或權(quán)重矩陣,[b1]是偏移量,f是激活函數(shù)。在通過卷積獲得特征之后提取特征以簡化網(wǎng)絡(luò)的計算復(fù)雜性,在池化層處壓縮特征。池化操作有兩種類型:平均池和最大池。文本分類通常使用最大池來選擇最重要的信息。池化操作如下:
[c=max{c1,c2…cn-h+1}]? ? ? ? ? ? ? ? ? (5)
其中:[c]是最大合并操作的結(jié)果,并且[ci(i=1,2…,n-h+1}]是卷積操作的結(jié)果。
輸出層將池化層作為輸入,并通過Softmax函數(shù)執(zhí)行分類計算。分類計算公式如下:
[f(x)ρ=11+exp(-ρTx)]? ? ? ? ? ? ? ? ? ?(6)
exp表示以e為基數(shù)的指數(shù)函數(shù),[ρ]是評估參數(shù),該值由最小成本函數(shù)J([ρ])估計。公式如下:
[J(ρ)=i=1My(i)logfρ(x(i))]? ? ? ? ? ? ? ? ?(7)
函數(shù)的返回值是C分量的概率值,并且每個分量對應(yīng)于輸出類別的概率,從而劃分文本的類型信息并完成分類。
4 實(shí)驗
4.1 實(shí)驗環(huán)境和數(shù)據(jù)
實(shí)驗環(huán)境:CPU:I7,內(nèi)存:8G,實(shí)驗編程語言為Python3.6,開發(fā)工具為Pycharm,深度學(xué)習(xí)框架為Tensor flow1.0.0。實(shí)驗數(shù)據(jù)來源于搜狗實(shí)驗室的文本語料庫。包含體育,軍事,旅游,金融,IT,房地產(chǎn),教育,娛樂等八個類別,每個類別選取1000篇文檔共8000篇文檔,將該數(shù)據(jù)集的80%作為訓(xùn)練集,20%作為測試集。數(shù)據(jù)通過十折交叉驗證進(jìn)行驗證。
4.2 實(shí)驗設(shè)置
本文中的數(shù)據(jù)以UTF-8編碼格式統(tǒng)一,用Python調(diào)用Jieba分詞組件進(jìn)行分詞,并使用哈爾濱工業(yè)大學(xué)的停用詞表來停用單詞。創(chuàng)建文本要素表示矩陣并輸入CNN進(jìn)行文本分類。CNN模型參數(shù)的具體設(shè)置如表1所示:
4.3 評估指標(biāo)
對于分類結(jié)果,采用國際公認(rèn)的評估指標(biāo):精確率P,召回率R和F1值。其計算公式如下:
[P=XX+Y]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (8)
[R=XX+Z]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (9)
[F1=2PRP+R]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (10)
其中X表示某種類型的文本被正確識別為類的樣本數(shù),Y表示某種類型的文本被識別為其他類別的樣本數(shù),Z表示其他類別的文本是被確認(rèn)為該類別的樣本數(shù)。為了驗證改進(jìn)的輸入特征矩陣的有效性,將基于word2vec的CNN文本分類方法與本文的實(shí)驗進(jìn)行了比較。 比較精確度P和召回率R和F1值。
實(shí)驗數(shù)據(jù)如表2所示:從表中可以看出,傳統(tǒng)的基于CNN的word2vec文本分類方法的平均準(zhǔn)確度、召回率和F1分別為:0.835、0833和0.834。本文的方法是:0.920、0.922和0.921。相比之下,改進(jìn)的方法具有更好的分類效果,原因在于改進(jìn)的文本表示矩陣具有很強(qiáng)的特征表示能力,更具代表性,可以為文本分類提供更多的類別信息。
5 結(jié)論
本文改進(jìn)的文本分類方法解決了傳統(tǒng)CNN輸入矩陣特征未充分表示并影響文本分類效果的問題。提出了一種基于詞粒度的單詞向量和一種基于語義粒度的特定改進(jìn)方法。單詞矢量矩陣和主題矢量矩陣被疊加以形成可以反映詞性特征和語義特征的新矩陣。卷積神經(jīng)網(wǎng)絡(luò)的輸入矩陣特征使其更好地用于文本表示并提高分類性能。
參考文獻(xiàn):
[1] Luong, M., Pham, H., Manning, C.D.: Effective approaches to attention-based neural machine translation[C]. In: Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing,2015: 1412–1421.
[2] Kim, Y.: Convolutional neural networks for sentence classi?cation[C].The 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), 2014:1746–1751.
[3] 梁喜濤,顧磊.中文分詞與詞性標(biāo)注研究[J].計算機(jī)技術(shù)與發(fā)展,2015,25(2):175-180.
[4]楊萌萌,黃浩,程露紅,等.基于LDA主題模型的短文本分類[J].計算機(jī)工程與設(shè)計,2016,37(12):3371-3377.
[5] 周飛燕,金林鵬,董軍.卷積神經(jīng)網(wǎng)絡(luò)研究綜述[J].計算機(jī)學(xué)報,2017,40(6):1229-1251.
【通聯(lián)編輯:梁書】