汪文濤
(西南民族大學(xué)電子信息學(xué)院,成都 610041)
彝文自動分詞是使用統(tǒng)計學(xué)習(xí)、機器學(xué)習(xí)或深度學(xué)習(xí)的方法標(biāo)注數(shù)據(jù)訓(xùn)練模型,達(dá)到自動將彝文的句子切分成多個詞組成的序列。彝文分詞可以將彝文文本切分成自然語言處理的基本分析單位,盡管在其他下游任務(wù)中可以用字作為基本分析單位,但每個詞之間隱含的特征關(guān)系能夠幫助模型更好地收斂,為進一步開展彝文相關(guān)的自然語言應(yīng)用,例如機器翻譯、文本分類、閱讀理解、情感分析等打下堅實基礎(chǔ)。
彝文和中文類似,沒有天然的分割符號,對中文分詞的研究也能給彝文分詞帶來啟發(fā)和理論基礎(chǔ)。早在上世紀(jì)80 年代就提出了基于詞表的分詞方法,其中劉源[1]介紹了正向最大匹配法,逆向最大匹配法等使用詞表來分詞的方法。Xue[2]使用最大熵算法,利用四位標(biāo)注集進行分詞。Peng 等[3]構(gòu)建線性鏈條件隨機場實現(xiàn)中文分詞。深度學(xué)習(xí)相關(guān)的模型能夠從數(shù)據(jù)中學(xué)習(xí)到深層次的特征關(guān)系,在數(shù)據(jù)集足夠的情況下在自然語言處理中也有更好的表現(xiàn)。Zheng等[4]首次將神經(jīng)網(wǎng)絡(luò)應(yīng)用于中文分詞中,并用感知機算法加速訓(xùn)練過程。Chen 等[5-6]人提出了GRNN(gated recursive neural network)模型,并且首次將其應(yīng)用在中文分詞上,測試性能與之前的傳統(tǒng)機器學(xué)習(xí)方法相同。Yao 等[7]提出了雙向LSTM 模型應(yīng)用于中文分詞,進一步提高了分詞準(zhǔn)確率。而彝文分詞研究也是沿著中文分詞的研究方向發(fā)展,主要是基于詞典的機械分詞方法,利用最大、最小匹配法[8]來實現(xiàn)分詞,或者是基于機器學(xué)習(xí)(隱馬爾可夫[9]或條件隨機場[10])方法來實現(xiàn)機器分詞。
本文主要在前人的研究基礎(chǔ)上將深度學(xué)習(xí)方法應(yīng)用于彝文分詞上,使用BILSTM-CRF模型訓(xùn)練,并且鑒于彝語資源較少無法充分提取特征的情況,充分利用詞典在原模型的基礎(chǔ)上加入相關(guān)詞向量特征,提高模型性能。
長短期記憶(long short-term memory, LSTM)是在循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)的基礎(chǔ)上對神經(jīng)單元結(jié)構(gòu)做出調(diào)整,而保留整個序列模型的框架。由于其神經(jīng)元結(jié)構(gòu)的特殊性能夠篩選出過去和未來時刻的有效信息,但由于LSTM 神經(jīng)單元結(jié)構(gòu)更加復(fù)雜并且仍然是序列模型,其訓(xùn)練時間會變得更長。LSTM 的總體結(jié)果與RNN 類似,當(dāng)前時刻的網(wǎng)絡(luò)與上一時刻的網(wǎng)絡(luò)之間是有關(guān)系的,如圖1 所示,y是LSTM的隱層輸出,x為LSTM的輸入,即每個字或詞。
圖1 LSTM結(jié)構(gòu)
LSTM與RNN的區(qū)別是每一個神經(jīng)網(wǎng)絡(luò)的單元結(jié)構(gòu)不一樣,如圖2所示,它由三個不同的門和一個記憶細(xì)胞決定。其中記憶細(xì)胞具備選擇性記憶的功能,可以選擇記憶重要的信息,過濾掉噪聲信息,減輕記憶負(fù)擔(dān)。首先通過遺忘門f(t),它決定上一時刻狀態(tài)輸出ct-1中保留信息的多少;輸入門控制當(dāng)前輸入的新信息更新到當(dāng)前狀態(tài)中,充當(dāng)過濾無效信息,保留有效信息的角色;輸出門則是確定神經(jīng)單元中哪些部分可以輸出。通過一個LSTM 神經(jīng)單元后既能考慮到之前的信息又能與當(dāng)前的輸入信息結(jié)合,達(dá)到解決序列信息的長距離提取問題。
圖2 LSTM神經(jīng)單元結(jié)構(gòu)
LSTM單元工作流程的公式如下:
其中:σ表示sigmoid 激活函數(shù);tanh 也是激活函數(shù)的一種;xt和ht分別表示當(dāng)前時刻的輸入向量和輸出的隱藏層向量;W和b分別表示權(quán)重矩陣和偏置向量,下標(biāo)表示它們對應(yīng)的類別,例如Whi和Wxi表示輸入門中上一時刻隱藏層向量和當(dāng)前時刻輸入向量的權(quán)重矩陣,bi則表示輸入門的偏置向量,?表示哈達(dá)瑪乘積,即矩陣對應(yīng)元素相乘。ft,it,ot,ct分別表示當(dāng)前時刻遺忘門、輸入門、輸出門和細(xì)胞狀態(tài)更新的輸出。
LSTM 只能提取出輸入句子與輸出之間的特征關(guān)系,無法提取上一時刻輸出和當(dāng)前時刻輸出之間的特征關(guān)系,而條件隨機場(CRF)正好能解決該問題,它是一類適合預(yù)測任務(wù)的判別模型,不僅能夠提取輸入的特征信息,而且在考慮之前時刻標(biāo)簽的情況下對當(dāng)前時刻結(jié)果進行預(yù)測。CRF結(jié)構(gòu)如圖3所示,以分詞為例,當(dāng)一個字對應(yīng)的標(biāo)簽為B時,那么下一個詞的標(biāo)簽不太可能還為B,這一規(guī)律在CRF 中能夠得到體現(xiàn)。
圖3 CRF結(jié)構(gòu)
給定觀察序列X,預(yù)測標(biāo)簽序列的條件概率P(y|x)可以表示為
其中:W(x)為規(guī)范化因子,保證條件概率分布和為1;tk(yi-1,yi,x,i)為狀態(tài)轉(zhuǎn)移函數(shù),表示上一時刻的標(biāo)簽轉(zhuǎn)移到當(dāng)前時刻對應(yīng)標(biāo)簽的概率;sl(yi,x,i)為特征轉(zhuǎn)移函數(shù),表示序列中當(dāng)前時刻的輸入轉(zhuǎn)移到對應(yīng)標(biāo)簽的概率。
BILSTM 是雙向LSTM,結(jié)構(gòu)如圖4所示,前向傳播能夠獲取之前時刻的序列信息,而反向傳播能夠獲取未來時刻的序列信息,最后將兩個方向的輸出做拼接或?qū)?yīng)元素求和就可以得到整個網(wǎng)絡(luò)的輸出。
圖4 BILSTM結(jié)構(gòu)
BILSTM-CRF[11]模型就是將BILSTM 的隱藏層和CRF 模型結(jié)合在一起。該模型利用BILSTM很好地提取上下文的特征,再經(jīng)由CRF 模型考慮標(biāo)簽之間的關(guān)系。由1.2 小節(jié)可知,CRF 預(yù)測輸出是由狀態(tài)轉(zhuǎn)移函數(shù)和特征轉(zhuǎn)移函數(shù)決定,因此在BILSTM-CRF 模型中就用BILSTM 的隱層輸出來充當(dāng)狀態(tài)函數(shù),并且引入狀態(tài)轉(zhuǎn)移矩陣Aij和特征轉(zhuǎn)移矩陣Pij,其中Aij表示時序上從第i個狀態(tài)轉(zhuǎn)移到第j個狀態(tài)的概率,由BILSTM 的隱層輸出再接一個線性層得到;Pij是輸入轉(zhuǎn)移矩陣,是隨機初始化的。在給定輸入序列X的條件下,標(biāo)注序列的預(yù)測輸出為
BILSTM-CRF 能夠很好地考慮到字與標(biāo)簽、標(biāo)簽與標(biāo)簽之間的關(guān)系,但是在低資源少數(shù)民族語言的分詞中很難構(gòu)建出大規(guī)模分好詞的數(shù)據(jù)集,數(shù)據(jù)集的規(guī)模較小意味著模型沒辦法提取到足夠的特征,即沒有收斂。而彝文在不斷的發(fā)展和傳播中也構(gòu)建出了許多彝漢對照大詞典,因此能夠收集到較大規(guī)模的彝漢對照詞表。在BILSTM-CRF訓(xùn)練中加入每個字所在的相關(guān)詞向量能夠提高在句子中這個字所提取的特征關(guān)注。
相關(guān)詞向量是由輸入序列和詞典統(tǒng)計得到,如圖5 所示,對于輸入序列X=(x1,x2,…,xn),統(tǒng)計X在詞表中包含的所有詞,構(gòu)建一個大小為M×N的矩陣Z,M為包含的詞數(shù),N為序列長度,每一行由0 和1 構(gòu)成,該詞在原序列中所在位置設(shè)為1,其余設(shè)為0。
圖5 相關(guān)詞向量
模型結(jié)構(gòu)如圖6 所示,X為輸入序列,P為詞向量矩陣,相關(guān)詞矩陣Z通過transformer 后,每個相關(guān)詞的輸出向量與其包含字所對應(yīng)的BILSTM 的輸出相加后作為CRF 模塊的輸入Pij,計算過程見式(9),其中xi為BILSTM 輸出矩陣的行向量,pk表示相關(guān)詞向量,然后再結(jié)合狀態(tài)轉(zhuǎn)移矩陣Aij通過CRF進行訓(xùn)練。
圖6 加入詞向量的BISLTM-CRF
模型選好后還需要選擇合適的損失函數(shù),BILSTM-CRF是由CRF模塊得到預(yù)測結(jié)果,因此在改進模型中仍然使用CRF 的損失函數(shù),計算過程如式(10)所示,PRealPath是真實的句子標(biāo)簽序列分?jǐn)?shù),Ptotal表示該序列所有可能結(jié)果的分?jǐn)?shù)總和,訓(xùn)練的目標(biāo)就是要最小化損失函數(shù)。
由于目前互聯(lián)網(wǎng)上沒有彝文分詞的相關(guān)文本資源,本文數(shù)據(jù)是在網(wǎng)上查找彝文相關(guān)文獻,將彝文句子保存在電腦中,并由彝族同學(xué)人工標(biāo)注,數(shù)據(jù)內(nèi)容包括句子編號及分好詞的彝文,分好詞的彝文用空格隔開以便后續(xù)處理,共計標(biāo)注了4005 條分好詞的數(shù)據(jù)用于訓(xùn)練,表1 為標(biāo)注彝文展示。
表1 標(biāo)注彝文文本
對原始數(shù)據(jù)進行處理首先需要去除數(shù)據(jù)中的無效字符、中文字符以及標(biāo)點符號,然后再進行標(biāo)注,如表1所示,標(biāo)注時通過空格將句子分隔成多個詞組成的序列,因此可以將每個詞都提取出來,根據(jù)每個詞的長度將其標(biāo)注為不同的符號,標(biāo)注規(guī)則如表2所示。
表2 標(biāo)注規(guī)則
本次實驗所用模型全部使用GeForce RTX 2080Ti顯卡訓(xùn)練,訓(xùn)練時間縮短至3 個小時左右,實驗數(shù)據(jù)的80%為訓(xùn)練集,20%為測試集,模型分別采用BILSTM-CRF 和基于詞向量的BILSTM-CRF 進行對比實驗,比較指標(biāo)主要是精確度、召回率和F1值。
實驗中模型的字嵌入維度設(shè)為256,BILSTM隱層維度設(shè)為512,dropout 設(shè)為0.2,epoch 設(shè)置為50,學(xué)習(xí)率設(shè)為0.0001,batch_size 設(shè)為20。表3為不同模型的預(yù)測結(jié)果對比,可以看出加入相關(guān)詞向量后的模型分詞效果得到明顯提升,可見對每個字所屬的詞向量特征進行訓(xùn)練可以增加一些詞出現(xiàn)的概率。
表3 不同模型預(yù)測結(jié)果對比
彝文分詞是一個需要不斷發(fā)展的方向,近年來對少數(shù)民族語言的研究越來越多,但在彝文方面的卻很少。本文將深度學(xué)習(xí)方法應(yīng)用到彝文分詞上,構(gòu)造了BILSTM-CRF模型,在此基礎(chǔ)上提出了基于相關(guān)詞向量的BILSTM-CRF 模型,實驗證明改進后的模型是有效的。本研究為彝文的后續(xù)研究做出了貢獻,為機器翻譯、自動摘要、文章理解等自然語言處理的應(yīng)用研究有一定推動作用,未來隨著彝文數(shù)據(jù)量的增加,可以使用更深層次的網(wǎng)絡(luò)進一步提高模型性能。