文 | JayLou婁傑
本文介紹一篇「大道至簡」的中文NER方法——Lex-BERT,其僅僅通過將詞彙信息以標識符的形式引入到原文輸入中,就可以有效增強中文NER效果。
由於Lex-BERT炒雞簡單,JayJay想安利給大家,趕緊在自己的中文NER任務上嘗試一下吧~前言
談起中文NER任務,NLPer都不陌生。而如今,提升中文NER指標的主要方式是引入詞彙信息,JayJay在之前的綜述《中文NER的正確打開方式: 詞彙增強方法總結》(複製連結:https://zhuanlan.zhihu.com/p/142615620)一文中就詳細介紹了中文NER的一些主流方法,而SOTA屬於FLAT [1]。最近arxiv上的一篇paper《Lex-BERT: Enhancing BERT based NER with lexicons》將詞彙信息作為標識符引入到input中,並超越了FLAT的結果。論文下載:https://arxiv.org/pdf/2101.00396.pdf可以引入實體類型type信息,作者認為在領域內,可以收集包含類型信息的詞彙;相比FLAT,Lex-BERT推斷速度更快、內存佔用更小;一個題外話:JayJay之所以在標題中打了個問號(?),只是覺得不能就此下結論「Lex-BERT超越FLAT」,畢竟還是需要先有一個帶有實體類型信息的高質量詞表啊~但FLAT等用到的詞向量是很容易獲取的。SOTA回顧:FLAT
FLAT的設計十分簡單巧妙。如上圖所示,具體地設計了一種巧妙position encoding來融合Lattice 結構,具體地,對於每一個字符和詞彙都構建兩個head position encoding 和 tail position encoding。相關詞彙共享相關token的position信息。FLAT可以直接建模字符與所有匹配的詞彙信息間的交互,例如,字符[藥]可以連結詞彙[人和藥店]和[藥店]。
相關實驗表明,FLAT有效的原因是:新的相對位置encoding有利於定位實體span,而引入詞彙的word embedding有利於實體type的分類。
Lex-BERT:簡單到爆!
Lex-BERT方式其實很簡單,前提是要有一個擁有類型type信息的詞彙表。論文作者共給出了2個版本的Lex-BERT,如上圖所示:Lex-BERT V1: 將type信息的標識符嵌入到詞彙前後,例如,上圖中[v][/v]代表醫學相關的動詞。Lex-BERT V2: 將type信息的標識符拼接input後,然後與原始word起始的token共享相同的position embedding。此外,在attention層中,文本token只去attend文本token、不去attend標識符token,而標識符token可以attend原文token。上圖給出了Lex-BERT與FLAT(本文的FLAT實際是FLAT+BERT的結果)的指標對比,可以看出,Lex-BERT V1和V2均超過了FLAT,Lex-BERT V2領先更大。上圖給出了Lex-BERT與FLAT的推斷速度和內存佔用對比,相比FLAT,Lex-BERT推斷速度更快、內存佔用更小。劃重點:將詞彙/實體類型信息當作標識符引入,增益明顯!
看完Lex-BERT V1和V2的框架後,你是否感覺和女神的關係抽取SOTA很「雷同啊」?我們趕緊來回顧一下關係模型和「近似模型」吧:其實,Lex-BERT和關係抽取SOTA,都是將類型信息當作標識符引入到輸入文本中的。值得一提的是:Lex-BERT V2 和 近似關係模型 都借鑑了FLAT的方式,將標識符放入到文本之後,通過共享位置向量來建立軟連接。所以,本文主要想強調:將 詞彙/實體信息作為標識符 引入文本輸入中,對於NER和關係抽取都還是有明顯增益的。參考文獻[1] FLAT: Chinese NER Using Flat-Lattice Transformer
- END -
歡迎各位NLPer加入(醫療)自然語言處理技術交流群
進群請備註:研究方向+暱稱,PS等廣告勿擾,謝謝
長按識別添加,即可進群