徐 戈,楊曉燕,汪 濤
閩江學(xué)院 計算機(jī)與控制工程學(xué)院,福州350108
自然語言(中文、英文等)中的單詞之間有著各種各樣的語義關(guān)系。其中,單詞的語義相似關(guān)系是非常重要的一種。通常,單詞的語義是否相似主要的判斷標(biāo)準(zhǔn)是待考察的兩個單詞是否可以相互替換。在自然語言處理領(lǐng)域,語義相似性的概念要更加廣泛一些。除了同義詞、近義詞、上下位關(guān)系等,語義的相關(guān)性(如醫(yī)生、病人),語義蘊(yùn)含(如打鼾、睡覺),甚至部分與整體(如汽車、輪胎)也有可能被視為具有一定程度的語義相似性。
單詞的語義相似性計算是指人們使用各種語言資源,通過計算機(jī)按照某種計算方法,用數(shù)值來度量兩個單詞間的語義相似程度。本文的目的就是針對這些相似性計算方法,通過對各種方法的概括介紹,了解其本質(zhì)特征、優(yōu)缺點、適用場景以及發(fā)展的必然性。
傳統(tǒng)上,單詞語義相似性的計算方法主要有兩類:一類是基于知識的方法;另一類是基于語料的方法。隨著兩類方法的發(fā)展,互相融合是一個必然的選擇。近些年,研究人員開始關(guān)注單詞內(nèi)部,利用詞根詞綴、字符串、部首甚至筆畫等信息提升單詞語義相似性的計算性能。
單詞的語義相似性計算在自然語言處理中是基礎(chǔ)性工作。由于單詞在語言結(jié)構(gòu)中處于較為底層的位置,通常人們先研究單詞相似性計算,進(jìn)而推廣到句子、段落乃至整篇文章。
單詞的語義相似性計算在自然語言處理中能夠支撐各種類型的任務(wù)。比如,在機(jī)器翻譯中,單詞的相似性計算可以用于提升翻譯質(zhì)量。在信息檢索中,單詞的相似性計算可以反映出檢索結(jié)果與檢索詞的匹配程度。在自動問答中,單詞的相似性計算可以支撐問句的匹配,命中正確的問答對。在文本分類、聚類中,單詞的相似性計算可以優(yōu)化文本的聚集,從而產(chǎn)生更好的分類、聚類效果。
本文大致按照方法類型以及時間順序兩個維度,對已有的單詞語義相似性計算方法進(jìn)行介紹。
最典型的知識就是各種語義詞典,如WordNet(http://wordnet.princeton.edu/)、知網(wǎng)(HowNet,http://www.keenage.com/)、同義詞詞林(http://ir.hit.edu.cn/demo/ltp/Sharing_Plan.htm)等。人們利用詞典中單詞之間的關(guān)系,量化它們的語義距離,從而給出語義相似性。
2.1.1 英文詞典
Rada等[1]提出利用WordNet中概念間的語義距離來計算概念間單詞的語義相似性。Resnik等[2]在Rada方法的基礎(chǔ)上,綜合考慮概念共有祖先所擁有的信息量,提出了改進(jìn)算法。Wu和Palmer[3]則采用WordNet的上下位關(guān)系,利用概念及其最近鄰共有祖先的深度計算語義相似性。Jiang和Conrath[4]通過度量概念及其最近鄰共有祖先的信息量計算概念相似性。Lin[5]也利用了概念信息量,但與Jiang和Conrath所提方法的區(qū)別是使用了不同的概念相似性計算公式。類似的工作還有Lord等[6]提出的方法。通常,該類方法主要利用詞典中的語義相似和上下位關(guān)系,因此更多的是用來計算語義相似性。Yang和Powers[7]提出了一種基于本體中關(guān)系邊數(shù)的語義相似性算法,使用了部分與整體的關(guān)系。
2.1.2 中文詞典
在中文方面,劉群與李素建[8]提出了一種基于知網(wǎng)(HowNet)語義相似性的計算方法,假定整體的相似性等于部分相似性的加權(quán)平均,對兩個義原的相似性,根據(jù)上下位關(guān)系得到語義距離并轉(zhuǎn)換成相似性。夏天[9]提出了通過概念切分解決知網(wǎng)中未登錄詞的語義相似性計算。田久樂與趙蔚[10]為解決詞語在語義網(wǎng)自適應(yīng)學(xué)習(xí)系統(tǒng)中相似性計算不清的問題,以同義詞詞林為基礎(chǔ),充分分析并利用了同義詞詞林的編碼及結(jié)構(gòu)特點,同時考慮了詞語的相似性,提出相關(guān)算法。
2.1.3 基于屬性
有一類基于詞典的方法可以被稱為基于屬性的方法。Tversky[11]提出的方法是其中的典型代表。該方法沒有考慮概念的語義關(guān)系,而是利用相應(yīng)本體的屬性集信息來計算兩個概念之間的語義關(guān)系。Banerjee和Pedersen[12]提出了基于詞典中注釋(gloss)的方法,其思想是概念相似性通過兩個概念在本體中的注釋重疊程度來獲得。通過在注釋集合中提取共同屬性或判斷屬性的相似程度來判斷兩個概念的語義相似程度,也屬于基于屬性的方法。類似的工作還包括文獻(xiàn)[13-14]。傳統(tǒng)的基于詞條編纂的詞典,也常采用這種方法提供相似性的計算。
隨著互聯(lián)網(wǎng)的不斷發(fā)展,出現(xiàn)了各種百科類的知識庫,其中以Wikipedia為代表。與WordNet比較,Wikipedia覆蓋的范圍更加廣泛,知識描述更加全面,信息內(nèi)容更新速度更加迅速。Wikipedia中對詞條進(jìn)行解釋,并對相關(guān)的詞條給出鏈接關(guān)系,這相當(dāng)于提供了高質(zhì)量的語義關(guān)系標(biāo)注語料。Strube和Ponzetto[15]提出了名叫WikiRelate的方法,該方法利用Wikipedia的文檔內(nèi)容與結(jié)構(gòu)代替WordNet的概念層次結(jié)構(gòu),進(jìn)行語義相似性的計算。Gabrilovich和Markovitch[16]提出了類似于信息檢索中向量空間模型的ESA(Explicit Semantic Analysis)方法,以Wikipedia中的所有文檔為向量元素構(gòu)造詞匯的屬性向量,通過比較詞匯向量之間的相似性來判斷詞匯的相似性。Milne[17]提出了一種只利用Wikipedia文檔之間的鏈接信息,基于向量模型計算語義相似性的方法。在中文方面,詹志建等[18]提出了一種新的基于百度百科的詞語相似性計算方法,通過分析百度百科詞條信息,從表征詞條的解釋內(nèi)容方面綜合分析詞條相似性,并定義了詞條間的相似性計算公式,通過計算部分之間的相似性得到整體的相似性。
除了以上工作,還有許多有意義的探索,它們采用了各種各樣的語言知識資源。比如,Eger和Sejane[19]利用雙語詞典進(jìn)行相似性計算;張瑾等[20]結(jié)合《中圖法》內(nèi)容和結(jié)構(gòu)體系,利用語義邏輯關(guān)系等手段進(jìn)行語義相似性計算。其他基于知識的單詞語義相似性計算工作不再贅述。
基于知識的方法的關(guān)鍵在于從知識庫所描述的關(guān)系和屬性中推導(dǎo)出單詞之間的語義相似性,這會導(dǎo)致一些嚴(yán)重的問題:首先,現(xiàn)有的知識庫大都是將“單詞”作為最小的描述單元,而單詞又是開放的,總會有大量的單詞無法收入知識庫,這些未收錄的“未知”詞便成為相似計算的障礙。其次,人們在設(shè)計知識庫時,不一定很好地考慮詞與詞之間的相似性計算問題,即使有考慮,實際構(gòu)建時也難以把控。比如,在WordNet中,有些分支的層次非常密集(粒度細(xì)),有些分支相對稀疏(粒度大),如果按照統(tǒng)一的度量標(biāo)準(zhǔn),就會出現(xiàn)偏差。
該類方法認(rèn)為,人們能夠不依賴語言知識,直接從語料中挖掘出單詞的語義相似性。
有一類工作是基于單詞和單詞的共現(xiàn)(不考慮詞序)的頻率統(tǒng)計,主要用來計算單詞的相關(guān)性。這類方法往往可以直接使用搜索引擎,將其看成是海量語料,返回兩個單詞共現(xiàn)的頻率。Turney[21]提出了基于搜索引擎返回的搜索頁面數(shù),利用點互信息計算語義相似性的方法,該方法要求待計算語義相似性的兩個單詞出現(xiàn)在大小為10的窗口內(nèi)。Higgins[22]提出的方法的基本思路與Turney[21]相似,也采用Alta Vista搜索引擎,但是該方法限制單詞的共現(xiàn)必須是單詞相鄰,減少了噪聲的干擾,代價是降低了方法的適用性。Bollegala等[23]提出Web-PMI(Pointwise Mutual Information)算法,除了利用搜索引擎返回搜索頁面的個數(shù)外,該方法還從返回的文本片段中提取句法模式來計算詞語的相似性,使得相似性的計算質(zhì)量大大提升。Cilibrasi和Vitanyi[24]則利用Google搜索引擎進(jìn)行單詞語義相似性的計算。
Deerwester等[25]提出的隱性語義索引(Latent Semantic Indexing,LSI)不僅可以用于文檔的相似性計算,也可以對單詞的語義相似性進(jìn)行計算。LSI中降維后的語義空間就是之后流行的主題模型(Topic Model)中主題概念的雛形。LSI之后的PLSI(Probabilistic Latent Semantic Indexing)模型[26]將LSI進(jìn)行概率化,隨后出現(xiàn)了LDA(Latent Dirichlet Allocation)模型[27],至此主題模型形成,并引出了一系列的相關(guān)工作。
與前面基于單詞共現(xiàn)的方法不同,基于上下文的方法,假設(shè)相似的單詞具有相似的上下文[28-29]。該類方法的基本思路是為單詞構(gòu)建特征向量,特征則從上下文(可以是經(jīng)過句法分析的結(jié)果)中抽取,將計算單詞語義相似性轉(zhuǎn)換成計算兩個特征向量的距離。
Salton和Buckley[30]將特征向量中的元素進(jìn)行TFIDF(Term Frequency-Inverse Document Frequency)修正;Lee[31]采用相關(guān)熵模型進(jìn)行計算,Lin[32]采用句法分析后的共現(xiàn)特征來構(gòu)造單詞的表示向量,再使用基于信息理論的模型進(jìn)行相似性計算。Lin[33]基于一個6.4億詞的英文語料進(jìn)行依存句法分析,將上下文語境表示成有依存關(guān)系的三元組,而后基于互信息提出一種算法來計算詞語之間的相似性。Dagan等[34]提出概率模型來計算單詞間的語義相似性,用一個詞周圍的相似詞來表達(dá)該單詞。Curran[35]將多種上下文表征方式進(jìn)行混合,包括句法分析、窗口特征,實驗結(jié)果表明,集成方法顯著優(yōu)于單個方法。Weeds等[36]基于BNC語料,采用9種相似性算法,所得相似性結(jié)果差別很大,因而指出面對不同任務(wù)時應(yīng)選擇合適的計算方法。Hagiwara等[37]深入研究基于上下文方法中特征的選擇,選取依存關(guān)系、窗口詞語、句子共現(xiàn)三類特征。依存關(guān)系特征和窗口詞語特征效果優(yōu)于句子共現(xiàn)特征,三者的結(jié)合超越任何單一的特征。Geffet和Dagan[38]采用自舉的方法來計算特征的權(quán)值,認(rèn)為相似詞共有的特征是那個意義最好的表征,其權(quán)值應(yīng)該被加大。石靜等[39]對上下文特征的選擇、相似性的計算公式、特征的權(quán)重方案等做了對比研究,結(jié)果顯示用PMI來進(jìn)行特征權(quán)重設(shè)置能夠取得較好效果。類似的工作還有許多,不再贅述。
隨著大規(guī)模語料和以深度學(xué)習(xí)為代表的計算方法的出現(xiàn),在單詞語義相似性計算領(lǐng)域,基于上下文的特征向量構(gòu)造方法逐漸被單詞的向量嵌入方法所取代,成為基于大規(guī)模語料方法的主流。
單詞的向量嵌入,把單詞表達(dá)成一個固定長度的向量,該長度可取幾百,遠(yuǎn)遠(yuǎn)小于語料的單詞空間規(guī)模。把單詞表達(dá)成固定向量后,就可以采用簡單的向量距離來求出單詞的語義相似性。該方法與之前介紹的LSI、PLSI、LDA等方法有相似之處,都是對大規(guī)模語料訓(xùn)練出單詞的低維向量表達(dá),區(qū)別在于使用的信息不同,訓(xùn)練的方法也不同。比如,LDA采用的是單詞共現(xiàn)信息,Word2Vec側(cè)重上下文信息,LDA的訓(xùn)練通常采用Gibbs采樣算法,而Word2Vec是基于神經(jīng)網(wǎng)絡(luò)的參數(shù)學(xué)習(xí)。
Bengio等[40]提出了神經(jīng)網(wǎng)絡(luò)概率語言模型(Neural Network Language Model,NNLM),加入隱層使得神經(jīng)網(wǎng)絡(luò)可表達(dá)的函數(shù)空間變大,可使用樹狀加速方法加速,但隱層的加入使得參數(shù)變多,訓(xùn)練效率一般。Mikolov等[41]發(fā)布了他們在Google Search的研究工作Word2Vec,引起了工業(yè)界和學(xué)術(shù)界的廣泛關(guān)注。該模型計算簡單,并在一些有趣的任務(wù)上取得了很好效果,比如單詞類比任務(wù)(Tokyo vs.Japan=?vs.France)。Word2Vec中有兩種上下文設(shè)置模式Skip-Gram和CBow,前者傾向于語義相似性,而后者傾向于語義相關(guān)性。Levy與Goldberg[42]提出,Word2Vec中基于負(fù)采樣的Skip-Gram模型,是隱含的word-context矩陣的分解,矩陣中的元素是單詞和上下文對(pair)的互信息,僅差一個全局常量。Pennington等[43]提出了GloVe模型,融合LSA等算法思想,利用全局的單詞共現(xiàn)提升單詞向量的學(xué)習(xí)效果。Santus等[44]提出了基于排序的相似性度量,相比基于向量余弦的計算方法,該方法在異常點監(jiān)測任務(wù)上表現(xiàn)更優(yōu)秀。最近幾年,Word2Vec相關(guān)的單詞向量嵌入工作成為研究熱點。
基于語料的方法通過單詞所在上下文的統(tǒng)計信息來表示該詞,這存在兩個問題:首先,大量的詞具有多義性,而多義詞的每一次具體出現(xiàn)究竟呈現(xiàn)什么義項并不容易判斷。其次,語料庫方法的核心思想是統(tǒng)計,當(dāng)統(tǒng)計量不夠時,就會出現(xiàn)偏差,即便在大數(shù)據(jù)時代容易獲得大量的文本數(shù)據(jù),對很多詞也難以保證足夠的統(tǒng)計量。
人們一直在嘗試將基于知識的方法和基于語料的方法進(jìn)行融合。Li等[45]研究了基于多個信息源的單詞語義相似性計算,其中包括語義詞典的結(jié)構(gòu)化語義關(guān)系和語料庫。該方法將單詞在樹中最短路徑和密度信息非線性融合來計算單詞語義相似性,結(jié)果優(yōu)于傳統(tǒng)方法。Agirre等[46]對基于WordNet的方法和基于分布式的單詞相似性計算進(jìn)行分析,找出各自的優(yōu)缺點,并給出了組合方案。Rothe與Schütze[47]提出了一種不同的思路:不是從語料中做向量嵌入,而是用已有的語義相似關(guān)系對同義詞集(Synset)和單詞進(jìn)行向量嵌入。這些研究對詞之間的相似性計算起到了很好的作用,彼此之間也有一定的補(bǔ)充,但還遠(yuǎn)遠(yuǎn)不夠。Zhang等[48]提出了使用知網(wǎng)(HowNet)和搜索引擎來共同計算單詞語義相似性;Zhou等[49]提出使用無標(biāo)注語料和詞表來對多義詞的語義相似性進(jìn)行計算;Sugathadasa等[50]提出了利用Word2Vec和詞表來提升特定領(lǐng)域的單詞語義相似性計算性能;Pawar等[51]提出了使用詞表數(shù)據(jù)庫和語料的方法來計算單詞和句子的相似性,在Pearson相關(guān)系數(shù)上表現(xiàn)良好。
以上介紹的兩類方法以及兩者的融合,都可以看作利用了單詞的外部信息。對于詞典而言,傳統(tǒng)詞典利用詞條之間關(guān)系(通過屬性或者注解),本體詞典利用單詞的上下位、相似、相反、整體部分關(guān)系,同義詞詞典利用單詞之間的相似性和層次關(guān)系。對于語料而言,則是單詞共現(xiàn)關(guān)系,若考慮詞序就是上下文關(guān)系。這些工作的本質(zhì)就是如何把外部關(guān)系轉(zhuǎn)換成語義相似性。
單詞的語義相似性研究在自然語言處理領(lǐng)域一直受到關(guān)注,但是絕大部分的工作集中在使用外部信息(語料中的共現(xiàn)、詞典的語義關(guān)系等)來計算單詞的語義相似性。
Wu等[52]在NLPCC-ICCPOL2016發(fā)布的單詞語義相似性計算評測中(總共500對單詞),排名靠前的幾支隊伍都采用了基于語料分布或詞典的方法。然而,對其中典型方法進(jìn)行實驗的結(jié)果表明,這些方法仍然存在許多問題。
對于基于詞典的方法,在500對單詞中,知網(wǎng)(HowNet)有118對未覆蓋,同義詞詞林有46對未覆蓋。這反映出該類方法受未登錄詞的影響較大,如“驢友”“備胎”“閨蜜”等未收錄。此外,相似性不夠穩(wěn)定,有時過高,有時過低。相似性計算公式依賴人的主觀經(jīng)驗。
對于基于語料的方法(Word2Vec模型,2G語料,最低頻率5),有12對沒有覆蓋。相比基于詞典的方法,說明了基于語料的方法能夠捕捉更多的單詞。當(dāng)然,該方法也存在一些問題:(1)頻率低于5的詞無法進(jìn)行相似性計算。(2)頻率超過5的低頻詞若無法獲得充分的上下文,也會出現(xiàn)計算結(jié)果不準(zhǔn)確。(3)超高頻詞語義分散(多義性)較為嚴(yán)重。
基于詞典的方法,由于單詞覆蓋率較低且得分波動較大,其總體性能已經(jīng)落后Word2Vec(2G語料)較多。對于Word2Vec方法,它會忽略低于預(yù)設(shè)頻率的單詞,無法獲得其向量表示,也就無法進(jìn)行相似性計算。即便是高于預(yù)設(shè)頻率的單詞,也存在著計算不夠合理的地方。
在NLPCC-ICCPOL2016單詞相似性評測任務(wù)發(fā)布的500對單詞中,有一些單詞對(Word Pair)通過Word2Vec方法計算出來的相似性與參考答案差異較大,表1列出了其中一些例子。Word1、Word2、Freq1和Freq2分別表示第一個單詞、第二個單詞、第一個單詞在語料中頻率、第二個單詞在語料中頻率。
表1 與參考答案差異較大的單詞對
如果考慮漢字等內(nèi)部信息,可以對表1中的一些問題進(jìn)行修正甚至解決。以表1中的“拖后腿”和“拉后腿”為例,考慮“拖后腿”與“拉后腿”都是動賓結(jié)構(gòu),且賓語相同,由于“拖”與“拉”語義相似,則能推出“拖后腿”與“拉后腿”具有較強(qiáng)語義相似性?!案叻濉焙汀吧綆p”計算語義相似性時,前者為“形容詞”+“名詞”的偏正結(jié)構(gòu),后者為“名詞”+“名詞”的偏正結(jié)構(gòu)。因此語義的重心應(yīng)該是“峰”和“巔”,而“巔峰”中兩個漢字具有語義相似性,從而最終能推出“高峰”和“山巔”具有較高語義相似性。表1中其他帶*號的行,或多或少都能通過單詞的內(nèi)部結(jié)構(gòu)解析和漢字的語義相似性進(jìn)行修正。這說明,使用單詞內(nèi)部信息的確可以作為一種補(bǔ)充,提高單詞語義相似性計算的質(zhì)量。
近幾年來,已出現(xiàn)了利用單詞內(nèi)部信息輔助進(jìn)行單詞相似性計算的工作。比如,一些研究者使用漢字甚至部首來輔助中文單詞的向量嵌入,以提高語義相似性計算的質(zhì)量。對于英文單詞的向量嵌入,詞根詞綴、字符序列等都被用于提高單詞語義相似性計算的準(zhǔn)確度。
Jin等[53]提出了利用共同的漢字個數(shù),或者共同的部首個數(shù)進(jìn)行兩個單詞相似性的修正。Chen等[54]提出了同時對中文單詞和漢字進(jìn)行向量嵌入,考慮了基于位置和基于聚類的兩種漢字嵌入方式。Sun等[55]用部首來提升漢字的向量嵌入質(zhì)量,不過其中并未對部首進(jìn)行細(xì)分。考慮到同一個部首的漢字集存在較大差異,該方法仍然可能引入一定的噪聲。Hang等[56]和Tao等[57]提出了使用漢字筆畫,甚至象形文字信息對中文進(jìn)行向量嵌入。
Botha等[58]提出了一個將詞根詞綴等成分集成到基于向量的概率語言模型中。Bojanowski等[59]提出了著名的fastText模型。對于單詞的向量嵌入,該模型考慮所有該單詞的ngram字符序列。以單詞“where”為例,n=3的情況下,其子串分別為
除了英語和漢語,其他語言利用單詞內(nèi)部信息提升性能的工作也已經(jīng)出現(xiàn)。比如Lankinen等[60]針對芬蘭語,利用單詞中的字符串作為輸入和輸出來對單詞進(jìn)行向量嵌入。Ajees等[61]利用類似的單詞內(nèi)部信息提升印度語的單詞語義相似性計算性能。
當(dāng)然,使用單詞內(nèi)部信息提升單詞語義相似性計算性能也存在著一些問題,比如對單詞內(nèi)部結(jié)構(gòu)沒有進(jìn)行深入分析,內(nèi)部成分(漢字串、字符串、筆畫串等)向量嵌入時噪聲較大。相關(guān)的工作還有文獻(xiàn)[62-63]。
單詞的語義相似性計算在自然語言處理領(lǐng)域有著廣泛的應(yīng)用。例如,在信息檢索中,要通過“電腦”查到“計算機(jī)”和“筆記本”,就要有這些詞之間的語義相似性作為基礎(chǔ);在問答系統(tǒng)中,需要匹配用戶所提的問題與系統(tǒng)中存儲的問題,句子相似性計算的基礎(chǔ)就是詞匯間的相似性。
然而,目前無論是基于知識的方法,還是基于語料庫的方法,都存在很多問題,尤其是覆蓋性問題。近幾年,越來越多的研究工作從單詞的內(nèi)部著手,利用單詞的內(nèi)部結(jié)構(gòu),嘗試從細(xì)粒度到粗粒度的語義推導(dǎo),最終計算出單詞間的語義相似性。
從單詞語義相似性計算的發(fā)展來看,基于知識的方法和基于語料的方法幾乎交織在一起。經(jīng)歷了多年的同步發(fā)展,兩類方法的融合也是必經(jīng)階段。近些年,研究者從單詞外部信息轉(zhuǎn)向單詞內(nèi)部信息,如何更有效利用單詞內(nèi)部信息以及如何將內(nèi)外信息共同用于單詞語義相似性計算是大勢所趨。