高云龍, 吳 川, 朱 明
(1. 中國科學(xué)院 長春光學(xué)精密機(jī)械與物理研究所, 長春 130033;2. 中國科學(xué)院 航空光學(xué)成像與測量重點(diǎn)實(shí)驗(yàn)室, 長春 130033)
文本挖掘是自然語言處理領(lǐng)域中一項(xiàng)較重要的任務(wù), 涉及機(jī)器翻譯、 智能問答等許多領(lǐng)域[1]. 短文本數(shù)據(jù)反映了個體對生活方式的總結(jié)及社會現(xiàn)象的評論等, 常蘊(yùn)含豐富的普遍規(guī)律. 不同于傳統(tǒng)長文本, 短文本有顯著的特點(diǎn)[2]: 1) 文本長度短; 2) 特征較稀疏; 3) 文本格式不統(tǒng)一. 短文本的特點(diǎn)使其通常不能提供足夠的上下文信息, 從而使許多基于詞頻、 字同現(xiàn)的機(jī)器學(xué)習(xí)模型不能有效地提取短文本特征, 進(jìn)而限制了傳統(tǒng)的機(jī)器學(xué)習(xí)算法在短文本分類問題上的應(yīng)用[3]. 本文將現(xiàn)有的短文本分類算法分為兩類: 基于傳統(tǒng)語義分析的短文本分類算法和基于深度神經(jīng)網(wǎng)絡(luò)的短文本分類算法. 前者常通過外部語義信息庫豐富短文本的特征表示. 在WordNet[4]同義詞數(shù)據(jù)庫中, 每個同義詞集合都表示一個基本的語義概念. Chen等[5]提出了多粒度主題模型用于精確描述短文本, 首先在通用數(shù)據(jù)集中采用LDA(latent dirichlet allocation)算法[6]提取N組主題集T, 再從主題集T中選擇一個子集構(gòu)成多粒度的主題空間, 將短文本的詞特征與主題特征融合成新的短文本特征表示, 最后利用支持向量機(jī)(SVM)分類器獲取較好的分類效果; Sun等[7]提出了一種基于TNG(topic N-gram)的特征擴(kuò)展方法, 首先該方法可同時推斷出詞的分布式表示及每個主題下短語的分布式表示, 并由此構(gòu)建特征擴(kuò)展庫, 然后基于所提取的原始特征, 對短文本的主題趨勢進(jìn)行推理, 并根據(jù)主題趨勢在特征擴(kuò)展庫中選擇相應(yīng)的候選詞匯與短語, 最后將選擇結(jié)果作為短文本數(shù)據(jù)特征的擴(kuò)充, 并通過LDA與SVM算法得到了較好的分類效果; Heap等[8]通過使用通用及專用的詞向量模型豐富由Bag-of-words模型[9]對低頻詞匯所生成的詞向量, 從而提高了多類別短文本的分類精度. 而基于深度神經(jīng)網(wǎng)絡(luò)的分類算法更關(guān)注于解決短文本的分布式表示及特征的無監(jiān)督獲取能力, 在短文本分類問題中取得了較好的效果. 隨著深度學(xué)習(xí)模型在圖像挖掘[10]、 語音識別[11]等領(lǐng)域的廣泛應(yīng)用, 如何利用深度模型處理文本挖掘問題受到廣泛關(guān)注. Kim[12]提出了一個基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)處理句子分類問題的模型, 該模型將句子視為詞的序列, 并利用預(yù)先訓(xùn)練好的詞的分布式表示作為模型輸入, 此外, 還按輸入詞向量的不同將模型分為4種變型, 其中雙道詞向量輸入模型普遍取得了較好的分類效果; Kalchbrenner等[13]提出了一種基于動態(tài)的卷積神經(jīng)網(wǎng)絡(luò)模型DCNN, 并應(yīng)用到句子分類問題中, 在卷積層提出了一種廣義卷積, 可充分保留句子邊緣詞匯的特征信息, 在池化層根據(jù)卷積層節(jié)點(diǎn)的數(shù)量定義一種全局的動態(tài)K-Max策略, 從而動態(tài)地確定池化層保留的特征數(shù)量, DCNN模型可處理變長的語料數(shù)據(jù), 具有較強(qiáng)的泛化能力; Zhang等[14]構(gòu)建了短文本的字符分布式表示模型, 并通過實(shí)驗(yàn)結(jié)果驗(yàn)證了模型的有效性. 基于神經(jīng)網(wǎng)絡(luò)的短文本分類模型通常不需要語言的句法、 語法等先驗(yàn)信息, 因此在不同類型的數(shù)據(jù)集或不同的語言中都表現(xiàn)出了良好的擴(kuò)展性和有效性.
基于此, 本文提出一種基于改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)的短文本分類模型ICNNSTCM. 該模型構(gòu)造了短文本語料多種不同的分布式表示: 1) 字符級特征表示和詞匯級表示, 并作為分類模型ICNNSTCM的雙道輸入, 詞匯級分布式表示同時作為模型的參數(shù)進(jìn)行調(diào)優(yōu); 2) 提取短文本中包含的實(shí)體, 在標(biāo)準(zhǔn)知識庫中檢索實(shí)體對應(yīng)的概念集, 并提出CToST學(xué)習(xí)策略計(jì)算概念與短文本之間的關(guān)聯(lián)強(qiáng)度, 從而構(gòu)成短文本的概念特征表示. 在全連接層增加稀疏自編碼策略, 即通過非監(jiān)督學(xué)習(xí)一個近似恒等的轉(zhuǎn)換函數(shù), 利用稀疏性限制保證網(wǎng)絡(luò)層多數(shù)節(jié)點(diǎn)處于被抑制的狀態(tài), 在降低模型復(fù)雜度的同時提高模型的泛化能力. 本文模型和相關(guān)實(shí)驗(yàn)均基于Python語言及TensorFlow框架實(shí)現(xiàn), 通過與其他幾種短文本分類模型進(jìn)行對比, 實(shí)驗(yàn)結(jié)果表明, ICNNSTCM可更好地提取短文本數(shù)據(jù)的特征, 具有較高的分類精度.
圖1為基于改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)的短文本分類模型ICNNSTCM的框架. 采用不同的學(xué)習(xí)策略分別構(gòu)建短文本的分布式表示, 并作為模型的多通道輸入. 構(gòu)造字符級分布式表示即將短文本視為字符的序列, 從而捕獲短文本的粒子字信息; 詞匯級分布式表示, 即詞向量, 其幾何關(guān)系常作為詞匯間語義關(guān)系的高級抽象; 概念級分布式表示, 利用標(biāo)準(zhǔn)知識庫提取短文本的概念特征, 并以此作為模型先驗(yàn)知識, 豐富語料表征能力的同時提高了模型參數(shù)調(diào)優(yōu)的效率; 通過不同窗口的卷積核與3種分布式表示分別進(jìn)行卷積運(yùn)算, 提取卷積層節(jié)點(diǎn)的數(shù)字特征; 池化層采用K-Max Pooling保留卷積層節(jié)點(diǎn)最大的K個特征, 并合并為一個一維的長特征序列; 在兩個全連接層之間增加稀疏自編碼學(xué)習(xí)策略, 高層特征通過與分類器相連, 從而預(yù)測輸入短文本的類別.
圖1 ICNNSTCM模型結(jié)構(gòu)
通過將輸入短文本視為字符的序列, 并利用該語言下長度為m的字母表Ω對字符進(jìn)行編碼量化, 從而實(shí)現(xiàn)短文本數(shù)據(jù)字符級分布式表示的構(gòu)建. 考慮到字符數(shù)量遠(yuǎn)小于該語言下詞匯的總量, 因此采用字符級分布式表示在一定程度上可降低模型的計(jì)算復(fù)雜度. 基于Bag-of-words編碼方式的思想, 將每個字符視為一個詞匯, 從而得到每個字符的編碼; 對不包含在字母表Ω中的字符, 簡單地將其編碼為零向量. 對于長度為l個字符的短文本, 通過以上處理可得到其維度為l×m的字符分布式表示. 本文使用的字母表Ω包含68個字符: 26個英文小寫字符, 10個數(shù)字字符及32個其他字符.
概念特征分布式表示將短文本視為互相關(guān)聯(lián)的實(shí)體構(gòu)成的集合, 對于集合中的每個實(shí)體, 通過檢索外部標(biāo)準(zhǔn)知識庫, 可獲取其對應(yīng)的概念, 從而更好地實(shí)現(xiàn)分類任務(wù). 例如短文本ST1: “Rihanna is a super star.”, 其中名詞實(shí)體“Rihanna”對應(yīng)的概念為“Singer”, 因此, 分類器更傾向于將ST1歸類為“娛樂”類別中. 此外, 實(shí)體通常對應(yīng)多個不同的概念, 從而具有較大的歧義性. 例如短文本ST2: “She is eating an apple”, 對于名詞實(shí)體“apple”, 可得到概念“Phone”和“Apple”, 顯然對于ST2, “Phone”不是一個正確的概念.
為更好地描述概念與短文本之間的關(guān)聯(lián)強(qiáng)度, 本文提出了CToST學(xué)習(xí)策略. 對元素個數(shù)為m的概念集C={c1,c2,…,cm}, 其對應(yīng)的詞向量可表示為CV∈m×d, 短文本ST對應(yīng)的詞向量表示為ST∈st×d, 其中:d為詞向量維度;st為短文本ST中詞的個數(shù). 則概念ci與短文本ST的關(guān)聯(lián)強(qiáng)度值可表示為
corri=g(W(CVi·ST)T+b),
(1)
其中:g為非線性函數(shù); 參數(shù)W∈st,b∈st.
進(jìn)一步, 為規(guī)范化關(guān)聯(lián)強(qiáng)度值, 本文采用Softmax算子作用于式(1), 最終的關(guān)鍵強(qiáng)度值可表示為
(2)
圖2 稀疏自編碼全連接層
令a(1)=X作為輸入層的激活值, 則在給定第n層的激活值后, 第(n+1)層的激活值可按下式獲得:
z(n+1)=W(n)a(n)+b(n),
(3)
a(n+1)=f(z(n+1)),
(4)
其中f為非線性激活函數(shù).
(5)
(6)
令J(W,b)表示全連接網(wǎng)絡(luò)的目標(biāo)函數(shù), 則增加稀疏性約束后網(wǎng)絡(luò)的優(yōu)化函數(shù)為
(7)
其中s2表示L2層中節(jié)點(diǎn)的個數(shù).
算法1稀疏自編碼算法.
輸入: 池化層輸出特征向量X;
輸出:L2自編碼層參數(shù), 包括權(quán)重矩陣W1、 偏置b1、L2層輸出特征向量a(2);
初始化: 隨機(jī)設(shè)置L2,L3層權(quán)重矩陣W1,W2和偏置b1,b2;
步驟1) 設(shè)迭代次數(shù)iter=0;
步驟2) 根據(jù)式(3)和式(4)計(jì)算L2,L3層激活值a(2),a(3);
步驟3)hW,b(X)=a(3);
步驟4)J(W,b)=‖hW,b(X)-X‖2;
步驟6) 根據(jù)式(6)計(jì)算相對熵;
步驟7) 根據(jù)式(7)計(jì)算Jsparse(W,b);
步驟8) 誤差反向傳播優(yōu)化參數(shù)fine-tuning;
步驟9) iter++;
步驟10) 如果iter<1 000, 則返回步驟2).
本文的模型、 相關(guān)實(shí)驗(yàn)均基于Python語言及TensorFlow框架實(shí)現(xiàn), 并可以同時支持CPU和GPU. 模型參數(shù)的選取: 短文本包含字符的長度l=512, 對于長度超出512個字符的短文本將被丟棄, 字符級分布式表示采用One-Hot編碼; 詞向量采用Word2vec工具, 并基于Python庫Gensim API實(shí)現(xiàn), 詞向量維度值d=200; 非線性函數(shù)g選取Softmax; 卷積核寬度width為3,4,5, 并分別對應(yīng)100個卷積節(jié)點(diǎn); 卷積層及全連接層非線性激活函數(shù)f選取Sigmod; 稀疏性參數(shù)ρ=0.1; 第二個全連接層中節(jié)點(diǎn)的個數(shù)s2=1 024; batch_size=50, 迭代次數(shù)epochs=25; 分類器選擇Softmax模型, 模型訓(xùn)練采用Adam優(yōu)化算法.
實(shí)驗(yàn)采用的標(biāo)準(zhǔn)短文本語料庫均可通過下列開源網(wǎng)站獲得:
1) MRD(http://www.cs.cornell.edu/people/pabo/movie-review-data)影片評論數(shù)據(jù)集, 其中每個句子是用戶對影片的一條評論, 有正、 反面兩種屬性標(biāo)簽;
2) SST(http://nlp.stanford.edu/sentiment/)情感分析數(shù)據(jù)集, 是MRD數(shù)據(jù)集的擴(kuò)展, 共有5種屬性標(biāo)簽, 分別為very positive,positive,neutral,negative,very negative;
3) TREC(http://cogcomp.cs.illinois.edu/Data/QA/QC/)問題屬性分析數(shù)據(jù)集, 問題類別共有6種(about person,location,numeric information,etc), 將問題與類別進(jìn)行匹配;
4) CR(http://www.cs.uic.edu/~liub/FBS/sentiment-analysis.html)顧客意見數(shù)據(jù)集, 是關(guān)于商品正、 反面的二元分類數(shù)據(jù)集.
短文本數(shù)據(jù)集的相關(guān)信息及參數(shù)列于表1, 其中:C為目標(biāo)類別數(shù);L為平均句子長度;N為數(shù)據(jù)集規(guī)模; |V|為詞匯量規(guī)模; Test為測試機(jī)規(guī)模; CV為十折交叉驗(yàn)證拆分?jǐn)?shù)據(jù)集.
表1 數(shù)據(jù)集的參數(shù)
圖3 不同寬度組合對分類精度的影響
卷積層是卷積神經(jīng)網(wǎng)絡(luò)中最重要的結(jié)構(gòu), 通過卷積核與輸入數(shù)據(jù)的局部感受野進(jìn)行卷積運(yùn)算, 提取數(shù)字特征. 卷積核的維度對所提取特征的粒度有影響, 進(jìn)而影響模型的分類精度.
組合不同窗口大小的卷積核, 并在短文本數(shù)據(jù)集上進(jìn)行分類實(shí)驗(yàn), 結(jié)果如圖3所示, 其中: [3]表示卷積核的寬度為3, 即一次卷積過程可覆蓋3個詞匯或者字符; [3,4]表示卷積層含有寬度分別為3,4的卷積核組合; [3,4,5]表示卷積層含有寬度分別為3,4,5的卷積核組合. 由圖3可見, 隨著窗口組合數(shù)的增加, 卷積層可提取不同粒度的特征, 從而學(xué)習(xí)到更豐富的抽象特征表示, 進(jìn)而提高了分類精度. 當(dāng)固定窗口組合數(shù)時, 通過改變卷積核的寬度進(jìn)行實(shí)驗(yàn), 結(jié)果列于表2. 由表2可見, 在卷積核寬度組合為[3,4,5]時, 模型取得了分類精度的極值.
表2 卷積核寬度對分類精度的影響
ICNNSTCM模型池化層采用K-Max策略選擇卷積層較大的K個特征值, 并保留其相對順序.K值選取對模型泛化誤差的影響如圖4所示. 由圖4可見,K值選取通常與短文本數(shù)據(jù)的平均長度有關(guān), 對平均詞匯長度為18,19,20的數(shù)據(jù)集SST,CR,MRD,K=15時模型取得的泛化誤差值最低, 而對平均詞匯長度為10的數(shù)據(jù)集TREC,K=8時模型的分類精度最高. 當(dāng)K值較低時, 模型通常不能保留足夠多的特征信息, 而當(dāng)K值較大時, 模型通常表現(xiàn)為過擬合狀態(tài), 從而均導(dǎo)致模型的分類精度較低.
圖4 K值對模型泛化誤差的影響
本文在短文本字符級和詞匯級分布式表示的基礎(chǔ)上提出了概念級分布式表示, 利用外部標(biāo)準(zhǔn)知識庫為模型增加先驗(yàn)知識, 進(jìn)一步豐富了短文本的特征描述. ICNNSTCM模型在不同通道輸入情況下的分類精度結(jié)果列于表3. ICNNSTCM-2模型采用2通道輸入, 即短文本的字符級和詞匯級分布式表示, 而ICNNSTCM-3模型則增加了短文本的概念特征分布式表示. 由表3可見, 利用先驗(yàn)知識為模型增加概念特征表示, 在一定程度上可提高分類的精確度; 此外, 采用不同的外部標(biāo)準(zhǔn)知識庫對模型分類精度也存在一定的影響, 知識庫YAGO[15]整體上優(yōu)于FreeBase[16].
表3 概念分布式表示對模型分類精度的影響
圖5 稀疏性對模型分類精度的影響
好的特征具有可區(qū)分性[17]. 為進(jìn)一步減少特征表示的冗余信息, 通過在ICNNSTCM模型自編碼層增加稀疏性約束, 以獲取輸入數(shù)據(jù)的低維空間表示. 本文對稀疏性概念解釋為: 對于激活函數(shù)Sigmod, 神經(jīng)元輸出接近1時表示該節(jié)點(diǎn)被激活, 輸出接近0時表示該節(jié)點(diǎn)被抑制, 且同一時刻自編碼層大部分節(jié)點(diǎn)處于被抑制狀態(tài). 稀疏性對模型的影響如圖5所示. 由圖5可見, 稀疏特征表示的有效性通常與短文本數(shù)據(jù)的平均長度有關(guān), 對平均詞匯長度為18,19,20的數(shù)據(jù)集SST,CR,MRD, 增加稀疏自編碼層可有效降低分類模型的泛化誤差, 而對平均詞匯長度為10的數(shù)據(jù)集TREC, 由于語料的冗余特征較少, 增加稀疏約束導(dǎo)致模型無法提取足夠多的特征信息, 從而降低了模型的分類精度.
ICNNSTCM模型采用字符級、 詞匯級和概念級分布式表示作為多通道輸入, 針對詞匯級分布式表示, 即詞向量是否作為模型優(yōu)化的參數(shù), 本文將模型分為如下兩種變型.
1) ICNNSTCM-static: 詞向量在模型訓(xùn)練過程中保持不變, 不作為模型調(diào)參的變量;
2) ICNNSTCM-dynamic: 詞向量在模型訓(xùn)練過程中進(jìn)行調(diào)優(yōu), 作為模型調(diào)參的變量.
在MRD數(shù)據(jù)集上, 本文統(tǒng)計(jì)了兩種變型在迭代調(diào)優(yōu)中泛化誤差下降及分類精度上升的收斂過程, 分別如圖6和圖7所示. 由圖6和圖7可見: 由于ICNNSTCM-static在訓(xùn)練過程中優(yōu)化的參數(shù)較少, 故其收斂速度高于ICNNSTCM-dynamic模型. 此外, 通過使用與分類問題相關(guān)的數(shù)據(jù)集對詞向量進(jìn)行調(diào)優(yōu), 可提高詞向量對數(shù)據(jù)集的表征能力, 從而提高了模型的分類精度.
圖6 兩種模型泛化誤差下降速度對比
圖7 兩種模型分類精度上升速度對比
下面通過與幾種成熟的短文本分類模型進(jìn)行對比, 驗(yàn)證ICNNSTCM模型的有效性, 實(shí)驗(yàn)結(jié)果列于表4. ICNNSTCM采用多通道分布式輸入, 充分提取不同粒度的數(shù)字特征, 并通過使用與分類問題相關(guān)的數(shù)據(jù)集對詞向量進(jìn)行調(diào)優(yōu), 提高了對于輸入短文本的表示能力. 此外, 在全連接層增加的稀疏自編碼策略, 在利用近似恒等關(guān)系保持特征有效性不變的情況下, 通過組合所提取的特征, 進(jìn)一步學(xué)習(xí)輸入數(shù)據(jù)內(nèi)部的相關(guān)性. 實(shí)驗(yàn)結(jié)果表明, ICNNSTCM模型在數(shù)據(jù)集上均取得了較理想的分類效果, 實(shí)驗(yàn)結(jié)果優(yōu)于目前已有的大部分分類模型.
表4 ICNNSTCM模型與其他模型性能對比
綜上所述, 本文提出了一種ICNNSTCM模型, 并通過相關(guān)實(shí)驗(yàn)證明了ICNNSTCM模型在處理短文本分類問題上的有效性.