命名實體的同義發現在許多NLP任務中起到了重要的作用。同義發現任務中一個核心的問題是如何衡量一對實體之間的語義相似度。基于表示學習(representation learning)的同義實體發現致力于學習更好的詞表示(word embedding)或者字符表示(character-level embedding)。這些方法大都可以很好的處理表述相似的同義實體(例如airplane/aeroplane), 但在衡量語義相似的同義實體下表現不佳(例如clogged nose/nasal congestion)。近年來,基于上下文(context)的同義實體發現多基于分布式語義模型(Distributional Semantics Models)的假設 ,即“在相同的上下文中出現的詞匯在某種程度上有類似的含義“。在實際應用中,一個命名實體會通常出現在許多不同的上下文中。對于每個命名實體,現有基于分布式語義模型的方法大多將單個上下文的信息拿來做匹配。
IJCAI2020的一篇論文 (“Entity Synonym Discovery via Multipiece Bilateral Context Matching”) 在如何利用多個上下文信息來做同義實體發現問題上進行了一些新的探索。作者認為對于一對命名實體,若對每個實體能利用多個不同的上下文來做匹配不僅可以更全面的學習其上下文語意表示從而提高衡量實體之間語義相似度的準確性,還可以增加匹配的魯棒性,減少因采用某個低質量上下文而引入的噪聲。為了達到這一目標,作者在同義詞發現任務上將傳統的基于單個上下文的匹配(single-piece context matching)擴展至多個上下文(multi-piece context),并通過多個上下文之間的雙向匹配(bilateral context matching) 來學習實體間的相似度,從而用于海量文本中的同義實體發現。在公開/特定領域(醫療),英文/中文文本數據集上均取得了較佳的表現。
模型解析
SynonymNet核心idea是對于每個命名實體查找一組(多個)其出現的上下文句子,并通過對兩組上下文句子之間進行匹配得到最終命名實體間的相似度。那么這樣的匹配要如何實現呢?
作者采用了如下圖所示的模型結構:檢索器 (context retriever)通過檢索的方式從海量文本中選擇一組實體被提到的句子;編碼器(context encoder)將每一個上下文信息進行編碼; 雙向匹配(bilateral matching)+泄漏單元(leaky unit)則將兩個實體對應的兩組上下文信息進行雙向匹配;合成器(context aggregation)利用匹配的信息選擇具有代表性,且在匹配中較為informative的上下文信息進行多上下文的聚合。作者考慮了兩種不同的架構:一是針對二元實體組 的siamese 結構,根據同義實體是否匹配進行二分類;二是針對三元實體組 的triplet 結構,希望同義實體 的得分超過非同義實體 。
雙向匹配。
對于一組命名實體 , 上下文檢索+編碼將器將 轉化為了兩組上下文的向量:
對于每個提到實體 的上下文向量 , 作者用bi-linear項來計算和每一個提到實體 的上下文向量 的匹配分數:
同樣的,對于每一個提到實體 的上下文向量,作者也利用相同的方式計算匹配分數:
這樣的匹配看似需要進行 次,但在實際實現中可以通過矩陣乘法進行高效計算:,并通過按行/列取softmax得到兩個方向的匹配分數。
泄露單元。
當需要和多個上下文進行匹配的時候,可能會存在沒有高質量的上下文進行匹配,甚至上下文存在錯誤的情況。為了更好的解決這個問題,作者引入了泄漏單元(leaky unit)的概念。Leaky unit的想法是在雙向匹配時引入一個多余的上下文向量 。該向量可以隨模型學習,目的是為了在沒有高質量上下文匹配時承擔一些匹配的分數,從而減弱低質量上下文在匹配過程中帶來的噪聲和干擾。
在每個匹配方向上,Leaky unit會額外和/個上下文向量計算匹配分數:
當存在某個低質量的上下文,比如因為實體 在句子語義成分中不重要時,其對應的上下文向量 在和提到實體 的 個上下文向量進行匹配時:
分母中的泄漏單元會承擔匹配分數; 會減弱該 在上下文在匹配時的影響。橫向比較上方兩個公式的分子:當 > 時,泄漏單元會比低質量的上下文在匹配中更活躍,占用額外的匹配分數,從而減弱低質量上下文在匹配時的分數。
上下文信息聚合。
作者將多個上下文基于attention思想進行聚合。當已經獲得了 個上下文之間的匹配分數后,作者認為某一個上下文 在 個上下文聚合過程中的重要的程度取決于在與另一邊 個上下文匹配時最被需要的程度:
這里的動機是如果 個上下文和 匹配時最高的匹配分數已經很低,那么可以說明 在整個匹配過程中不夠informative,聚合時應當給較小的attention;反之,如果 在和 個上下文匹配時最高的匹配分數很高,那么可以說明 在匹配過程中非常被需要。作為informative的上下文 在聚合時應當得到更大的attention。基于這個思路,聚合時采用了基于最強匹配分數進行的attention聚合,得到聚合后的上下文向量:
泄漏單元雖然在匹配時分擔了匹配分數,但泄漏單元不參與聚合過程。因此泄漏單元不會在聚合過程中貢獻信息給聚合后的上下文向量。這樣是為了保證泄露的噪聲能被隔離開,不去影響最終聚合的質量。
siamese/triplet 結構。
作者嘗試了兩種不同的模型結構/損失函數。siamese 結構以二元實體組 作為輸入,損失函數利用聚合后的上下文向量刻畫兩個實體同義與否。triplet結構以三元實體組作為輸入,損失函數利用聚合后的上下文向量希望同義實體比非同義實體獲得更高的分數: 大于一個margin。
實體發現流程
作者利用SynonymNet衡量實體間語義相似度的能力將其用于文本中的實體發現。如圖所示,實體發現分為四步:1)根據文本訓練word embedding;2)對于一個query entity , 通過其在embedding space上的 最近鄰獲得candidate entity;3)對于 < query entity, candidate entity > 利用SynonymNet獲得相似度分數;4)最后根據SynonymNet分數獲得同義實體對。
實驗表現
作者在Wiki + Freebase, PubMed + UMLS, MedBook + MKG 三個數據集上進行了評估。實驗采用AUC和MAP評價采用相同的word embedding時不同模型結構對于衡量實體同義相似度的影響。
作者對上下文個數對性能的影響進行了評估。結果顯示采用多個上下文進行匹配可以降低單個上下文匹配時可能帶來的噪聲,從而顯著提高同義相似度的準確性。
作者還在真實的同義實體發現任務中進行了一些分析。word2vec采用了利用上下文來對實體語義進行建模的思想,用cosine similarity進行embedding最近鄰選取可以得到初篩后的candidate entity。對于query entity “UNGA”,獲得的candidates雖然大多出現在類似的上下文中,不相關的實體仍在前列。經過SynonymNet對于上下文更細粒度的刻畫,以及多上下文的雙向匹配后,同義實體的排名變得更靠前了。
總結
根據多個上下文進行雙向匹配來確定兩個實體同義程度,利用泄漏單元來處理多個上下文匹配時可能存在噪音的情況,思路直觀,實現的方式簡潔。實驗結果上驗證了采用多個上下文進行匹配來帶準確度和魯棒性上的提升。
該框架對于編碼器,檢索器的選擇比較靈活。目前文中采用的是bi-LSTM結構,和基于transformer的眾多預訓練語言模型碰撞之后說不定也能有一些新的發現。在需要用多個上下文進行匹配的時候,如何利用多個上下文帶來的多樣性,全面地學習實體表示也是一個很有意思的問題。在處理由之產生的噪聲方面,文中的泄漏單元給出了一個比較新穎的觀點。
-
編碼器
+關注
關注
45文章
3638瀏覽量
134426 -
模型
+關注
關注
1文章
3226瀏覽量
48809 -
數據集
+關注
關注
4文章
1208瀏覽量
24689
原文標題:SynonymNet: 基于多個上下文雙向匹配的同義實體發現
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論