郭振鵬,張起貴
(太原理工大學(xué)信息與計(jì)算機(jī)學(xué)院,山西晉中 030600)
中文是一種復(fù)雜的語(yǔ)言,中文文本中沒有自然可識(shí)別的分隔符,詞語(yǔ)間的劃分較為模糊,由此學(xué)者們掀起了中文分詞的研究熱潮。例如,文獻(xiàn)[1]提出了一種利用膨脹卷積神經(jīng)網(wǎng)絡(luò)DCNN(Dilated Convolutional Neural Network)進(jìn)行中文分詞的方法,解決了模型計(jì)算速度慢、輸入特征不豐富等問題。文獻(xiàn)[2]提出使用長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)學(xué)習(xí)中文分詞的字符表示,使用CRF(Conditional Random Field)聯(lián)合解碼標(biāo)簽的方法。文獻(xiàn)[3]提出了一種改進(jìn)雙向LSTM-CRF 網(wǎng)絡(luò)的分詞方法,解決了原分詞模型在編碼過(guò)程的記憶壓縮問題。文獻(xiàn)[4]提出了改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neural Networks)的中文分詞模型,克服了過(guò)于依賴人工處理特征的缺點(diǎn),簡(jiǎn)化了模型結(jié)構(gòu),提高了分詞準(zhǔn)確率。文獻(xiàn)[5]提出一種基于樣本遷移學(xué)習(xí)的中文分詞方法,增強(qiáng)了分詞模型的領(lǐng)域自適應(yīng)能力。然而這些基于神經(jīng)網(wǎng)絡(luò)的方法通常依賴于大量的標(biāo)記句來(lái)訓(xùn)練模型,對(duì)于訓(xùn)練數(shù)據(jù)中稀缺或缺失的單詞,這些方法很難正確地分割出包含該單詞的句子。幸運(yùn)的是,這些詞中有許多在現(xiàn)有的中文詞典中得到了很好的定義。因此,中文字典有可能提高基于神經(jīng)網(wǎng)絡(luò)的中文分詞方法的性能,減少對(duì)標(biāo)記數(shù)據(jù)[6]的依賴。
在對(duì)文本進(jìn)行處理時(shí),字嵌入是較為關(guān)鍵的一步,通常采用將詞或字表示為分布式向量。如果采用One-hot 編碼,即將在該詞對(duì)應(yīng)位置上記為數(shù)字1,其他位置上記為數(shù)字0,這會(huì)導(dǎo)致生成的詞向量過(guò)于稀疏,浪費(fèi)不必要的內(nèi)存,并且字詞的語(yǔ)義和句法信息也不能體現(xiàn)出來(lái);隨后Google 提出一種高效率的詞向量訓(xùn)練工具——Word2vec[7],它可以將句子中詞映射為低維度的實(shí)數(shù)向量,常常應(yīng)用于神經(jīng)網(wǎng)絡(luò)來(lái)進(jìn)行分詞任務(wù),常見的模型有CBOW (Continuous Bag-of-Words)和Skip-Gram。與CBOW 模型相比較,Skip-Gram 模型更適合處理大型語(yǔ)料庫(kù)。
GRU(Gated Recurrent Unit)單元[8]是LSTM 單元的一個(gè)變體,它改變了LSTM 的內(nèi)部結(jié)構(gòu),將遺忘門和輸入門合并到更新門中,輸出門成為重置門,同時(shí)合并了細(xì)胞狀態(tài)與輸出狀態(tài),使其拓?fù)浣Y(jié)構(gòu)更加簡(jiǎn)單,具有內(nèi)部計(jì)算復(fù)雜度較低、訓(xùn)練時(shí)間短等優(yōu)點(diǎn),緩解了訓(xùn)練誤差的梯度衰減和發(fā)散問題。GRU 單元的內(nèi)部結(jié)構(gòu)如圖1 所示。
圖1 GRU 單元的內(nèi)部結(jié)構(gòu)
在t時(shí)刻GRU 單元按以下方式更新:
其中,zt為t時(shí)刻的更新門,它決定著單元記憶當(dāng)前信息和遺忘歷史信息的程度[9],表示當(dāng)前時(shí)刻的候選激活值,ht-1表示前一隱藏節(jié)點(diǎn)的激活值,rt為t時(shí)刻的重置門,它決定是否放棄先前的ht-1。若重置門rt≈0,則表示模型可以舍去一部分與未來(lái)無(wú)關(guān)的信息,ht表示在t時(shí)刻的隱藏節(jié)點(diǎn)的激活值。
文中的CNN-BiGRU-CRF 模型由主要CNN、BiGRU 網(wǎng)絡(luò)和CRF 層組成,模型如圖2 所示。
圖2 CNN-BiGRU-CRF模型圖
該文利用CNN 提取局部短語(yǔ)特征,其模型由以下幾部分組成。
1)輸入層。把嵌入層的輸出矩陣當(dāng)作輸入,句子的第i個(gè)詞向量為xi∈Rk×d,其中k和d分別表示文本句子的長(zhǎng)度及詞向量的維度。
2)卷積層。通過(guò)設(shè)置濾波器的大小提取輸入文本的局部特征,即對(duì)輸入層的矩陣C∈Rk×d進(jìn)行卷積運(yùn)算操作,卷積之后的特征可表示為:
其中,ci表示為第i個(gè)局部特征值。m是卷積核的尺寸大小,b和w分別為卷積核的偏置和權(quán)重,xi:i+m-1表示從第i個(gè)詞到第i+m-1 個(gè)詞組成的句子向量,?表示激活函數(shù)。
3)池化層。對(duì)卷積層操作后的句子局部特征進(jìn)行采樣,可以得到局部值的最優(yōu)解Hi,池化方法有兩種方法,一種是平均池化,另一種是最大池化。
4)全連接層和輸出層。將池化層后的向量Hi通過(guò)全連接層連接成特征矩陣T=[H1,H2,…,Hn],該特征向量經(jīng)過(guò)最后輸出層得到對(duì)應(yīng)類別的概率序列。
當(dāng)對(duì)文本中的一些句子進(jìn)行分詞時(shí),如“天晴了”、“天氣真好”、“天天都要加班”等,對(duì)于單向的GRU 網(wǎng)絡(luò),只能將上述的例句,切分為一樣的結(jié)果,為了避免此缺點(diǎn)并獲得正確的分割結(jié)果,因此利用BiGRU 網(wǎng)絡(luò)[10]來(lái)捕獲未來(lái)和過(guò)去的文本信息,即使用一個(gè)GRU 神經(jīng)網(wǎng)絡(luò)來(lái)計(jì)算過(guò)去的信息,并同時(shí)使用另一個(gè)相同且方向相反的GRU 來(lái)計(jì)算未來(lái)的信息[11]。BiGRU 網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示。
圖3 BiGRU 網(wǎng)絡(luò)結(jié)構(gòu)圖
在雙向GRU 網(wǎng)絡(luò)中,設(shè)前向GRU(表示未來(lái)信息的網(wǎng)絡(luò))的隱藏狀態(tài)為,后向GRU(表示過(guò)去信息的網(wǎng)絡(luò))的隱藏狀態(tài)為,BiGRU 輸出的隱藏狀態(tài)為ht。具體的計(jì)算公式如下;
其中,wt、ut分別表示前向、后向隱層狀態(tài)的權(quán)值矩陣;xt為t時(shí)刻的GRU 輸入;bt為偏置向量。
條件隨機(jī)域(CRF)[12]是近年來(lái)自然語(yǔ)言處理領(lǐng)域中比較流行的算法之一,是一種條件概率模型,可用于求解序列概率最大化的條件。
設(shè)BiRGU 神經(jīng)網(wǎng)絡(luò)層處理后的序列為M={M1,M2,M3,M4,…,Mn},其中Mi為第i個(gè)輸入字符向量。設(shè)標(biāo)簽序列為Y={Y1,Y2,Y3,…,Yn}。其中Y(M)為M的可能標(biāo)記序列集,定義的CRF模型[13]條件概率P(Y|M)為:
其中,N為訓(xùn)練的標(biāo)記句數(shù),Yi為第i個(gè)句子的真實(shí)標(biāo)簽序列。
將字典信息融合到神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練的一種方法是基于偽標(biāo)記數(shù)據(jù)的生成。更具體地說(shuō),給定一本中文字典,里面有一串中文單詞,隨機(jī)抽取其中的K個(gè)詞,用它們組成一個(gè)偽句子。例如,假設(shè)有3 個(gè)詞“流行”、“目前”和“深度學(xué)習(xí)”被取樣,然后可以生成一個(gè)偽句子“很火最近人工智能”,由于這些單詞的綁定表已經(jīng)知道,因此可以自動(dòng)推斷生成的偽語(yǔ)句的標(biāo)記序列。例如,在BMES 標(biāo)簽方案下,上述偽語(yǔ)句的標(biāo)簽序列為“B/E/B/E/B/M/M/E”。然后重復(fù)此過(guò)程,直到生成Np個(gè)偽標(biāo)記句子,把這些偽標(biāo)記的句子添加到標(biāo)記的數(shù)據(jù)集中,增強(qiáng)了網(wǎng)絡(luò)模型的訓(xùn)練。
由于偽標(biāo)記的句子可能與人工標(biāo)注的句子具有不同的信息量,分別對(duì)這兩種訓(xùn)練數(shù)據(jù)的損失賦予不同的權(quán)重,最終損失函數(shù)表示為:
基于多任務(wù)學(xué)習(xí)將字典信息合并到神經(jīng)網(wǎng)絡(luò)分詞模型訓(xùn)練中,在原基礎(chǔ)上增加了一項(xiàng)新任務(wù),即詞的分類,這意味著分類序列的中文字符是否可以是一個(gè)中文詞語(yǔ)。例如,一個(gè)字符序列“深度學(xué)習(xí)”可以被歸類為是一個(gè)正確的詞,而“深度學(xué)昕”會(huì)被歸類為一種錯(cuò)誤類型組合,即不是一個(gè)正確的詞。這些陽(yáng)性樣本是從一本中文字典中獲得的,陰性樣本是通過(guò)從詞典中隨機(jī)抽取一個(gè)詞來(lái)獲得的,然后這個(gè)詞中的每個(gè)字符將被以一個(gè)概率為p的字符重新隨機(jī)放置。多次重復(fù)此步驟,直到獲得預(yù)定數(shù)目的陰性樣本,采用一種神經(jīng)方法來(lái)進(jìn)行單詞分類任務(wù),它的架構(gòu)與神經(jīng)網(wǎng)絡(luò)CNN-CRF 架構(gòu)[14]類似,只是將CRF 層替換為max-pooling 層和sigmoid 層來(lái)進(jìn)行二元分類。單詞分類任務(wù)的丟失函數(shù)表示為:
其中,Nw為分類訓(xùn)練樣本的數(shù)目,Si為第i個(gè)樣本的預(yù)測(cè)得分,yi為詞的分類標(biāo)簽值(其中yi為1 代表正確,yi為-1 代表錯(cuò)誤)。
在多任務(wù)學(xué)習(xí)的驅(qū)動(dòng)下,提出了一個(gè)統(tǒng)一的框架來(lái)聯(lián)合訓(xùn)練中文分詞與詞分類的多任務(wù)模型,如圖4所示。
圖4 基于多任務(wù)學(xué)習(xí)的模型圖
在上述的框架中,神經(jīng)網(wǎng)絡(luò)分詞模型和詞分類模型具有相同的嵌入層和CNN 層。這樣,這兩個(gè)層次可以通過(guò)與詞分類任務(wù)的聯(lián)合訓(xùn)練,更好地捕捉漢語(yǔ)詞典中的詞信息,從而提高漢語(yǔ)詞典的性能。在模型訓(xùn)練中,分別為這兩個(gè)任務(wù)的損失設(shè)定不同的權(quán)重,最終的損失函數(shù)為:
其中,系數(shù)λ2取值范圍為(0,1)。
上述介紹了兩種將字典信息引入神經(jīng)網(wǎng)絡(luò)訓(xùn)練的方法,一種方法是基于偽標(biāo)記數(shù)據(jù)生成,另一種方法是基于多任務(wù)學(xué)習(xí)。這兩種方法利用詞典信息的方式不同,可以結(jié)合起來(lái)更好地利用詞典知識(shí)。最終的損失函數(shù)為:
該文實(shí)驗(yàn)的硬件平臺(tái):Intel(R)core(TM)i5-4210 CPU@2.4GHz,CPU卡為NVIDIA GeForce GTX 1080ti;內(nèi)存為8G,操作系統(tǒng)為Ubantu 14.04;軟件參數(shù)為Python3.6,使用Tensorflow 1.12 和Kears 2.2.4 構(gòu)建神經(jīng)網(wǎng)絡(luò)分詞模型。
該文實(shí)驗(yàn)采用數(shù)據(jù)集分別是MSRA corpus 和PKU corpus,通常在MSRA 和PKU 中隨機(jī)選取90%作為訓(xùn)練集,10%作為測(cè)試集。為了公正地評(píng)估模型的分詞性能,實(shí)驗(yàn)采用了SIGHAN 規(guī)定的標(biāo)準(zhǔn)評(píng)估指標(biāo),其評(píng)價(jià)指標(biāo)有準(zhǔn)確率P,召回率R以及F1值。
在CNN-BiGRU-CRF 模型中,字符嵌入是利用Word2vec 在搜狗新聞?wù)Z料庫(kù)上預(yù)先訓(xùn)練獲得的,實(shí)驗(yàn)中使用字典是中文搜狗字典,字嵌入向量維度設(shè)為200,最大句子長(zhǎng)度設(shè)為40,在CNN層使用了600個(gè)過(guò)濾器,內(nèi)核大小為3,采用Adam 優(yōu)化算法作為神經(jīng)網(wǎng)路的訓(xùn)練算法,初始的學(xué)習(xí)率設(shè)為0.01,隱藏層節(jié)點(diǎn)數(shù)設(shè)為128 個(gè)單元,dropout 率設(shè)為0.3,將每個(gè)實(shí)驗(yàn)重復(fù)5 次,并輸出平均結(jié)果。
實(shí)驗(yàn)一結(jié)果如表1 所示,與Bi-LSTM-CRF 模型進(jìn)行對(duì)比,Bi-GRU-CRF 神經(jīng)網(wǎng)絡(luò)模型在MSRA 和PKU 語(yǔ)料庫(kù)中的平均迭代時(shí)間分別減少了12.6%、14.6%。與CNN-BiLSTM-CRF 模型相比,CNNBiGRU-CRF 模型在MSRA 和PKU 語(yǔ)料庫(kù)中的平均迭代時(shí)間分別減少了11.6%,12.4%,由此可以表明,GRU 模型在訓(xùn)練時(shí)間方面明顯優(yōu)于LSTM 模型,故采用GRU 來(lái)代替LSTM 不僅可降低訓(xùn)練模型的復(fù)雜度,而且可以進(jìn)一步提高分詞算法的效率。
表1 模型訓(xùn)練的平均時(shí)間(單位:s/epoch)
實(shí)驗(yàn)二分別以LSTM-CRF、CNN-CRF、CNNBiGRU-CRF 網(wǎng)絡(luò)模型在數(shù)據(jù)集MSRA 和PKU 上進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果分別如表2 和表3 所示,在上述的3 種分詞模型對(duì)漢語(yǔ)分詞任務(wù)的準(zhǔn)確率都達(dá)到了90%以上,其中LSTM-CRF 和CNN-CRF 模型的分詞效果相對(duì)較差,與CNN-BiGRU-CRF 模型相比,在MSRA 和PKU 兩個(gè)數(shù)據(jù)集中,后者模型的F1 值比LSTM-CRF 模型的F1 值分別高2.4%、4.1%,比CNNCRF 模型的F1 值分別高1.6%、2.8%,說(shuō)明雙向的神經(jīng)網(wǎng)絡(luò)模型能夠克服單向網(wǎng)絡(luò)在關(guān)聯(lián)上下文信息方面的局限性,進(jìn)而實(shí)現(xiàn)更加精準(zhǔn)的分詞。
表2 模型在MSRA數(shù)據(jù)集上的分詞性能
表3 模型在PKU數(shù)據(jù)集上的分詞性能
實(shí)驗(yàn)三將字典信息有效地加入到CNN-BiGRUCRF 神經(jīng)模型中,從而達(dá)到更好的分詞效果,將該文提出的方法與最近其他的先進(jìn)分詞方法在MSRA 和PKU 數(shù)據(jù)集上的P,R,F1 等性能上進(jìn)行了比較,其結(jié)果如表4 所示。其中Method I 和Method II 分別是采用偽標(biāo)記數(shù)據(jù)生成方法和多任務(wù)學(xué)習(xí)方法將字典信息加入到CNN-BiGRU-CRF 神經(jīng)模型中,Method I+Method II 是將兩種方法融合將字典信息加入其神經(jīng)網(wǎng)絡(luò)中;由表4 可以看出,該文提出的Method I+Method II 方法在MSRA 和PKU 數(shù)據(jù)集上的整體性能優(yōu)于其他先進(jìn)分詞方法,在MSRA 數(shù)據(jù)集上的P,R和F1 的值分別達(dá)到了97.8%,97.2%,97.5%;在PKU 數(shù)據(jù)集上的P,R和F1 的值分別達(dá)到了97.6%,97.3%,97.4%;其整體分詞性能優(yōu)于未利用字典信息的CNN-BiGRU-CRF 模型,與文獻(xiàn)[1]提出模型相比較,其F1 值在MSRA 和PKU 數(shù)據(jù)集上分別提高了1.14%、1.35%,并且Method I+Method II 方法的F1 值高于單獨(dú)使用Method I 和Method II 方法的F1 值,說(shuō)明將偽標(biāo)記數(shù)據(jù)生成方法和多任務(wù)學(xué)習(xí)方法進(jìn)行融合可以更有效地利用詞典的信息,可以進(jìn)一步提高分詞的準(zhǔn)確率。
表4 與最近其他先進(jìn)分詞方法在MSRA和PKU數(shù)據(jù)集上的分詞性能比較
實(shí)驗(yàn)四隨機(jī)取MSRA 10%的訓(xùn)練數(shù)據(jù)和PKU 25%的訓(xùn)練數(shù)據(jù),來(lái)驗(yàn)證偽句子數(shù)量和人工標(biāo)記句子數(shù)量對(duì)實(shí)驗(yàn)的影響。如圖5 所示,這兩個(gè)比率的趨勢(shì)是相同的,隨著偽句子數(shù)量的增加,F(xiàn)1 值先提高后降低。這是因?yàn)楫?dāng)生成的偽句子數(shù)量很少的時(shí)候,字典信息并沒有得到充分的利用,隨著偽數(shù)據(jù)數(shù)量的增加,該方法可以更好地利用字典知識(shí)。當(dāng)偽標(biāo)記數(shù)據(jù)過(guò)多時(shí),模型會(huì)過(guò)度放大偽標(biāo)記數(shù)據(jù)信息,而忽略了人工標(biāo)記生成的數(shù)據(jù),從而導(dǎo)致性能下降,因此適度大小的偽標(biāo)記數(shù)據(jù)是最好的。
圖5 偽標(biāo)記數(shù)據(jù)大小對(duì)實(shí)驗(yàn)的影響
在多任務(wù)學(xué)習(xí)方法中,隨機(jī)生成中文序列作為單詞分類任務(wù)的樣本,分詞任務(wù)的性能可能會(huì)受到隨機(jī)生成樣本數(shù)量的影響。圖6 顯示了多任務(wù)學(xué)習(xí)方法的性能隨所構(gòu)造的詞分類樣本數(shù)量與字典大小之比的變化。當(dāng)分類樣本個(gè)數(shù)較小時(shí),分類性能隨樣本個(gè)數(shù)的增加而提高,而當(dāng)樣本數(shù)量過(guò)大時(shí),性能會(huì)變差,原因類似于偽標(biāo)記數(shù)據(jù)方法,隨著分類樣本個(gè)數(shù)的增加,該方法逐漸將字典知識(shí)融入到分詞模型中,而當(dāng)分類樣本過(guò)多時(shí),模型可能會(huì)過(guò)分強(qiáng)調(diào)分類任務(wù)而忽略分詞任務(wù)。因此,適當(dāng)數(shù)量的單詞分類樣本最適合該方法。
圖6 詞分類樣本大小對(duì)實(shí)驗(yàn)的影響
該文提出了一種結(jié)合字典信息的CNN-BiGRUCRF 網(wǎng)絡(luò)的分詞模型,利用字典信息的一種方法是基于偽標(biāo)注的數(shù)據(jù)生成,從中文字典中隨機(jī)抽取詞來(lái)構(gòu)成偽標(biāo)記句子;另一種是基于多任務(wù)學(xué)習(xí),在這種方法中引入了另一項(xiàng)任務(wù),即中文詞類分類,根據(jù)漢字是否能構(gòu)成一個(gè)詞,對(duì)漢字序列進(jìn)行分類),并通過(guò)共享神經(jīng)網(wǎng)絡(luò)的參數(shù)與CNN-BiGRU-CRF 網(wǎng)絡(luò)模型共同訓(xùn)練該任務(wù)。實(shí)驗(yàn)結(jié)果表明,使用GRU 代替了傳統(tǒng)LSTM,可降低了模型復(fù)雜程度,提高分詞模型訓(xùn)練的效率,使用將偽標(biāo)記數(shù)據(jù)生成和多任務(wù)學(xué)習(xí)方法進(jìn)行融合可以更好利用字典信息,克服了需要大量帶標(biāo)記的句子進(jìn)行模型訓(xùn)練,并提高了模型分詞的準(zhǔn)確率。雖然偽標(biāo)記數(shù)據(jù)的生成方法是有效的,但是生成偽標(biāo)記數(shù)據(jù)的方法非常簡(jiǎn)單,可能會(huì)給分詞模型帶來(lái)一些噪聲,因此需要探索更精確的方式來(lái)構(gòu)造偽數(shù)據(jù),以便在特征中更高效地利用字典信息。