唐善成, 張 雪, 張鏷月, 王瀚博, 陳 明
(西安科技大學(xué)通信與信息工程學(xué)院, 西安 710054)
字詞向量表示是自然語(yǔ)言處理[1]的基礎(chǔ),在表音文字領(lǐng)域,如英文,需用詞向量表示文本;在表義文字領(lǐng)域,如中文,由于每個(gè)字具有特定語(yǔ)義(與英文中的字母不同)[2-3],可以用字向量、詞向量表示文本[4-6]。Mikolov等[7]提出了Word2Vec;Pennington等[8]提出了GloVe在詞向量表示方面取得了較大的進(jìn)展。Word2Vec 的原理是用一個(gè)詞預(yù)測(cè)前后詞,或者用前后詞預(yù)測(cè)當(dāng)前詞,然后利用語(yǔ)言模型來(lái)判斷輸入的樣本是否符合自然語(yǔ)言規(guī)則。GloVe結(jié)合了潛在語(yǔ)義分析(latent semantic analysis,LSA)和Word2Vec的思想,使用語(yǔ)料庫(kù)的全局統(tǒng)計(jì)特征和局部的上下文特征。
以上方法適用于英文,而中文較英文有獨(dú)特特性。漢字起源于象形文字,字形蘊(yùn)含著豐富的語(yǔ)義信息[9-10]。中文字向量表示方法相關(guān)研究有:Su等[11]利用字形學(xué)習(xí)漢字的表現(xiàn)形式,驗(yàn)證了字形特征能夠增強(qiáng)漢字的表示;謝海聞等[12]提出了一種基于膠囊神經(jīng)網(wǎng)絡(luò)的漢字字形表征模型,將漢字拆分為部件并進(jìn)行識(shí)別并生成表征向量,選出部分部件組成向量用于字形的表征;Meng等[13]將漢字作為圖像,利用Tianzige-卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN) 模型提取漢字語(yǔ)義,性能得到提升;蔡子龍等[14]提出了漢字字形融合方法,用部分替代法和輔助學(xué)習(xí)法從字形位圖中提取漢字的字形特征;Wang等[15]提取漢字局部結(jié)構(gòu)特征,整合詞根挖掘的隱式信息,增強(qiáng)了嵌入語(yǔ)義。
以上方法借鑒了英文詞向量表示方法,所需訓(xùn)練數(shù)據(jù)集較龐大,字向量質(zhì)量穩(wěn)定性差[16],沒(méi)有考慮漢字整體字形結(jié)構(gòu)所蘊(yùn)含的語(yǔ)義信息,沒(méi)有利用字典包含的穩(wěn)定字義信息。為了克服現(xiàn)有方法的不足,首先利用中文字形自編碼器生成字形向量,然后融入漢字字義得到字義向量,提出融合中文字形和字義的字向量表示方法GnM2Vec(glyph and meaning to vector),有效解決了傳統(tǒng)字向量表示方法存在的問(wèn)題。
研究路線如圖1所示。字向量表示方法的輸入是繁體字字形圖像,經(jīng)字形自編碼器的編碼器部分處理得到的字形向量來(lái)初步表示相應(yīng)漢字;然后,基于字形向量表示每條字義中的每個(gè)漢字得到基于字形向量的字義向量,通過(guò)字義自編碼器的編碼器部分處理得到融合字形和字義的字向量表示。
圖1 字向量方法研究路線Fig.1 Research route of character vector method
基于卷積自編碼器構(gòu)建字形自編碼器和字義自編碼器。卷積自編碼器由兩部分組成:編碼器和解碼器,以字形自編碼器為例闡述其工作原理。輸入為(96,96,1)維的字形圖像,編碼器的編碼過(guò)程為
z(l)=Cov[a(l-1),w(l),b(l)]
(1)
h(l)=ReLu[z(l)]
(2)
a(l)=MaxPooling[h(l)]
(3)
式中:w(l)和b(l)分別為編碼器的第l層權(quán)重和偏置項(xiàng);Cov(·)為卷積操作;z(l)為第l層編碼后的結(jié)果;h(l)為z(l)經(jīng)過(guò)ReLU激活函數(shù)計(jì)算后的結(jié)果;MaxPooling表示進(jìn)行池化操作,且保留最大值;a(l)為經(jīng)過(guò)h(l)池化后的結(jié)果,也是l層最后的輸出。
假設(shè)編碼器有p層,字形自編碼器解碼器的解碼過(guò)程為
z(p+l)=DCov[a(p+l-1)]
(4)
h(p+l)=ReLu[z(p+l)]
(5)
a(p+l)=UpSampling[h(p+l)]
(6)
式中:DCov(·)為反卷積操作;z(p+l)為第p+l層解碼后的結(jié)果;h(p+l)為z(p+l)經(jīng)過(guò)ReLU激活函數(shù)計(jì)算后的結(jié)果;UpSampling表示進(jìn)行上采樣操作;(p+l)為h(p+l)經(jīng)過(guò)上采樣后的結(jié)果;激活函數(shù)ReLU表達(dá)式為
(7)
經(jīng)過(guò)n(字形自編碼器中,令n=3)次卷積反卷積操作以后,經(jīng)Sigmoid函數(shù)計(jì)算的結(jié)果即為解碼器輸出,此時(shí)輸出為(96,96,1)維重構(gòu)后的字形圖像。激活函數(shù)Sigmoid公式為
(8)
1.2.1 字形自編碼器模型工作過(guò)程
字形自編碼器模型工作過(guò)程包含訓(xùn)練階段和字形向量生成階段,如圖2所示。在訓(xùn)練階段,首先將每張漢字字形圖像經(jīng)過(guò)縮放、灰度化、歸一化處理為96×96的灰度圖,然后字形自編碼器模型基于已處理好的圖像進(jìn)行訓(xùn)練。在字形向量生成階段,基于已訓(xùn)練的字形自編碼器的編碼器部分將字形圖像映射到潛在空間表示,最終得到每個(gè)字512維的字形向量。
圖2 字形自編碼器工作過(guò)程Fig.2 Glyphautoencoder working process
1.2.2 字形自編碼器模型網(wǎng)絡(luò)結(jié)構(gòu)
卷積層、池化層和下采樣層的padding設(shè)置為“same”;優(yōu)化器為“Adam”;學(xué)習(xí)率為0.001,損失函數(shù)為“binary_crossentropy”。具體網(wǎng)絡(luò)結(jié)構(gòu)如表1所示。
表1 字形自編碼器模型網(wǎng)絡(luò)結(jié)構(gòu)Table 1 Glyph autoencoder Network Structure
1.2.3 字形自編碼器所生成向量的近鄰字計(jì)算
為驗(yàn)證初步取得的字形向量的效果,隨機(jī)抽取了10個(gè)漢字,分析字形向量間的余弦距離得出與目標(biāo)漢字相似度最高的10個(gè)漢字;漢字近鄰字計(jì)算結(jié)果如表2所示,基于字形的字向量表示可以很好地將字形相似的漢字聚在一起,在一定情況下,可以捕捉到字義相似的字,如“講”與其近鄰字“讀”“誦”“議”。
表2 漢字近鄰字計(jì)算結(jié)果Table 2 Calculation results of nearest neighbor characters of Chinese
1.3.1 字義數(shù)據(jù)分析處理
每個(gè)漢字字義條數(shù)、每條字義字?jǐn)?shù)不完全相同,分別對(duì)漢字字義條數(shù)、字義字?jǐn)?shù)進(jìn)行了統(tǒng)計(jì),如表3、表4所示。由統(tǒng)計(jì)結(jié)果可知,字義條數(shù)在16條之內(nèi)的漢字共有3 574字,約占全部漢字個(gè)數(shù)的99.6%,字義字?jǐn)?shù)在16字之內(nèi)的字義共有11 802條,約占全部字義條數(shù)的91.7%。為了平衡計(jì)算量和字義覆蓋度,每個(gè)漢字至多取16條字義,每條字義至多取16個(gè)字。
表3 字義條數(shù)統(tǒng)計(jì)結(jié)果Table 3 Statistical results of the number of characters semantics
表4 字義字?jǐn)?shù)統(tǒng)計(jì)結(jié)Table 4 Statistical results of character semantics
1.3.2 字義自編碼器工作過(guò)程
字義自編碼器工作過(guò)程與字形自編碼器類似。在訓(xùn)練階段,加入漢字字義,并用字形向量表示字義中的每個(gè)漢字,經(jīng)字義自編碼器訓(xùn)練,得到字義自編碼器模型。在字義向量生成階段,載入已訓(xùn)練的字義自編碼器的編碼器模型,經(jīng)模型計(jì)算得到融合字形和字義的字向量。融合字形和字義的字向量生成過(guò)程如下。
(1)將常用字的每條字義表示為(16,512)維原始字義矩陣。字義中的每個(gè)字用已訓(xùn)練的512維字形向量表示,字義長(zhǎng)度不足16字的用0補(bǔ)全,超過(guò)16字的只截取前16字。
(2)用字義自編碼器將每個(gè)(16,512)維字義矩陣映射為512維壓縮字義向量。
(3)選取常用字的16條字義,每條字義映射為512維字義向量,字義個(gè)數(shù)不足16的用0補(bǔ)全,超過(guò)16條的只截取前16條,表示為(16,512)維壓縮字義矩陣。
(4)用字義自編碼器將(16,512)維壓縮字義矩陣映射為512維字向量,生成蘊(yùn)含字形與字義信息的字向量。
如“講”的融合字形字義的字向量生成過(guò)程如圖3所示。
圖3 融合字形與字義的字向量Fig.3 Character vector fusing glyph and character semantics
字向量訓(xùn)練數(shù)據(jù)集主要分為:中文維基百科公開數(shù)據(jù)、3 587個(gè)漢字的繁體字圖像、3 587個(gè)漢字所對(duì)應(yīng)的12 867條基本字義;漢字繁體字字形來(lái)源于漢文學(xué)網(wǎng)在線新華字典站;漢字基本解釋來(lái)源于新華字典電子版數(shù)據(jù)庫(kù)。
實(shí)驗(yàn)中訓(xùn)練Word2Vec、GloVe的數(shù)據(jù)集來(lái)源于中文維基百科公開的1.75 G數(shù)據(jù)集,經(jīng)處理最終得到1 G數(shù)據(jù)集[17],漢字字?jǐn)?shù)約有2.1×108。窗口大小為5,字頻最小值為1,字向量維度為512維,其中Word2Vec字向量使用CBOW模型訓(xùn)練得到。最近鄰字計(jì)算字頻來(lái)源于國(guó)家文字工作委員會(huì)在線現(xiàn)代漢語(yǔ)2×107字語(yǔ)料庫(kù)的字頻數(shù)據(jù)。命名實(shí)體識(shí)別任務(wù)實(shí)驗(yàn)采用微軟亞洲研究院(MRAS)所發(fā)布的命名實(shí)體識(shí)別語(yǔ)料,包含訓(xùn)練集約222×104字、測(cè)試集約17×104字。中文分詞實(shí)驗(yàn)中采用NLPCC-2016所公布的中文分詞數(shù)據(jù)集,包含訓(xùn)練集約7×105字、測(cè)試集約7×105字。短文本語(yǔ)義相似度計(jì)算實(shí)驗(yàn)數(shù)據(jù)為ChineseSTS數(shù)據(jù)集,分為訓(xùn)練集27 490條以及測(cè)試集5 105條,每一條數(shù)據(jù)包含兩個(gè)句子及其相似度,相似度由低到高分為5個(gè)等級(jí)。
實(shí)驗(yàn)選取國(guó)家語(yǔ)委在線現(xiàn)代漢語(yǔ)語(yǔ)料庫(kù)中3個(gè)高頻字和3個(gè)低頻字,分別通過(guò)Word2Vec、GloVe和GnM2Vec方法計(jì)算這些字的最近鄰字,結(jié)果如表5所示。由此,可以得到如下結(jié)論。
(1)Word2Vec、GloVe依賴于訓(xùn)練數(shù)據(jù)集,穩(wěn)定性差。在以下6個(gè)字的近鄰字計(jì)算結(jié)果中,Word2Vec、GloVe雖然可以找到與“一”“人”“貳”的近義字,但若擴(kuò)大近鄰字范圍,其近義程度有所降低;并且Word2Vec、GloVe幾乎不能找到與“上”“橄”“?!弊志哂邢嗨埔饬x的字,低頻字向量表示質(zhì)量較差。而GnM2Vec則得益于加入中文字形和字義,即使擴(kuò)大近鄰字范圍,也可以在較少的數(shù)據(jù)集中找到與目標(biāo)字具有相似字義的字,穩(wěn)定性更好。
(2)Word2Vec、GloVe更注重于上下文語(yǔ)義關(guān)聯(lián)性,捕獲中文近義字效果較差。以“人”字為例,Word2Vec、GloVe更多捕獲的是與“人”出現(xiàn)在相同上下文環(huán)境的字,例如出現(xiàn)“婦”“族”等字。所提方法由于融合了漢字字義信息,得到“人”的近鄰字更加具有字義相似性,即近鄰字和目標(biāo)字是同義字。GnM2Vec能夠更好地表達(dá)字義相似性。
表5 近鄰字計(jì)算實(shí)驗(yàn)結(jié)果Table 5 Experimental results of nearest neighbor character calculation
采用Huang等[18]提出的雙向長(zhǎng)短期記憶網(wǎng)絡(luò)-條件隨機(jī)場(chǎng)(bi-directional long short term memory-conditional random field,BiLSTM-CRF)模型作為測(cè)評(píng)模型來(lái)對(duì)比不同字向量表示方法生成的字向量在命名實(shí)體識(shí)別中的效果,為了測(cè)試字典語(yǔ)義對(duì)字向量質(zhì)量的貢獻(xiàn)度,做了消融實(shí)驗(yàn),即基于字形字向量(glyph to vector,G2Vec)完成命名實(shí)體識(shí)別實(shí)驗(yàn)。評(píng)測(cè)指標(biāo)是按照命名實(shí)體邊界來(lái)計(jì)算測(cè)試集的準(zhǔn)確率、召回率、F1值。
對(duì)比Word2Vec、GloVe、G2Vec 、GnM2Vec生成的字向量在命名實(shí)體識(shí)別中的效果,結(jié)果如表6所示。通過(guò)分析,本文方法GnM2Vec生成的字向量在命名實(shí)體識(shí)別實(shí)驗(yàn)中較Word2Vec在測(cè)試集上準(zhǔn)確率、F1值分別提高了2.44、2.25;較GloVe分別提高了0.38、0.05;較G2Vec分別提高了0.47、0.3。
表6 命名實(shí)體識(shí)別任務(wù)中的實(shí)驗(yàn)結(jié)果Table 6 Experimental results in named entity recognition task
中文分詞實(shí)驗(yàn)使用Huang等[18]提出的BiLSTM-CRF模型作為測(cè)評(píng)模型來(lái)對(duì)比不同字向量表示方法所產(chǎn)生字向量在中文分詞任務(wù)中的效果,并做了消融實(shí)驗(yàn),評(píng)測(cè)指標(biāo)為分詞邊界的準(zhǔn)確率、召回率和F1值。
對(duì)比了Word2Vec、GloVe、G2Vec 、GnM2Vec、產(chǎn)生的字向量在中文分詞中的效果,具體結(jié)果如表7所示。分析可知,GnM2Vec較Word2Vec在測(cè)試集上準(zhǔn)確率、F1值分別提高了0.52、0.3,較GloVe分別提高了0.18、0.14;較G2Vec分別提高了0.71、0.33。
表7 中文分詞任務(wù)中實(shí)驗(yàn)結(jié)果Table 7 Experimental results in Chinese word segmentation task
對(duì)比了Word2Vec、GloVe、GnM2Vec、等字向量在CNN[19]、長(zhǎng)短期記憶網(wǎng)絡(luò)(long short-term memory,LSTM)[20]、Self-Attention[21]不同模型中短文本語(yǔ)義相似度的效果。評(píng)測(cè)指標(biāo)為F1值。
表8為不同模型和向量在測(cè)試集上的F1值,可以看出,在CNN、Self-Attention和LSTM模型中,GnM2Vec較word2vec的F1值分別提高3.57、3.62、2.53;較GloVe的F1值分別提高了1.85、3.62、0.5。對(duì)F1值求均值,較Word2vec、GloVe分別提高了3.24、1.99。
表8 短文本語(yǔ)義相似度計(jì)算實(shí)驗(yàn)結(jié)果Table 8 Experimental results of short-text similarity calculation
提出了一種融合中文字形和字義的字向量表示方法。該方法通過(guò)字形自編碼器自動(dòng)提取漢字字形特征得到字形向量表示,采用字義自編碼器進(jìn)一步進(jìn)行語(yǔ)義映射,生成融合字形和字義的字向量,得出以下結(jié)論。
(1)所提方法依賴穩(wěn)定的字形字義數(shù)據(jù)集,有效解決了傳統(tǒng)字向量表示方法存在的過(guò)度依賴大數(shù)據(jù)集的問(wèn)題。
(2)從漢字整體結(jié)構(gòu)角度出發(fā)利用字形結(jié)構(gòu)所蘊(yùn)含的語(yǔ)義信息和字典所包含的專業(yè)知識(shí)生成字向量。近鄰字計(jì)算實(shí)驗(yàn)結(jié)果表明,所提方法表示質(zhì)量更穩(wěn)定。
(3)通過(guò)中文命名實(shí)體識(shí)別、中文分詞和短文本語(yǔ)義相似度計(jì)算實(shí)驗(yàn)對(duì)所提的字向量表示方法進(jìn)行了測(cè)評(píng),結(jié)果顯示所提方法整體上好于現(xiàn)有方法。
目前,字義自編碼器在訓(xùn)練階段無(wú)法提取所有字義信息,有效信息損失較大,在未來(lái)研究中將嘗試注意力等模型降低字義信息損失,進(jìn)一步提升字向量質(zhì)量。