劉鵬,周安民
(四川大學(xué)電子信息學(xué)院,成都 610065)
問答系統(tǒng)(Question Answering,QA)是目前自然語言處理領(lǐng)域中的研究熱點(diǎn)之一,它既能讓用戶提問,又能為用戶返回簡(jiǎn)潔、準(zhǔn)確的答案,但這些問答系統(tǒng)也存在著某些問題缺少回答或回答質(zhì)量不高的問題。為了充分利用網(wǎng)絡(luò)問答資源,豐富和擴(kuò)展中文問題的回答,嘗試通過融合中英文問答社區(qū)的問題、答案的方法解決上述問題。在融合中英文問答社區(qū)問題的過程中,相似問句查找是一項(xiàng)基本而核心的工作,由于其基礎(chǔ)工作的地位,決定了相似句子查找的重要性,它的研究受到人們的廣泛關(guān)注。但問句相似度研究多集中在單語下,隨著問句相似研究的不斷深入,跨語言問句研究越來越受到關(guān)注。Sacaleanu等人[6]對(duì)印地語問題和英文問題進(jìn)行研究、Mitamura等人[7]對(duì)日文問句和中文問句進(jìn)行研究。這些方法大都基于問句直接翻譯或者對(duì)問句關(guān)鍵詞做同義詞林處理,將跨語言相似問句查找轉(zhuǎn)化為同一語言下的相似問句查找。另外基于平行/可比語料庫的方法也多有應(yīng)用。不同于上述方法,本文提出了一個(gè)基于共享詞嵌入空間的跨語言相似問句挖掘模型,該模型可以將中英文問句轉(zhuǎn)換到共享詞嵌入空間,然后在共享詞嵌入空間通過計(jì)算中英文句子嵌入的余弦值,查找中文和英文信息安全類相似問句。
該模型無需大規(guī)模平行語料庫或同義詞林,而是直接將中、英文映射到兩個(gè)不同的詞嵌入空間,之后通過線性變換將中文詞嵌入空間轉(zhuǎn)換到英文詞嵌入空間,最后在同一詞嵌入空間下進(jìn)行相似度計(jì)算和相似問句查找。Smith等人[10]證明了上述兩個(gè)詞嵌入空間之間的線性變換是正交的,并且可以使用奇異值分解來獲得該變換。本文的主要貢獻(xiàn)如下:
(1)利用FastText對(duì)稀有詞有利和訓(xùn)練速度較快的特點(diǎn),引入國內(nèi)較少使用的fastText進(jìn)行詞嵌入訓(xùn)練。
(2)引入兩種語言的詞嵌入空間可以通過線性變換進(jìn)行同一空間轉(zhuǎn)換的特性,避免了以往跨語言問句分析需要先通過翻譯或同義詞林進(jìn)行同一語言轉(zhuǎn)換的問題。
(3)將原本用于單語言的,根據(jù)句子嵌入內(nèi)積計(jì)算句子相似性用于跨語言句子相似度計(jì)算和相似問句查找。
隨著互聯(lián)網(wǎng)技術(shù)的蓬勃發(fā)展、社區(qū)問答系統(tǒng)在國內(nèi)外獲得了廣泛的應(yīng)用,例如國外的Quora、StackOver-Flow,國內(nèi)的知乎、百度知道等。問答系統(tǒng)的蓬勃發(fā)展也促使了學(xué)者對(duì)相似問句查找的研究。相似問句查找從語言上可大致分為單語言相似問句查找和跨語言(多語言)相似問句查找。
對(duì)于單語言相似問句查找,Lee等人[1]使用信息檢索和自然語言處理中的統(tǒng)計(jì)技術(shù),提出了一種對(duì)現(xiàn)有問題集自動(dòng)構(gòu)建語義相似集合的方法。Song等人[2]運(yùn)用統(tǒng)計(jì)度量和語義信息相結(jié)合的方法,利用動(dòng)態(tài)形成的向量計(jì)算統(tǒng)計(jì)相似度,利用基于WordNet的單詞相似度來計(jì)算語義相似度,最后加權(quán)統(tǒng)計(jì)相似度和語義相似度。在中文相似問句查找上,前人也進(jìn)行了相關(guān)研究。例如,ZHENG Tao-yu等人[3]根據(jù)中文問句的特點(diǎn),基于HowNet計(jì)算單詞的語義相似度。近期的研究,Minaee等人[4]提出了一種基于遞歸神經(jīng)網(wǎng)絡(luò)(RNN)編碼器解碼器的架構(gòu)來測(cè)量句子之間的語義相似性的新框架。Arora等人[5]提出了完全無監(jiān)督的句子嵌入方法來計(jì)算問句相識(shí)度。該方法擊敗了包括RNN和LSTM在內(nèi)的復(fù)雜的有監(jiān)督方法。
對(duì)于跨語言(多語言)相似問句查找,主要方法有將一種語言翻譯后,轉(zhuǎn)化為同一語言下問句相似問題和運(yùn)用同義詞詞林轉(zhuǎn)化為同一語言下問句相似問題。Sacaleanu等人[6]運(yùn)用Google Translate將印地語問題和文章翻譯成英文。Mitamura等人[7]運(yùn)用機(jī)器翻譯將英語問句的關(guān)鍵詞翻譯成日文或中文。Stoyanova等人[9]提出了一種基于WordNet同義詞林的詞語相似度測(cè)量和形態(tài)語義關(guān)系的跨語言識(shí)別方法。Verse等人[8]用擴(kuò)展了WordNet同義詞林的Babel Net同義詞林將隱馬爾科夫模型提取到的問句關(guān)鍵字詞轉(zhuǎn)化成目標(biāo)語言,從而轉(zhuǎn)化雙語空間為通用語義空間。
基于共享詞嵌入空間的跨語言相似問句挖掘模型的主要步驟如圖1所示。該模型首先用fastText預(yù)訓(xùn)練中、英文詞嵌入模型,用中英文詞典結(jié)合預(yù)訓(xùn)練的中、英文詞嵌入模型訓(xùn)練出中文詞嵌入空間轉(zhuǎn)換到英文詞嵌入轉(zhuǎn)換空間的線性轉(zhuǎn)換矩陣。然后分別對(duì)英文問句QE,中文問句QZ做分詞以及fastText處理,生成英文詞嵌入空間和中文詞嵌入空間,通過線性轉(zhuǎn)換矩陣得到共享詞嵌入空間,通過基于SIF的Sentence2Embeddings模型得到在共享詞嵌入空間的英文問句QE和中文問句QZ的句子嵌入,最后通過句子嵌入的余弦相似性計(jì)算中、英文問句的相似性。
fastText(https://github.com/facebookresearch/fast-Text)是Facebook AI Research在16年開源的一個(gè)用于詞向量計(jì)算和文本分類工具。fastText是基于[11-13]等文章所提出算法的實(shí)現(xiàn),針對(duì)變形詞匯表達(dá),線性分類優(yōu)化提供了優(yōu)秀的解決方案。fastText的子詞嵌入在Word2Vec的基礎(chǔ)上,引入了子詞這個(gè)因素,從而使得詞的微變形關(guān)系也能映射到嵌入空間中。在fastText中,每個(gè)詞被看做是N-Gram字母串包。為了區(qū)分前后綴情況,"〈","〉"符號(hào)被加到了詞的前后端。除了詞的子串外,詞本身也被包含進(jìn)了N-Gram字母串包。以where為例,$n=3$的情況下,其子串分別為:
〈wh,whe,her,ere,re〉,以及其本身〈where〉在具體實(shí)現(xiàn)中,fastText用子詞向量的加和平均表示詞向量,提供了skip-gram和cbow兩種模式訓(xùn)練詞嵌入表達(dá)。fastText詞嵌入具有以下優(yōu)勢(shì):
(1)適合大型數(shù)據(jù)并具有高效的訓(xùn)練速度:能夠訓(xùn)練模型“在使用標(biāo)準(zhǔn)多核CPU的情況下10分鐘內(nèi)處理超過10億個(gè)詞匯”,特別是與深度模型對(duì)比,fastText能將訓(xùn)練時(shí)間由數(shù)天縮短到幾秒鐘。
(2)支持多語言表達(dá):利用其語言形態(tài)結(jié)構(gòu),fast-Text能夠被設(shè)計(jì)用來支持包括英語、德語、西班牙語、法語以及捷克語等多種語言。fastText的性能要比時(shí)下流行的Word2Vec工具明顯好上不少,也比其他目前最先進(jìn)的詞態(tài)詞匯表征要好。
學(xué)習(xí)跨語言詞嵌入的方法一般依賴于雙語詞典或平行語料庫,Mikolov等人[14]證明了雙語詞向量可以“離線”獲得。首先獨(dú)立地獲得不同語言的兩組詞向量,然后使用字典訓(xùn)練線性矩陣W將“源”語言的詞向量映射到“目標(biāo)”語言。為此,他們使用已知的n=5000對(duì)單詞的字典{Xi,yi}i∈{1,n},并學(xué)習(xí)源語言空間和目標(biāo)語言空間之間的線性映射W。
其中d代表詞嵌入的維數(shù),Md(R )是d×d的矩陣空間,X和Y是兩個(gè)包含并行詞匯表詞嵌入的大小為d×n的矩陣。
Lample等人[16]認(rèn)為可以在不使用任何平行語料庫的情況下,使用無監(jiān)督的方式,通過對(duì)齊單語詞嵌入空間來構(gòu)建兩種語言之間的雙語詞典。Dinu等人[15]沒有對(duì)Mikolov等人[14]用到的最小二乘法函數(shù)進(jìn)行改進(jìn),而是提出了一種檢索翻譯對(duì)的改進(jìn)方法,提高了英語翻譯成意大利語時(shí)的準(zhǔn)確率。Faruqui等人[17]使用CCA獲得了雙語詞匯向量,并證明了CCA和降維的組合方法提高了單語向量在標(biāo)準(zhǔn)評(píng)估任務(wù)上的表現(xiàn)。Smith等人[10]認(rèn)為任何兩種語言,例如英語、意大利語,對(duì)于大部分英語單詞,都有意大利語能夠表示與其相等或相似的含義。而含義相同的意大利詞A和英語詞B,通過相同的算法和參數(shù)學(xué)習(xí),詞A和詞B有“輪廓相似,夾角隨機(jī)”的詞嵌入。這類似于要求兩個(gè)制圖師繪制如圖2所示的兩張沒有標(biāo)明方向的四川地圖。地圖都是正確的,但是一個(gè)相對(duì)于另一個(gè)旋轉(zhuǎn)未知的角度。制圖師可以獨(dú)立繪制他們的地圖,然后比較兩者;相對(duì)于一個(gè)地圖旋轉(zhuǎn)另一個(gè)地圖,直到主要城市對(duì)齊,并且兩個(gè)地圖的內(nèi)在幾何結(jié)構(gòu)越相似,這種旋轉(zhuǎn)對(duì)齊就越準(zhǔn)確。
Smith等人[10]證明了兩種語言的詞嵌入空間的變換是線性正交的。為了證明詞嵌入空間的映射是線性正交的,定義相似矩陣S=YWXT,X和Y是分別是兩種語言的詞嵌入矩陣,其中每行包含單個(gè)詞的詞嵌入,由小寫的x和y表示。矩陣的元素:
此公式表示評(píng)估源詞 jth和目標(biāo)詞ith之間的相似性,其中W為將源語言映射為目標(biāo)語言的矩陣。相似矩陣列中的最大值給出與特定源詞最相似的目標(biāo)詞,而行中的最大值給出與給定目標(biāo)詞最相似的源詞。使用Q將目標(biāo)詞映射回源詞,定義了另一個(gè)相似矩陣:
上述公式表示評(píng)估源詞 jth和目標(biāo)詞ith之間的相似性,其中Q為將目標(biāo)語言映射回源語言的矩陣。為了保持前后一致,則有 S'=ST,而 S=YWXT,故有Q=WT,即如果W將源語言映射到目標(biāo)語言,則必有WT將目標(biāo)語言映射回源語言。
圖2 兩張大小相同、坐標(biāo)不同的四川地圖
將源詞映射到目標(biāo)語言時(shí),應(yīng)該能夠?qū)⑺成浠卦凑Z言并獲得原始向量。即 x~WTy,y~Wx,故有x~WTWx。該表達(dá)式適用于任何詞嵌入x,所以可得出結(jié)論矩陣W一定是滿足OTO=I的正交矩陣,其中是I是單位矩陣。正交變換保留了矢量范數(shù),因此如果本文將X和Y標(biāo)準(zhǔn)化,則矩陣元素Sij=|yi||Oxj|cos()θij。相似矩陣S=YOXT計(jì)算正交變換O下的所有可能的源詞和目標(biāo)詞對(duì)之間的余弦相似度。
事實(shí)上這種正交轉(zhuǎn)換類似于圖2的旋轉(zhuǎn),它可以使用奇異值分解(SVD)求解,具體方法如下。本文從字典中生成兩個(gè)有序的詞嵌入矩陣X和Y,DD使第ith行的{XD,YD}對(duì)應(yīng)于字典中第ith對(duì)源詞的詞嵌入和目標(biāo)詞的詞嵌入。然后用SVD計(jì)算轉(zhuǎn)換矩陣M:
這一步驟是高效的,因?yàn)镸是與詞嵌入維度相同的正交矩陣。U和V由正交向量列組成,而Σ是包含奇異值的對(duì)角矩陣。本文將成本函數(shù)通過O=UVT最小化,進(jìn)而優(yōu)化相似矩陣:
圖3 詞嵌入應(yīng)用SVD前后對(duì)比圖
以SVD降序的標(biāo)準(zhǔn)返回奇異值。如果對(duì)應(yīng)的詞嵌入失真,奇異值越大,則字典的平均余弦相似度越大。本文可以通過忽略產(chǎn)生較小奇異值的詞嵌入{Ui,Vi}來執(zhí)行降維,即通過刪除UT和VT的最后幾行來實(shí)現(xiàn)。事實(shí)表明這會(huì)使翻譯性能的小幅提升,即轉(zhuǎn)換矩陣M的效果得到了部分提高。圖3表示詞典的部分詞的詞嵌入應(yīng)用SVD之前和應(yīng)用之后的英語–漢語共享空間的2D平面圖,其中藍(lán)色方塊表示的是英語詞的詞嵌入、橘黃色方塊表示的是中文詞的詞嵌入。
句子嵌入模型的研究主要集中在通過對(duì)矢量和矩陣的運(yùn)算來組合單詞嵌入來計(jì)算短語或句子嵌入。最近,Wieting等人[18]從標(biāo)準(zhǔn)詞嵌入開始,通過PPDB數(shù)據(jù)集對(duì)詞嵌入進(jìn)行修改,之后對(duì)這些修改后的詞嵌入進(jìn)行加權(quán)平均構(gòu)建句子嵌入。然而,對(duì)詞嵌入的修改至關(guān)重要,一般直接的對(duì)標(biāo)準(zhǔn)詞嵌入進(jìn)行加權(quán)平均的效果并不好。Arora等人[5]提出了一個(gè)新的無監(jiān)督句子嵌入方法(SIF),這種方法類似于TF-IDF的思想,用SIF作為每個(gè)單詞的權(quán)重,代替TF-IDF值。單詞w的權(quán)重為:
其中α為參數(shù),p(w)為單詞w的詞頻。則有句子嵌入{vs:s∈ S} 。
其中,S為句子集合,{vw:w∈V }為詞嵌入,V 為句子分詞的集合。通過調(diào)整α可以使weight(w)達(dá)到最優(yōu)解,通常在α=10-3到α=10-4時(shí)有最佳性能[5]。由以上公式可知,句子嵌入近似于句子中單詞的向量的加權(quán)平均值。對(duì)于約頻繁的單詞w,權(quán)重α/(p (w)+α)越小,因此這自然導(dǎo)致頻繁單詞的話語權(quán)重減小,而且不同領(lǐng)域的語料得到的p(w)不會(huì)影響對(duì)應(yīng)的權(quán)重計(jì)算。
為了獲得更好的效果,除了使用新的詞權(quán)重計(jì)算方法,還在加權(quán)平均后,計(jì)算語料庫所有向量構(gòu)成的第一個(gè)主成分U,該主成分U類似于PCA(Principal Component Analysis)的主成分,之后讓每個(gè)句子嵌入減去它在U上的投影,最終得到句子嵌入。定義一個(gè)向量V在另一個(gè)向量U的投影為:
由此可獲得最終句子嵌入的公式為:
分詞是NLP的一項(xiàng)基本工作,現(xiàn)階段有許多分詞工具,例如jieba分詞、哈工大LTP、中科院NLPIR,這些分詞工具在中文分詞領(lǐng)域得到了良好的應(yīng)用??紤]涉及到中文、英文兩種語言,本文分詞選用了中、英文分詞效果都較好的 Stanford CoreNLP(https://stanfordnlp.github.io/CoreNLP/index.html#download)。對(duì)于詞嵌入的預(yù)訓(xùn)練,采用2.1提到的fastText的skip-gram模型,詞嵌入維數(shù)選定為300。用 Wikipedia公開的中文、英文數(shù)據(jù)集作訓(xùn)練數(shù)據(jù)集,其他參數(shù)設(shè)置與Bojanowski等人[11]相同,分別預(yù)訓(xùn)練中、英文詞嵌入。
本文通過預(yù)測(cè)訓(xùn)練字典中未見的單詞的翻譯來判定線性轉(zhuǎn)換矩陣的效果。本文首先在3.1預(yù)訓(xùn)練的英文詞匯表中獲得了10,000個(gè)最常用的單詞,然后使用API將這些單詞翻譯成中文。本文將這10000個(gè)詞匯分為兩部分,將前5000個(gè)單詞做訓(xùn)練字典,將后5000個(gè)單詞做測(cè)試字典。通過本文所提方法訓(xùn)練出中文詞嵌入轉(zhuǎn)換成英文詞嵌入的線性轉(zhuǎn)換矩陣,代碼及參數(shù)等可部分參考(https://github.com/Babylonpartners/fast-Text_multilingual)。本文使用本文自己的方法以及Mikolov[14]、Faruqui[17]和 Dinu[15]提出的方法進(jìn)行對(duì)比試驗(yàn),以證明通過本文的方法訓(xùn)練出的線性轉(zhuǎn)換矩陣切實(shí)可用。本文通過應(yīng)用最小二乘法計(jì)算Mikolov[14]提出的方法的結(jié)果,使用Scikit-learn的默認(rèn)參數(shù)實(shí)現(xiàn)Faruqui[17]提出的CCA方法的結(jié)果,使用Dinu[15]提供的源代 碼(http://clic.cimec.unitn.it/~georgiana.dinu/down/)計(jì)算Dinu提出的方法的結(jié)果。
需要指出的是詞嵌入通過其向量的歸一化內(nèi)積來定義兩個(gè)單詞之間的相似性。在上文提到的幾種方法下,本文都預(yù)測(cè)與源詞最近鄰的翻譯。例如,如果想將中文詞a翻譯成英文,只需找到與中文詞嵌入va通過線性轉(zhuǎn)換矩陣轉(zhuǎn)換的英文詞嵌入vb余弦相似性最高的詞嵌入vc即可,詞嵌入vc對(duì)應(yīng)的詞即使“信息”的英文翻譯,其中vc∈vw,w為測(cè)試集的中文詞嵌入集合。本文將中文翻譯成英文的實(shí)驗(yàn)結(jié)果在表一中進(jìn)行展示。@n表示實(shí)際翻譯的詞是目標(biāo)詞在測(cè)試集中n個(gè)最近的鄰居之一的概率??梢园l(fā)現(xiàn)本文的方法在@1下達(dá)到了0.407,高于其他的幾種方法。@5,@10下,本文的方法也顯著高于其他方法。通過對(duì)比實(shí)驗(yàn)可以看出本文訓(xùn)練的線性轉(zhuǎn)換矩陣有較好的翻譯性能,即比較適合用作中英文詞嵌入空間的轉(zhuǎn)換。
表1
本文通過預(yù)測(cè)中文問句在共享詞嵌入空間的句子嵌入與該句子英文翻譯在共享詞嵌入空間的句子嵌入的相似度,來判斷基于共享詞嵌入空間的跨語言相似問句挖掘模型的效果。由于中英文問句對(duì)數(shù)據(jù)集的缺乏,本文構(gòu)建了自己的中英文問句對(duì)數(shù)據(jù)集。本文選用國內(nèi)知名的問答社區(qū)知乎,運(yùn)用網(wǎng)絡(luò)爬蟲技術(shù)抓取了信息安全相關(guān)話題下的問題數(shù)據(jù)128663個(gè),并根據(jù)回答數(shù)等信息篩選出1000個(gè)回答數(shù)、閱讀數(shù)較多的問句作為本文的中文問句數(shù)據(jù)集。
調(diào)用API將這1000個(gè)中文問句翻譯成英文問句,并人工檢查確保問句翻譯可靠。用這1000個(gè)挑選的中文問句和相對(duì)應(yīng)的1000個(gè)英文翻譯問句組成本文的中英文問句對(duì)數(shù)據(jù)集。
本文分別處理中英文問句對(duì)數(shù)據(jù)集中的中英文問句,首先本文將英文問句分詞,結(jié)合3.1小節(jié)英文詞嵌入預(yù)訓(xùn)練向量,按照2.3小節(jié)方法將詞嵌入組合成句子嵌入。中文問句的處理與英文問句基本相似,只需多加一步將分詞得到的中文詞嵌入通過3.2節(jié)訓(xùn)練出的線性轉(zhuǎn)換矩陣轉(zhuǎn)換到英文詞嵌入空間(可參考圖2)。本文可以通過預(yù)測(cè)中文問句的翻譯,來驗(yàn)證本文句子嵌入模型的有效性。參考3.2節(jié)定義的單詞相似性,句子嵌入通過其向量的歸一化內(nèi)積來定義兩個(gè)句子之間的相似性。與3.2類似本文預(yù)測(cè)與源句最近鄰的翻譯。例如,如果想將中文問句sa翻譯成英文,只需找到與中文問句嵌入vsa經(jīng)過一系列轉(zhuǎn)換、組合后生成的英文問句嵌入vsb余弦相似性最高的問句嵌入vsc即可,其中sa∈Sa,sc∈Sc,{ }Sa,Sc∈S,S為中英文問句對(duì)數(shù)據(jù)集,Sa,Sc分別為中文,英文問句集。@n表示實(shí)際翻譯的句子是目標(biāo)句子在數(shù)據(jù)集Sc中n個(gè)最近的鄰居之一的概率。實(shí)驗(yàn)結(jié)果如表2所示。
表2
Sacaleanu等人[19]德語問題尋找相似的英語問題準(zhǔn)確率為0.255、英語問題尋找德語相似問題的準(zhǔn)確率0.23。由實(shí)驗(yàn)結(jié)果可知本文的方法在@1下準(zhǔn)確率為0.313,考慮到英語、德語同屬于日耳曼語族的西日耳曼語支,即英語和德語的密切關(guān)系遠(yuǎn)高于英語和漢語的密切關(guān)系。因此,本文的方法在一定程度上優(yōu)于Sacaleanu等人的方法。
本文提出了一種基于句子嵌入來查找跨語言相似問句的新方法,該方法通過中英文詞嵌入轉(zhuǎn)換和SIF構(gòu)造同一詞嵌入空間下的中英文句子嵌入,通過計(jì)算同一空間下句子嵌入的內(nèi)積來計(jì)算跨語言句子的相似性,最后本文驗(yàn)證了該方法的可行性。與其他跨語言相似問句查找方法相比,本文的方法無需監(jiān)督,無需大規(guī)模平行語料庫或同義詞林,且中英文字典語料庫對(duì)該方法效果影響較小。由于本文的方法無需監(jiān)督且詞典的影響較小,該方法不但可應(yīng)用與中英文跨語言相似問句查找,也可用與其他語言間的相似問句查找。下一步,會(huì)將該方法運(yùn)用到實(shí)際的中文和英文問答社區(qū)跨語言相似問句查找上(知乎和Quora),并視情況擴(kuò)展到其他語言間跨語言相似問句查找。