李偉康,李 煒,吳云芳
(北京大學(xué) 計算語言學(xué)教育部重點(diǎn)實驗室,北京 100871)
近年來,逐漸興起的深度學(xué)習(xí)技術(shù)越來越多地被用于自然語言處理的各個領(lǐng)域。為了更好地表示自然語言,基于深度學(xué)習(xí)的多種模型也被提出。這些模型大多將分詞工具得到的一個詞作為句子的一個語義單元進(jìn)行分析。對于英語來說,它的最小語義單元是單詞,這樣的方法比較合適。但對于漢語來說,這樣的做法似乎并不合適。首先,由分詞工具得到的中文分詞結(jié)果并非完全正確,不同的分詞工具的分詞結(jié)果也不同;其次,直接用一個詞作為語義單元進(jìn)行表示,也忽略了詞內(nèi)字間的信息。另一方面,漢語中單獨(dú)的一個字歧義性較大,可能是多個詞的組成,若用單獨(dú)的字作為一個語義單元進(jìn)行表示,不能準(zhǔn)確地表示當(dāng)前語境的信息。
基于文檔的問答系統(tǒng)(DBQA)是自然語言處理的一個熱門研究領(lǐng)域,表1給出了一個例子。
表 1 一個基于文檔的問答例子
從傳統(tǒng)的機(jī)器學(xué)習(xí)方法到深度學(xué)習(xí)方法,研究者進(jìn)行了大量的研究,提出了許多有效的模型。這些模型大多集中于算法的優(yōu)化、模型本身的結(jié)構(gòu)構(gòu)建等,很少對語言表示的粒度進(jìn)行分析和研究。本文在中文問答系統(tǒng)上進(jìn)行了基于深度學(xué)習(xí)的語言表示的粒度分析和研究,即如何將字和詞的信息結(jié)合起來,以期獲得更好的語言表示,并在基于文檔的問答系統(tǒng)上獲得優(yōu)良的性能。
本文的主要貢獻(xiàn)有: ①探究了深度學(xué)習(xí)方法中漢語字和詞信息的結(jié)合方式;②在中文問答領(lǐng)域?qū)ι疃葘W(xué)習(xí)方法中字和詞信息的結(jié)合方式的有效性進(jìn)行了驗證。
本文后續(xù)部分的結(jié)構(gòu)如下: 第一部分對相關(guān)領(lǐng)域的工作進(jìn)行了介紹;第二部分介紹了本文采用的面向文檔問答系統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型,第三部分詳細(xì)探究字向量和詞向量的多種結(jié)合方式;第四部分通過實驗證明了該方法的有效性并進(jìn)行了實驗分析;最后一部分總結(jié)了本文工作并提出了可改進(jìn)的幾個方面。
隨著互聯(lián)網(wǎng)的發(fā)展,自然語言的處理顯得愈發(fā)重要。目前逐漸興起的基于文檔的問答系統(tǒng)就是自然語言處理的一個研究領(lǐng)域?;谖臋n的問答系統(tǒng)可以快速地回答用戶基于一篇文章請求的問題,類似于中文文章的閱讀理解,具有十分廣泛的應(yīng)用前景。深度學(xué)習(xí)是目前蓬勃發(fā)展的一個領(lǐng)域,已在語音和圖像領(lǐng)域取得巨大進(jìn)展,在自然語言處理領(lǐng)域近些年也在迅猛發(fā)展。
基于文檔的問答系統(tǒng)是根據(jù)問題從文檔里抽出相關(guān)的句子或詞組作為該問題的答案,本文提到的場景為句子層面。這一問題本質(zhì)上是探究兩個句子的相關(guān)性,即通過問題和文檔句子本身的相似性來進(jìn)行答案的選擇。對于該類問題,深度學(xué)習(xí)中采用卷積神經(jīng)網(wǎng)絡(luò)(CNN)[1]或循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)[2]將問題和文檔的句子進(jìn)行編碼表示,然后判斷文檔中的每個句子是否和問題相關(guān)。其中常用的計算相似度的方法為夾角余弦[3]、對應(yīng)元素相乘[4]及張量運(yùn)算[5]。對文檔中句子的簡單編碼表示,忽略了問題和句子的重點(diǎn)對應(yīng)詞信息。為此,前人提出注意力機(jī)制(attentive network)對句子進(jìn)行編碼,即在編碼句子時考慮問題本身的信息[6]。為了將文檔中句子上下文的信息融于當(dāng)前句子,前人通過記憶網(wǎng)絡(luò)來解決問題匹配時的信息缺失[7]。compare-aggregate網(wǎng)絡(luò)[8]借助句子中詞層面的信息對句子本身進(jìn)行信息的整合和選擇。
利用深度學(xué)習(xí)解決漢語的自然語言問題時,大多數(shù)模型往往將詞作為一個語義單元,并通過word2vec方法[9]或GloVe方法[10]訓(xùn)練得到詞向量。由于中文本身是一種象形文字,一些學(xué)者試圖通過研究詞本身的形態(tài)特征來獲得詞向量表示。文獻(xiàn) [11]提出了一種基于元素的神經(jīng)語言模型,將每一個詞視作一種特殊的元素詞向量。 文獻(xiàn)[12]提出通過循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)提取詞的形態(tài)語義學(xué)特征,進(jìn)而獲得詞向量的表示。除了中文詞本身的形態(tài)特征之外,詞義消歧也得到了許多學(xué)者的關(guān)注。 文獻(xiàn)[13]提出對一個詞進(jìn)行多種詞向量的訓(xùn)練,以得到不同語義下一個詞的詞向量表示。為了利用詞內(nèi)部和外部的信息,文獻(xiàn)[14]提出了一種聯(lián)合學(xué)習(xí)詞向量的方法。前人的大多數(shù)方法重點(diǎn)考慮如何融合詞的內(nèi)部和外部信息來構(gòu)建詞本身的信息表示,很少關(guān)注字向量和詞向量如何結(jié)合。
本文著重探索神經(jīng)網(wǎng)絡(luò)框架下漢語字向量和詞向量的有效結(jié)合方式,為了驗證相關(guān)結(jié)合方式的有效性,我們選取了目前研究較為火熱的基于文檔問答系統(tǒng)的這一任務(wù)。本文采用了一種性能優(yōu)良的前人模型,并結(jié)合該任務(wù)的特點(diǎn)進(jìn)行了模型改進(jìn)。
在英文WikiQA 數(shù)據(jù)[15]上,目前效果較好的是compare-aggregate模型[16],這是一種解決兩個句子相似度匹配問題的方法。它借助注意力機(jī)制計算句子間的關(guān)聯(lián)信息,并通過信息融合(compare)過程充分挖掘這些關(guān)鍵詞的信息,進(jìn)而利用信息整合(aggregate)過程將得到的關(guān)鍵詞信息進(jìn)行整合。compare-aggregate模型[16]由以下四部分組成。
(1) 預(yù)處理
通過預(yù)處理獲得包含上下文信息的問句Q和答案句子A的表示,句子中的每個詞將得到一個全新的詞向量表示。預(yù)處理過程采用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)進(jìn)行,這里使用的是一種LSTM/GRU的變種,如式(1)~(2)所示。
其中,⊙表示矩陣中對應(yīng)元素相乘的操作,?表示外積的操作,wi、wu、bi、bu是神經(jīng)網(wǎng)絡(luò)中需要學(xué)習(xí)的參數(shù)。
(2) 注意力機(jī)制
這里采用標(biāo)準(zhǔn)的注意力機(jī)制,答案中的每個詞的隱層向量表示hi是該位置的詞向量ai對問題中各個詞向量qj的加權(quán)表示。i、j分別表示答案和問題中各個詞的位置。計算如式(3)~(4)所示。
其中,wg、bg表示網(wǎng)絡(luò)中需要訓(xùn)練的參數(shù)。
(3) 信息融合
通過一些操作將答案中的一個詞的詞向量表示ai和經(jīng)過注意力機(jī)制得到的向量hi進(jìn)行融合,得到最后的向量表示ti。融合的操作有: 前饋神經(jīng)網(wǎng)絡(luò)的連接、兩個向量的張量計算、兩個向量的夾角余弦相似度或歐氏距離、兩個向量相減或相乘等。本文采用向量相乘方式進(jìn)行信息融合。
(4) 信息整合
利用卷積神經(jīng)網(wǎng)絡(luò)(CNN)提取信息融合過程得到的向量ti的特征向量,并將其用于最后的分類運(yùn)算。
對于基于文檔的問答,原有模型未考慮文檔中句子間的上下文信息。本文進(jìn)行了改進(jìn),通過循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)對篇章中的每個句子再次進(jìn)行編碼表示,以期將更多的上下文信息融合于當(dāng)前句子中。
每個已經(jīng)被編碼成為固定長度的單個句子向量會被作為輸入加入到雙向循環(huán)神經(jīng)網(wǎng)絡(luò)中。上下文信息通過隱層之間的聯(lián)系獲得共享,從而使得文檔中的每個句子不再只是作為單獨(dú)的句子單元呈現(xiàn),而是通過上下文連接起來。我們將RNN的隱層節(jié)點(diǎn)作為對句子的表示,并在此基礎(chǔ)上進(jìn)行預(yù)測。
此外,本文將信息融合過程中的卷積神經(jīng)網(wǎng)絡(luò)CNN改為了循環(huán)神經(jīng)網(wǎng)絡(luò)RNN,以期獲取更豐富的序列特征。
本文所采用的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖 1 本文采用的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
這里,aM表示答案中的一個語義單元,qN表示問題中的一個語義單元,M和N分別表示答案和問題中語義單元的個數(shù)。圖中標(biāo)有“Combination of Character and word embeddings”的實線框右邊部分即為我們對字向量和詞向量如何進(jìn)行結(jié)合的探究,連續(xù)的矩形框表示向量。下一節(jié)將對此進(jìn)行詳細(xì)分析和介紹。
基于中文語言本身的特點(diǎn),本文將從兩個方向探究字信息和詞信息的結(jié)合方式: 一是以詞作為最小語義單元,考慮如何通過詞內(nèi)的字的信息得到該詞語義單元的表示,或?qū)⑼ㄟ^字得到的詞的表示和原始詞的表示進(jìn)行結(jié)合;另一個方向是以字作為最小語義單元,考慮如何將句子中某字所在的詞的信息和該字的信息進(jìn)行結(jié)合。
(1) 字向量間取平均:
(2) 字向量間取最大值:
(3) 字向量間取最小值:
(4) 字向量間并連:
(5) 利用前饋神經(jīng)網(wǎng)絡(luò)對字向量進(jìn)行加權(quán)表示:
(6) 利用卷積神經(jīng)網(wǎng)絡(luò)(CNN)提取字向量的特征:
(7) 利用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)構(gòu)建字向量的特征:
其中,i表示一個句子中詞的位置,j表示一個詞中字的位置,n表示一個詞中字的個數(shù)。w、b表示神經(jīng)網(wǎng)絡(luò)中需要學(xué)習(xí)的參數(shù)。
(1) 詞向量和詞向量相加:
(2) 詞向量和詞向量相乘:
(3) 詞向量和詞向量并連:
(1) 字向量和詞向量相加:
(2) 字向量和詞向量相乘:
(3) 字向量和詞向量并連:
(4) 利用前饋神經(jīng)網(wǎng)絡(luò)對字向量和詞向量進(jìn)行加權(quán)表示:
(5) 利用張量對字向量和詞向量進(jìn)行抽象表示:
本文的實驗采用了NLPCC 2016的DBQA數(shù)據(jù)[17]。該數(shù)據(jù)的格式為: 對于一篇文檔,給出一個問題,訓(xùn)練數(shù)據(jù)中文檔的每個句子和問題都進(jìn)行了人工的標(biāo)記,若標(biāo)記為1,表示該句子和問題相關(guān),可以作為該問題的回答;若標(biāo)記為0,表示該句子與問題無關(guān)。測試數(shù)據(jù)需要系統(tǒng)給出問題和文檔的每個句子是否相關(guān)的判斷。由于該數(shù)據(jù)集無開發(fā)集,本文隨機(jī)從訓(xùn)練數(shù)據(jù)集拿出一部分作為開發(fā)集進(jìn)行參數(shù)調(diào)整。數(shù)據(jù)分布如表2所示。
表 2 實驗數(shù)據(jù)說明
由于句子長度不同,無論是以詞作為語義單元還是以字作為語義單元,我們均將句子長度(即句中語義單元的個數(shù))固定為相同,根據(jù)句子長度的分布,該值設(shè)為200。另外,組成一個詞的字的個數(shù)不同,本文均將字的個數(shù)設(shè)定為4。本文借助jieba分詞工具[18]進(jìn)行分詞,利用word2vec訓(xùn)練方法在中文語料上訓(xùn)練得到字向量表和詞向量表。訓(xùn)練得到的字向量表中字的個數(shù)為8 009,詞向量表中詞的個數(shù)為316 056,向量的維度均為300維。
本文的實驗代碼通過Python及TensorFlow實現(xiàn)。神經(jīng)網(wǎng)絡(luò)模型中,學(xué)習(xí)方法采用Adam,學(xué)習(xí)率為0.001。RNN的內(nèi)核采用LSTM結(jié)構(gòu)。實驗中批處理的“問題-答案”數(shù)為10,經(jīng)過對訓(xùn)練數(shù)據(jù)的若干輪訓(xùn)練得到最佳模型,并在測試數(shù)據(jù)上進(jìn)行測試。
答案選擇的任務(wù)最終通過打分排序的方法進(jìn)行處理。因此,評測時我們采用在信息檢索領(lǐng)域廣泛使用的指標(biāo),包括MAP、MRR、Precision、Recall、F1。
(1) 模型的結(jié)果
我們對比了本文融合上下文信息的改進(jìn)模型和基礎(chǔ)模型在以單獨(dú)的詞向量作為語義表示時的實驗結(jié)果,并基于改進(jìn)模型對單獨(dú)的詞向量表示和單獨(dú)的字向量表示進(jìn)行了性能對比。結(jié)果如表3所示。
表3 模型結(jié)果對比
從以上實驗結(jié)果可知,以單獨(dú)詞向量作為語義表示時,本文的改進(jìn)模型比基礎(chǔ)模型在關(guān)鍵指標(biāo)MAP、MRR、F1上表現(xiàn)優(yōu)良,證明句子上下文信息可以幫助捕捉正確答案。令人驚喜的是,以字向量作為語義表示時的效果在各項指標(biāo)上均顯著優(yōu)于詞向量,在關(guān)鍵指標(biāo)MAP上提高了5.45%。這一方面是因為漢語的字確實攜帶了重要的語義信息,另一方面是因為我們處理的語料大多來自網(wǎng)絡(luò)文本,語言使用不太規(guī)范,自動分詞器會有很多分詞錯誤,影響了詞向量的準(zhǔn)確度。同時,由于字的個數(shù)遠(yuǎn)遠(yuǎn)小于詞表的個數(shù) (8 009 vs. 316 056),基于字的模型速度也遠(yuǎn)遠(yuǎn)高于基于詞的模型。
(2) 以詞作為語義單元的結(jié)果
首先,我們通過詞內(nèi)字的信息來計算得到詞的信息,實驗結(jié)果如表4所示。
表 4 用字的信息計算得到詞的向量表示
從以上實驗結(jié)果可知,以詞作為語義單元時,通過有效地結(jié)合詞內(nèi)字的字向量來計算詞的信息要優(yōu)于詞本身的詞向量。其中,淺層結(jié)合方式中并連操作(Char-Concat)和取平均操作(Char-Mean)均比原詞的詞向量要好,深層結(jié)合方式中CNN操作和RNN操作也比原詞的詞向量要好。表現(xiàn)最好的是RNN操作,較詞本身向量提升了3.49%。但對比表3和表4可知,用字信息計算得到詞的向量表示仍然不敵單獨(dú)基于字的模型。
其次,我們用較好的詞內(nèi)字向量的結(jié)合方式(淺層結(jié)合中的并連操作及深層結(jié)合中的RNN操作)計算的詞向量和原詞的詞向量進(jìn)行結(jié)合,實驗結(jié)果如表5所示。
表 5 以詞作為語義單元的字結(jié)合詞的實驗結(jié)果
從以上實驗結(jié)果可知,通過詞內(nèi)字的字向量和詞向量的并連操作得到該詞的最終表示比原詞的詞向量要好。其中,詞內(nèi)字的結(jié)合方式為并連時,比單獨(dú)以詞向量作為表示時的結(jié)果提升了6.18%;詞內(nèi)字的結(jié)合方式為RNN時,效果提升了7.01%。對比表3和表5可知,用字的信息計算得到詞的向量表示,再與原詞向量結(jié)合,其性能超越了單獨(dú)基于字的模型。
(3) 以字作為語義單元的結(jié)果
進(jìn)一步,我們將以字作為語義單元,對字向量和詞向量的結(jié)合方式進(jìn)行探究,實驗結(jié)果如表6所示。
表 6 以字作為語義單元的實驗結(jié)果
從以上實驗結(jié)果分析可知,通過字的字向量和其所在詞的詞向量的結(jié)合,可有效提升單獨(dú)字向量的表示。這是因為,漢語單字的意義歧義性和模糊性較大,而加入詞層面信息可以有效地消解部分歧義。淺層結(jié)合方式中并連操作(Char_Concat_Word)和相加操作(Char_Plus_Word)是有效的,相乘操作(Char_Multi_Word)是無效的;深層結(jié)合方式中的前饋神經(jīng)網(wǎng)絡(luò)連接(Char_FF_Word)的操作是有效的,張量操作是無效的。其中,淺層結(jié)合中字向量和詞向量的并連操作的效果最好,效果較單獨(dú)字向量提升了2.73%。
目前,在NLPCC 2016的DBQA評測中,表現(xiàn)最好的兩個結(jié)果為文獻(xiàn)[18]和文獻(xiàn)[19],表7為本文最好的結(jié)果和當(dāng)前最好的結(jié)果的對比。
表 7 與前人結(jié)果的對比
續(xù)表
從以上的實驗結(jié)果知,我們最好的結(jié)果在該任務(wù)上的表現(xiàn)非常滿意。由于NLPCC 2016的DBQA為評測任務(wù),參賽隊伍可借助多種資源提高實驗結(jié)果。 文獻(xiàn)[18]借助外部知識中文維基百科進(jìn)行詞向量的訓(xùn)練,并引入詞共現(xiàn)的外部特征,且其論文中指出這些操作對其最終結(jié)果有很重要的影響。文獻(xiàn)[19]則通過從各個維度提取特征的特征工程方法進(jìn)行系統(tǒng)構(gòu)建。我們的方法僅僅依賴訓(xùn)練數(shù)據(jù)本身,并未刻意進(jìn)行特征的篩選和集成,仍取得了相媲美的結(jié)果。
本文探究了深度學(xué)習(xí)中漢語字向量和詞向量的結(jié)合方式,發(fā)現(xiàn)對字向量和詞向量的有效結(jié)合可提高基礎(chǔ)語義單元的信息表示,并對基于文檔的問答系統(tǒng)有很好的性能提升。
通過字向量和詞向量的結(jié)合得到的新的向量表示比單獨(dú)的字向量或詞向量的效果好。在以詞為語義單元時,通過對詞內(nèi)字進(jìn)行RNN編碼表示的新詞向量和原詞向量并連的結(jié)合方式最為有效,效果最好;在以字為語義單元時,通過字向量和其所在詞的詞向量的并連結(jié)合方式最為有效,效果最好。此外,本文以字為語義單元通過字向量和詞向量的有效結(jié)合使得我們在基于文檔的問答(DBQA)問題中取得了滿意的結(jié)果。
雖然本文從兩個方面多個角度對字向量和詞向量的結(jié)合方式進(jìn)行了探究,但并未考慮中文的句法結(jié)構(gòu)信息。后續(xù)的研究中可嘗試在結(jié)合字向量和詞向量時考慮句法結(jié)構(gòu)信息,深入挖掘中文語言本身的信息。另外,本文提出的方法在處理句子間共現(xiàn)詞較多時表現(xiàn)并不好,后續(xù)的工作可考慮將句間淺層語義特征融合于深度學(xué)習(xí)的深層表示中。
[1] Feng M, Xiang B, Glass M R, et al. Applying deep learning to answer selection: A study and an open task[C]//Proceeding of Automatic Speech Recognition and Understanding (ASRU), 2015 IEEE Workshop on. IEEE, 2015: 813-820.
[2] Tan M, Santos C, Xiang B, et al. LSTM-based deep learning models for non-factoid answer selection[J]. arXiv preprint arXiv:1511.04108, 2015.
[3] Tan M, Dos Santos C, Xiang B, et al. Improved representation learning for question answer matching[C]//Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics, 2016.
[4] Tai K S, Socher R, Manning C D. Improved semantic representations from tree-structured long short-term memory networks[J]. arXiv preprint arXiv:1503.00075, 2015.
[5] Bowman S R, Angeli G, Potts C, et al. A large annotated corpus for learning natural language inference[J]. arXiv preprint arXiv:1508.05326, 2015.
[6] Seo M, Kembhavi A, Farhadi A, et al. Bidirectional attention flow for machine comprehension[J]. arXiv preprint arXiv:1611.01603, 2016.
[7] Sukhbaatar S, Weston J, Fergus R. End-to-end memory networks[C]//Advances in Neural Information processing systems, 2015: 2440-2448.
[8] Wang S, Jiang J. Learning natural language inference with LSTM[J]. arXiv preprint arXiv:1512.08849, 2015.
[9] Goldberg Y, Levy O. word2vec explained: Deriving mikolov et al.’s negative-sampling word-embedding method[J]. arXiv preprint arXiv:1402.3722, 2014.
[10] Pennington J, Socher R, Manning C D. Glove: Global vectors for word representation[C]//EMNLP. 2014, 14: 1532-1543.
[11] Alexandrescu A, Kirchhoff K. Factored neural language models[C]//Proceedings of the Human Language Technology Conference of the NAACL, Companion Volume: Short Papers. Association for Computational Linguistics, 2006: 1-4.
[12] Luong T, Socher R, Manning C D. Better word representations with recursive neural networks for morphology[C]//Proceedings of CoNLL 2013, 2013: 104-113.
[13] Huang E H, Socher R, Manning C D, et al. Improving word representations via global context and multiple word prototypes[C]//Proceedings of the 50th Annual Meeting of the Association for Computational Linguistics: Long Papers-Volume 1. Association for Computational Linguistics, 2012: 873-882.
[14] Chen X, Xu L, Liu Z, et al. Joint learning of character and word embeddings[C]//Proceedings of the 24th International Joint Conference on Artificial Intelligence. 2015.
[15] Yang Y, Yih W, Meek C. WikiQA: A challenge dataset for open-domain question answering[C]//Proceedings of the EMNLP 2015. 2015: 2013-2018.
[16] Wang S, Jiang J. A compare-aggregate model for matching text sequences[J]. arXiv preprint arXiv:1611.01747, 2016.
[17] Duan N. Overview of the NLPCC-ICCPOL 2016 Shared task: open domain Chinese question answering[C]//Proceedings of International Conference on Computer Processing of Oriental Languages. Springer InternationalPublishing, 2016: 942-948.
[18] Sun J. ‘Jieba’Chinese word segmentation tool[CP/OL]. 2012. https://github.com/whtsky/jieba/
[19] Fu J, Qiu X, Huang X. Convolutional deep neural networks for document-based question answering[C]//Proceedings of International Conference on Computer Processing of Oriental Languages. Springer International Publishing, 2016: 790-797.
[20] Wu F, Yang M, Zhao T, et al. A hybrid approach to DBQA[C]//Proceedings of International Conference on Computer Processing of Oriental Languages. Springer International Publishing, 2016: 926-933.