BERT+知識圖譜: K-BERT Enabling Language Representation with Knowledge Graph 文獻理解


參考文獻:BERT+知識圖譜:北大-騰訊聯合推出知識賦能的K-BERT模型

地址:https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/103790278

 

此前兩篇關於知識圖譜結合預訓練的文章作為了解:

ERNIE: Enhanced Representation through Knowledge Integration(百度)

a.對實體概念知識的學習來學習真實世界的完整概念的語義表示(MASK詞和知識圖譜中的實體)

b.對訓練語料的擴展尤其是論壇對話語料的引入來增強模型的語義表示能力。

 

ERNIE: Enhanced Language Representation with Informative Entities(清華)

首先識別句子中的實體並與知識圖譜中的實體進行匹配。然后使用一個獨立的 TransE 算法獲得實體向量,然后再將實體向量嵌入到 BERT 中。

 

當閱讀特定領域文本時,普通人只能根據其上下文理解單詞,而專家則可以利用相關領域知識進行推斷。目前公開的 BERT、GPT、XLNet 等預訓練模型均是在開放領域語料預訓練得到的,其就像一個普通人,雖然能夠讀懂通用文本,但是對於專業領域文本時卻缺乏一定的背景知識。

解決這一問題的一個方法是使用專業語料預訓練模型,但是預訓練的過程是十分耗時和耗計算資源的,普通研究者通常難以實現。例如,如果我們希望模型獲得“撲熱息痛可以治療感冒”的知識,則在訓練語料庫中需要大量同時出現“撲熱息痛”和“感冒”的句子。不僅如此,通過領域語料預訓練的方式引入專家知識,其可解釋性和可控性較差。

除了以上策略,我們還能做些什么來使模型成為領域專家?知識圖譜(Knowledge Graph,KG)是一個很好的解決方案。

代碼地址:https://github.com/autoliuweijie/K-BERT

1.語言模型訓練階段和原google的Bert_base完全相同,知識圖譜及K-Bert的使用完全在具體下游任務的finingtuning階段。模型參數為Bert_base 12層 1.1億參數。

2.在CN-DBpedia知識庫+KBert模型 在 MSRA-NER(微軟的中文NER)任務上,進行效果復現,結果符合論文預期,但是去掉知識圖譜后效果卻沒有降低,可能模型在通用場景的健壯性有待加強。

 

Dev f值

Test f值

論文效果

0.960

0.956

復現效果

0.965

0.954

去掉圖譜(不讓取出額外實體)

0.963

0.957

去掉圖譜(讓加載的知識圖譜實體詞典為空)

0.963

0.957

 

3.KBert融合知識圖譜算法實現NER任務源代碼分析

(1)加載中文知識圖譜CN-DBpedia進入內存,構建實體字典lookup_table有兩種模式,默認模式不包含關系詞:{“中國”:[“國家”,“北京”],“美國”:[“國家”,“華盛頓DC”]};模式2包含關系詞:{“中國”:[“屬性國家”,“首都北京”],“美國”:[“屬性國家”,“首都華盛頓DC”]};第一步的目的在於為后續

(2)讀入NER文本數據及標簽,為構建可見矩陣Visible_matrix,將文本數據進行中文分詞后依次送入lookup_table判斷是否存在關聯詞,若該詞存在關聯實體則將關聯實體取出,並添加絕對位置和相對位置編號soft position。根據絕對位置和相對位置編號構建可見矩陣。

(3)加載Bert預訓練模型,構建NER任務,將softposition embeding+token embedding+segment embedding一起進行embeding。編碼層加入Visible_matrix,讓進行self_attention的時候每個字符只看到自己應該看見的字符。

(4)輸出字符序列的logits通過softmax到對應標簽的概率,並計算損失


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM