周裕林,陳艷平,黃瑞章,秦永彬,林川
(1.公共大數(shù)據(jù)國家重點(diǎn)實(shí)驗(yàn)室,550025,貴陽;2.貴州大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,550025,貴陽)
中文分詞是中文信息處理中的首要任務(wù)。與英語使用分隔符來分割單詞不同,漢語是一種由本族語素(漢字)發(fā)展而成的多合成語言[1]。在漢語中,語素也可以獨(dú)立成詞。語素和復(fù)合詞的模糊導(dǎo)致了漢語中對詞的概念比較弱。另外,與英語使用分隔符來分割單詞不同,漢語句子采用連續(xù)書寫。詞與詞之間沒有分隔符。因此,在中文文本里,經(jīng)常存在分詞歧義。單個句子會產(chǎn)生多種可能的切分路徑。例如,“世界冠軍”“抽象概念”“銀行流水”等,這些詞既可單獨(dú)成詞,又可以切分成粒度更小的多個詞語,例如“世界/冠軍”“抽象/概念”“銀行/流水”等。
中文分詞作為中文信息處理的第一步,直接用于支撐多種下游任務(wù),如文本分類、機(jī)器翻譯等。分詞結(jié)果的不同將會對下游任務(wù)產(chǎn)生不同的影響。錯誤的分詞結(jié)果會產(chǎn)生錯誤擴(kuò)散,直接影響下游任務(wù)的性能。所以,中文分詞是中文信息處理中一項(xiàng)重要任務(wù)。
現(xiàn)有的神經(jīng)網(wǎng)絡(luò)模型很難捕獲句子中的長距離語義依賴,使得模型對文本語義特征理解不夠充分,從而對文本中的歧義詞邊界識別性能較差。然而,在序列標(biāo)注任務(wù)中,歧義詞的邊界樣本又相對較少,存在樣本不平衡問題。例如,“世界冠軍”“抽象概念”等歧義詞屬于難分類樣本,文本中存在著的歧義詞與大量的非歧義詞樣本造成了難易樣本不平衡。傳統(tǒng)的序列標(biāo)注模型(如LSTM、CRF、Transformer的雙向編碼器(BERT)等)在歧義詞上識別性能都較差,不能很好地解決難易樣本不平衡問題。盡管在解決中文分詞歧義性上提出了各種解決方案,但仍然存在不足。目前,主流的中文分詞模型主要采用序列標(biāo)注模型。序列標(biāo)注模型只依賴每個字周圍的局部特征對字的分類標(biāo)簽進(jìn)行預(yù)測。該模型存在輸入特征使用不充分、難易樣本中難分類樣本得不到重點(diǎn)關(guān)注的問題,使得模型識別歧義詞性能較差。
針對中文分詞模型輸入特征使用不充分、難易樣本不平衡的問題,本文提出了基于機(jī)器閱讀理解的中文分詞模型。本文設(shè)計模型的動機(jī)是構(gòu)建問題信息作為先驗(yàn)知識以豐富模型輸入特征。針對中文詞組的歧義性帶來的難易樣本不平衡問題,本文改進(jìn)了損失函數(shù)。在Bakeoff2005語料庫的4個公共數(shù)據(jù)集上進(jìn)行驗(yàn)證,實(shí)驗(yàn)結(jié)果表明了本文方法的有效性。本文的主要貢獻(xiàn)如下。
(1)采用基于機(jī)器閱讀理解模型的方法,通過構(gòu)建問題信息作為先驗(yàn)知識以豐富模型輸入特征,增強(qiáng)模型對文本語義特征的理解,實(shí)現(xiàn)歧義詞的更好識別。
(2)在充分分析中文詞組特點(diǎn)的基礎(chǔ)上,改進(jìn)損失函數(shù)以緩解歧義詞所帶來的難易樣本不平衡問題。
(3)本文首次將機(jī)器閱讀理解模型應(yīng)用于中文分詞任務(wù)中,為中文分詞提供了一種新思路。
目前,主流的中文分詞方法是基于神經(jīng)網(wǎng)絡(luò)模型。許多方法都將中文分詞作為序列標(biāo)注任務(wù)進(jìn)行處理,然而這些方法都存在輸入特征使用不充分和無法緩解難易樣本不平衡問題。
隨著深度神經(jīng)網(wǎng)絡(luò)模型不斷發(fā)展[2],出現(xiàn)了許多應(yīng)用于各項(xiàng)自然語言處理任務(wù)的神經(jīng)網(wǎng)絡(luò)模型[3]。Collobert等[4]提出將神經(jīng)網(wǎng)絡(luò)的方法應(yīng)用于序列標(biāo)注任務(wù)。此后,許多方法相繼應(yīng)用于中文分詞。Chen等[5]提出用長短記憶(LSTM)神經(jīng)網(wǎng)絡(luò)來解決傳統(tǒng)神經(jīng)網(wǎng)絡(luò)存在的長期依存關(guān)系的問題;Yao等[6]在Chen等的基礎(chǔ)上,提出雙向長短記憶(Bi-LSTM)神經(jīng)網(wǎng)絡(luò)來充分利用上下文信息進(jìn)行分詞;Chen等[7]提出帶門結(jié)構(gòu)的遞歸神經(jīng)網(wǎng)絡(luò)(GRNN)來保留上下文;Chen等[8]使用對抗神經(jīng)網(wǎng)絡(luò)來使用多個語料庫進(jìn)行聯(lián)合訓(xùn)練;Ma等[9]在Bi-LSTM上引入預(yù)訓(xùn)練、dropout、超參數(shù)調(diào)參這3項(xiàng)深度學(xué)習(xí)技術(shù),以簡單的模型實(shí)現(xiàn)復(fù)雜模型的性能;Yang等[10]利用外部知識提高中文分詞的準(zhǔn)確率;Gong等[11]提出一個將每個標(biāo)準(zhǔn)分割成若干標(biāo)準(zhǔn)的Swich-LSTM結(jié)構(gòu);Zhou等[12]引入多種漢字Embedding來增強(qiáng)語義;He等[13]提出利用多標(biāo)準(zhǔn)進(jìn)行中文分詞;郭振鵬等[14]提出結(jié)合詞典的CNN-BiGRU-CRF網(wǎng)絡(luò)中文分詞模型。
大規(guī)模預(yù)訓(xùn)練模型BERT[15]和ELMo[16]的出現(xiàn)刷新了NLP領(lǐng)域各項(xiàng)任務(wù)的記錄。Diao等[17]提出基于BERT的N-gram增強(qiáng)中文文本編碼器,以方便識別出可能的詞組合;Tian等[18]提出基于雙通道注意力機(jī)制的分詞及詞性標(biāo)注模型;Tian等[19]提出基于鍵值記憶神經(jīng)網(wǎng)絡(luò)的中文分詞模型;Chen等[20]提出在基于全局字符聯(lián)機(jī)制的神經(jīng)網(wǎng)絡(luò)模型GCA-FL,通過聯(lián)邦學(xué)習(xí)的方式增強(qiáng)模型在中文分詞上的性能。
以上模型盡管在公共數(shù)據(jù)集上取得了不錯的效果,但還存在以下的不足:①傳統(tǒng)的序列標(biāo)注模型對文本語義特征使用不充分;②中文分詞文本存在難易樣本不平衡問題無法得到有效緩解。近年來,有把序列標(biāo)注任務(wù)轉(zhuǎn)換成智能問答(QA)任務(wù)的趨勢。Li等[21]將實(shí)體識別任務(wù)轉(zhuǎn)換成機(jī)器閱讀理解(MRC)任務(wù),每個實(shí)體類型R(x,y)都能被參數(shù)化為帶答案y的一個問題q(x);Li等[22]將關(guān)系抽取任務(wù)轉(zhuǎn)換為一個多回合的問答任務(wù)。此外,構(gòu)建問題信息作為先驗(yàn)知識,能使輸入特征更加豐富。然而,以上模型無法緩解難易樣本不平衡問題。Lin等[23]在目標(biāo)檢測中通過降低易分類樣本的損失權(quán)重,從而更加關(guān)注難分類樣本,能夠有效緩解難易樣本之間的不平衡;Liu等[24]引入密度函數(shù),在目標(biāo)檢測中既抑制了易分類樣本損失權(quán)重,又不太過于關(guān)注難分類樣本。
Vaswani等[25]最早提出Transformer的模型架構(gòu)。它能夠更好地學(xué)習(xí)到句子當(dāng)中單詞與單詞之間的聯(lián)系,并完全依賴于自注意力機(jī)制來計算其輸入和輸出從而結(jié)合上下文語境來提高模型的性能。自注意力機(jī)制的公式為
(1)
式中:Q、K、V表示3個矩陣向量;d為Q向量的維度;通過softmax對得到的分?jǐn)?shù)歸一化。由于BERT的目標(biāo)是生成語言模型,只需要用到Transformer編碼器的機(jī)制,所以對Transformer的解碼器部分不再作過多敘述。
BERT預(yù)訓(xùn)練模型中的Embedding層是由3種Embedding求和得到。其中,Token Embeddings是詞向量。Segment Embeddings是用來區(qū)分兩種句子,因?yàn)轭A(yù)訓(xùn)練不只做語言模型,還要做以兩個句子為輸入的分類任務(wù)。Position Embeddings是用來表示句子中單詞的位置。BERT預(yù)訓(xùn)練模型通過3個Embeddings相加能更好地提取句子語義特征。
本文是在大規(guī)模預(yù)訓(xùn)練BERT模型上構(gòu)建的機(jī)器閱讀理解模型。給定一個輸入句子X={x1,x2,…,xn},其中,n代表句子中第n個字,然后在X中發(fā)現(xiàn)每一個詞組。首先,需要將數(shù)據(jù)集轉(zhuǎn)換成(QUESTION,ANSWER,CONTEXT)的三元組形式,其中,QUESTION表示問題生成模板,ANSWER使用xstart,end來表示在句子中詞組的開始和結(jié)束下標(biāo),CONTEXT為整個句子的文本。對于詞組,產(chǎn)生一個問題q={q1,q2,…,qm},其中m代表問題中第m個字。通過產(chǎn)生一個問題qy就能獲得一個三元組(qy,xstart,end,X),也就是先前定義的三元組(QUESTION,ANSWER,CONTEXT)。由于構(gòu)建了關(guān)于詞組先驗(yàn)知識的問題,生成問題的內(nèi)容對最后的結(jié)果有一定影響。Li等[22]采用基于規(guī)則的過程來構(gòu)建問題。在本文中,采用問句和詞定義的方式來構(gòu)建問題。詞定義表示為詞概念的描述,它描述得盡可能通用、精準(zhǔn)且沒有歧義。兩種問題的構(gòu)建方式如表1所示。
表1 問題的構(gòu)建方式
問題內(nèi)容構(gòu)建的不同,與文本拼接輸入模型時會帶有不同的先驗(yàn)知識,從而對最后的預(yù)測結(jié)果產(chǎn)生一定的影響,如圖1所示。本文給定文本“學(xué)生會組織義演活動,他馬上從南京市長江大橋過來”。由于詞定義構(gòu)建的問題內(nèi)容相較于問句式產(chǎn)生的輸入特征更加豐富,使得對“學(xué)生會”“南京市長江大橋”上分詞更加準(zhǔn)確。
圖1 不同問題內(nèi)容構(gòu)建對分詞結(jié)果的影響
機(jī)器閱讀理解分詞模型結(jié)構(gòu)如圖2所示。在BERT預(yù)訓(xùn)練模型的基礎(chǔ)上,加入已構(gòu)建問題詞組的先驗(yàn)知識,輸入BERT編碼器后得到隱藏層特征,最后通過解析特征輸出結(jié)果。
圖2 機(jī)器閱讀理解分詞模型
輸入包含了問題和文本兩個部分,通過BERT預(yù)訓(xùn)練模型獲得隱藏層表征矩陣
(2)
式中:f為BERT編碼函數(shù);Q為問題信息;C為文本信息;E為BERT編碼器輸出的表征矩陣。
通過多層感知向量機(jī)(MLP)[26]得到預(yù)測的詞組索引。在MLP中,獲得句子中每個字是詞組的開始和結(jié)束索引的概率
(3)
式中Tstart和Tend是學(xué)習(xí)權(quán)重。對Pstart和Pend每一行使用arg max函數(shù),得到預(yù)測的每個詞組的開始和結(jié)束索引
(4)
Pistart,jend=sigmoid(mconcat(Eistart,Ejend))
(5)
式中m是學(xué)習(xí)權(quán)重。將獲得的結(jié)果合并得到范圍概率分布矩陣
式中pij表示句中索引i到索引j組成詞組的概率。最后,通過人工設(shè)定閾值,輸出匹配的詞組結(jié)果。
盡管機(jī)器閱讀理解模型通過編碼問題信息豐富了輸入特征,但在數(shù)據(jù)集中存在著很多易分類樣本和難分類樣本。這使得難易樣本之間存在不平衡,從而降低了分詞的準(zhǔn)確度。為了解決上述問題,本文改進(jìn)了交叉熵?fù)p失函數(shù)
(6)
式中:y∈{-1,1}是一個真實(shí)類;p∈[0,1]是模型對標(biāo)簽為y=1的類的估計概率。交叉熵函數(shù)在機(jī)器閱讀理解模型使用為
(7)
式中Ystart,end表示每個起始索引的真實(shí)標(biāo)簽??偟膿p失函數(shù)為上述3個損失函數(shù)之和。然而,即使是容易識別的樣本也會因?yàn)榻徊骒負(fù)p失而遭受非顯著程度的損失。這些微小的損失值在大量容易識別的樣本中匯總起來,可以淹沒稀有類。通常,在樣本不平衡問題上,普遍存在著的是正負(fù)樣本不平衡,即正(負(fù))例太多、負(fù)(正)例太少。一個解決正負(fù)類別不平衡的常用方法是為類別引入一個權(quán)重因子α∈[0,1][27]。最后,權(quán)重之和重寫為
L=αtLstart+βtLend+γtLspan
(8)
在本文實(shí)驗(yàn)中,訓(xùn)練機(jī)器閱讀理解中文分詞模型時會遇到普遍不平衡現(xiàn)象壓倒了交叉熵?fù)p失。易分類樣本占了損失值的大部分,并主導(dǎo)了梯度。盡管αt、βt、γt能夠平衡正負(fù)樣本不平衡,但是無法平衡難易樣本。因此,需要降低易分類樣本權(quán)重并關(guān)注難分類樣本。本文借鑒目標(biāo)檢測中平衡正負(fù)難易樣本的方法,對交叉熵函數(shù)引入一個平滑因子[23]
(9)
式中θ≥0是關(guān)注度參數(shù)。因此,定義新的損失函數(shù)
F(p,y)=ptg(p,y)
(10)
在式(10)中可以通過參數(shù)θ來平滑地調(diào)整易分類樣本的損失權(quán)重。例如,在θ=2和樣本概率p=0.9時,可計算出與沒有平滑因子相比,這個樣本對損失的貢獻(xiàn)權(quán)重降低為原來的1%。在p=0.1時,這個樣本顯然是難分類樣本,計算出的平滑因子要比易分類樣本要高,意味著模型在梯度更新過程中應(yīng)該更加關(guān)注這個樣本。合并式(7)~(10),得到最終的損失函數(shù)
L=αtF(Pstart,Ystart)+βtF(Pend,Yend)+
γtF(Pstart,end,Ystart,end)
(11)
通過改進(jìn)交叉熵函數(shù)緩解了難易樣本間的不平衡問題。
進(jìn)行基于機(jī)器閱讀理解模型的中文分詞任務(wù),實(shí)驗(yàn)所用數(shù)據(jù)集來自Bakeoff2005語料庫中的4個公共數(shù)據(jù)集PKU、MSRA、CITYU、AS。因機(jī)器閱讀理解任務(wù)不同于序列標(biāo)注任務(wù),需將原本的訓(xùn)練集和測試集轉(zhuǎn)換成MRC所需格式(MRC所用訓(xùn)練集和測試集均與原數(shù)據(jù)集相同),轉(zhuǎn)換后數(shù)據(jù)集樣本數(shù)詳細(xì)信息如表2所示,表中顯示了未登錄詞(out of vocabulary,OOV)在測試集中的比例。
表2 訓(xùn)練集、測試集和OOV樣本數(shù)的統(tǒng)計信息
實(shí)驗(yàn)采用精準(zhǔn)率P、召回率R、F1值為評測指標(biāo),其中主要以F1值為主要評測指標(biāo)。P、R、F1值的計算公式分別為
(12)
(13)
(14)
式中:Wc為正確分詞樣本數(shù);Wa為全部樣本數(shù);Wt為測試集中正確的樣本數(shù)。
未登錄詞是指已知詞典中不存在的新詞,識別出未登錄詞也是評價中文分詞模型性能優(yōu)劣的重要指標(biāo)之一。未登錄詞召回率計算公式為
(15)
式中:Ws為數(shù)據(jù)集中正確的分詞答案;Wp為模型預(yù)測分詞的結(jié)果;V(Ws)為Ws中的詞組未在詞典中出現(xiàn)的詞數(shù)。
超參數(shù)的選擇對模型訓(xùn)練結(jié)果有很大影響,超參數(shù)設(shè)計如下:優(yōu)化算法使用Adam,初始學(xué)習(xí)率為0.000 05,以0.05速度進(jìn)行衰減;每個batch_size為16,Dropout為0.2,迭代20輪;概率分布矩陣閾值為0.5。本文選擇BERT中的base版本。
將本文模型與中文分詞常用的經(jīng)典模型CRF、LSTM、ELMo、BERT以及近年來其他中文分詞模型等進(jìn)行實(shí)驗(yàn)對比,結(jié)果如表3所示。
表3 中文分詞模型實(shí)驗(yàn)結(jié)果對比
從表3可以看出,本文模型盡管在PKU數(shù)據(jù)集上效果略差,但與近年深度學(xué)習(xí)的中文分詞模型相比還是取得了不錯的結(jié)果。這主要緣于以下3點(diǎn)。一是本文模型在構(gòu)建時區(qū)別于序列標(biāo)注任務(wù),將模型的構(gòu)建分為3個步驟:首先,將序列標(biāo)注數(shù)據(jù)集格式轉(zhuǎn)換成機(jī)器閱讀理解格式;其次,構(gòu)建問題信息以豐富輸入特征;最后,改進(jìn)損失函數(shù)緩解難易樣本不平衡,從而提高模型的性能。二是問題內(nèi)容構(gòu)建上采用詞定義的方式,比問句式所獲得的輸入特征要更加豐富。三是本文模型適用于中文分詞中結(jié)構(gòu)明確、詞組邊界清晰、存在歧義詞等特點(diǎn)的特定領(lǐng)域數(shù)據(jù)。
為驗(yàn)證改進(jìn)損失函數(shù)對于平衡難易樣本的有效性,改變改進(jìn)損失中的參數(shù)θ進(jìn)行實(shí)驗(yàn),結(jié)果如表4所示。
表4 不同θ下的實(shí)驗(yàn)結(jié)果對比
當(dāng)θ=0時,交叉熵?fù)p失函數(shù)與改進(jìn)的損失函數(shù)相等。從表4可以看出,相比于不加平滑因子,加入平滑因子后性能都有提升。在PKU、MSRA、CITYU、AS數(shù)據(jù)集上,F1分別提升了1.46%、0.89%、0.7%、1.04%。式(9)以及實(shí)驗(yàn)結(jié)果表明,當(dāng)θ=1時,模型對易分類樣本的損失抑制和對難分類樣本關(guān)注度變化較小,使得在緩解難易樣本不平衡上效果較弱。θ=2時模型性能最好。這是因?yàn)棣?2時,本文模型能夠較好地抑制易分類樣本損失和關(guān)注難分類樣本。但是,當(dāng)θ=5時,過度的抑制易分類樣本損失和關(guān)注難分類樣本,使得模型性能反而下降。這是因?yàn)檫^度抑制易分類樣本損失反而會造成模型對易分類樣本識別錯誤。若在模型已經(jīng)收斂的情況下去過度關(guān)注那些非常難分類的樣本,也會使模型產(chǎn)生誤判。上述兩種情況會導(dǎo)致模型的準(zhǔn)確度降低。
未登錄詞是影響中文分詞準(zhǔn)確性的關(guān)鍵問題之一。為驗(yàn)證閱讀理解分詞模型在OOV上的表現(xiàn),對比了閱讀理解模型和表3中的經(jīng)典模型在OOV上的性能,結(jié)果如表5所示。可以看出,本文方法在OOV識別效果上均優(yōu)于經(jīng)典模型。其原因在于:①大規(guī)模預(yù)訓(xùn)練模型BERT通過海量數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練,掌握更好的通用語言能力,下游任務(wù)只需微調(diào)即可獲得優(yōu)異性能;②OOV中也包含歧義詞和難分類樣本。本文在預(yù)訓(xùn)練模型BERT基礎(chǔ)上豐富輸入特征和改進(jìn)損失函數(shù),在提高歧義詞識別的基礎(chǔ)上,也增強(qiáng)了OOV的識別。盡管如此,由于新詞的不斷出現(xiàn),中文分詞中OOV的識別仍具挑戰(zhàn)性。
表5 不同模型的OOV召回率實(shí)驗(yàn)結(jié)果對比
在對實(shí)驗(yàn)過程進(jìn)一步分析后,發(fā)現(xiàn)本文方法在樣本數(shù)較少的情況下也呈現(xiàn)出不錯的結(jié)果。本文將4個公共數(shù)據(jù)集按10%、20%、40%、80%、100%的比例劃分訓(xùn)練集,測試集保持不變,實(shí)驗(yàn)結(jié)果如圖3所示??梢钥闯?4個公共數(shù)據(jù)集按比例劃分訓(xùn)練集,送入模型訓(xùn)練20個epoch后,在測試集上得到的實(shí)驗(yàn)結(jié)果相差不大;隨著訓(xùn)練集規(guī)模的增大,實(shí)驗(yàn)結(jié)果提升較小;本文提出的機(jī)器閱讀理解模型能夠在樣本數(shù)較少的情況下,達(dá)到較好的中文分詞結(jié)果。
(a)PKU數(shù)據(jù)集
最后,對本文模型進(jìn)行消融實(shí)驗(yàn)分析。表6對原始MRC方法[21]和本文方法進(jìn)行了實(shí)驗(yàn)對比,并在問題信息構(gòu)建上采用了表1中的兩種方式。
從表6可以看出,改進(jìn)損失函數(shù)和問題信息構(gòu)建的不同會帶來明顯的提升。在PKU、MSRA、CITYU、AS數(shù)據(jù)集上,比原始MRC方法[21]分別提升了1.52%、1.05%、0.91%、1.29%。由此說明對基礎(chǔ)的MRC模型改進(jìn)損失函數(shù)后,能更好地緩解難易樣本的不平衡。在問題信息構(gòu)建上,詞定義的方式比問句的方式能帶來更加豐富的特征,使得模型在4個數(shù)據(jù)集上都獲得了一定的提升。
表6 消融實(shí)驗(yàn)結(jié)果
綜上所述可知,本文提出的基于機(jī)器閱讀理解的中文分詞方法可以有效解決中文分詞領(lǐng)域的分詞問題。
本文提出了一種機(jī)器閱讀理解模型的中文分詞方法,解決了序列標(biāo)注模型很難獲取句子長距離依賴導(dǎo)致輸入特征使用不充分、邊界樣本少導(dǎo)致數(shù)據(jù)不平衡問題。本文將序列標(biāo)注任務(wù)轉(zhuǎn)換為機(jī)器閱讀理解任務(wù)并改進(jìn)損失函數(shù),進(jìn)而有效地增強(qiáng)輸入特征使用和緩解數(shù)據(jù)不平衡。實(shí)驗(yàn)結(jié)果表明,本文提出的方法相比于序列標(biāo)注模型的中文分詞方法具有明顯優(yōu)勢。
本文是機(jī)器閱讀理解模型在中文分詞上的初步探索,該方法還有進(jìn)一步改進(jìn)的空間。在下一步工作中,可以使用不同的預(yù)訓(xùn)練模型和改進(jìn)注意力機(jī)制來更好地捕獲上下文信息。通過探索新的模型架構(gòu)、設(shè)計新的問題構(gòu)建方式,進(jìn)一步提升機(jī)器閱讀理解模型在中文分詞上的應(yīng)用。