xmlstreamexception 参数实体未进行声明_命名实体识别研究进展概述
Future丨Intelligence丨Nutrition丨Energy
讓閱讀成為習慣,讓靈魂擁有溫度
點擊關注PKUFineLab?
一起進步
命名實體識別研究進展概述
命名實體識別任務旨在從自然語言文本中識別具有特定意義的實體,如人名、地名、組織名等。在自然語言處理(Natural Language Processing, NLP)中,命名實體識別通常是自然語言理解的第一步,它的結果被用于許多后續的NLP任務,如實體鏈接(Entity linking)、關系抽取(Relation extraction)和句法分析(Syntactic parsing)等,因此,命名實體識別任務的效果好壞就至關重要了。舉例來講,如果命名實體識別任務從“南京市長江大橋于1968年12月29日建成通車”這句話中錯誤地識別出職務名——“南京市長”和人名——“江大橋”,而不是正確地識別出地名——“南京市”和橋名——“長江大橋”,則后續基于錯誤識別結果的NLP任務也無法得到期望的結果。
命名實體識別任務往往被看作語言序列標注(Linguistic sequence labeling)任務。傳統的序列標注任務多使用線性模型,如隱馬爾可夫模型(Hidden Markov Models, HMM)和條件隨機場(Conditional Random Fields, CRF),并且依賴專家知識(Task-specific knowledge)和人工提取特征(Hand-crafted features)。近年來隨著機器算力的增長和深度學習算法的發展,命名實體識別任務利用分布式表示學習方法和非線性的神經網絡構建了端到端的模型,從而在無專家知識和人工提取特征的基礎上實現了更好的效果。進一步的,針對命名實體識別現階段面臨的各類問題,近期的研究工作相應地對模型做了精細化的調整,也提出了一些新穎的想法。下文將首先介紹現階段命名實體識別的基本套路,接著在此基礎上介紹一些新的、有意思的探索,最后是個人的一點體會。
?????基本套路
現階段主流的命名實體識別的基本套路可以總結為“三板斧”:單詞的字符級表示、(雙向)LSTM編碼和CRF解碼。代表性工作是2016年發表在ACL的工作[1]。
首先,在對句子中的單詞進行向量表示的時候,除了常用的詞嵌入向量(word embedding),文章還利用CNN來學習每個單詞字符級別的特征,如圖1所示。
圖1 用于提取單詞的字符級表示的CNN
將單詞“playing”的各字符嵌入向量作為CNN的輸入,經過卷積和池化后,得到單詞“playing”的字符級表示。通過這種方式,文章認為可以學習到單詞的詞法特征,如單詞的前綴、后綴等特征。
接著,文章使用雙向LSTM作為編碼層,學習每個單詞在句子中上下文的特征,如圖2所示。
圖2 雙向LSTM和CRF組成的模型框架
將每個單詞的詞嵌入向量和字符級表示向量拼接之后作為編碼層的輸入,通過雙向LSTM為每個單詞得到兩個(前向和后向)隱藏層向量表示,將這兩個隱藏層向量拼接后作為解碼層——CRF的輸入。
最后,文章選用CRF作為解碼層的原因是,CRF會考慮相鄰label間的關系,而不是獨立地將每個單詞解碼成label,例如,在詞性標注任務中,“形容詞”后更可能跟一個“名詞”而不是“動詞”,或者是在利用BIOES(Begin, Inside, Other, End & Single)標注模式的實體識別任務中,“I-ORG”不可能緊跟在“I-PER”后。從而能夠為一個給定的文本序列解碼出一個最好的label鏈。
????? 新的探索
隨著深度學習的發展,命名實體識別任務也有了一些新的探索,包括解決標注數據規模和模型參數量不匹配的問題、文本中命名實體嵌套的問題、中文分詞對實體識別的影響問題和模型的并行化問題等等,本章節主要就前兩個問題及相關工作做進一步敘述。
標注數據不足
隨著模型的愈發精細復雜,需要訓練的參數日益龐大,但其訓練所需的人工標注數據卻因為標注成本的問題難以得到相應地增長。為解決這個問題,一個常用的方法是使用遠程監督的方法來得到大量的遠程監督標注數據,但由于用于遠程監督的知識庫規模有限,大量的實體存在于文本中而未出現在知識庫中,導致在遠程監督時,將這些未出現在知識庫中的實體標注為非實體,從而產生大量的假負例,這即是遠程監督標注數據帶來的有限覆蓋問題(Limited Coverage)。除此之外,另外一種思路是通過優化模型,限制參數量,從而使得模型能夠在較小的標注數據集上也能夠完成訓練。
有限覆蓋問題
為了緩解有限覆蓋問題對模型訓練的影響,Shang J等人在2018年的工作中提出了兩種方式。首先是利用最先進的短語挖掘方法在文本中挖掘出“高質量短語”,然后在利用知識庫遠程監督標注時,將文本中未出現在知識庫中的“高質量短語”標注為“Unknow”。這樣標注數據除了實體類別和非實體以外,還多了“Unknown”類別。隨著標簽的擴展,上一章中提到的基本套路中的CRF解碼層就需要做相應改變,如圖3所示。
圖3 擴展的CRF解碼層
基于BIOES序列標注模式進行實體標注,句子中每個單詞的標簽是“位置-實體類別”的形式,于是,每個單詞有5*實體類別數量個可能的標簽(圖3中的每一列)。在傳統的數據標注上,CRF解碼層是從圖中所有的路徑中找出最大可能性的“一條”路徑進行解碼標注,即每列找出一個最可能的標簽。而增加了“Unknow”類別后,文章認為“Unknown”類別即意味著其單詞可能是任意的標簽(圖3中“prostaglandin”和“synthesis”對應的兩列),則CRF解碼層需要從圖中所有路徑中找出最大可能性的“一簇”路徑進行解碼標注。
進一步的為了緩解有限覆蓋問題帶了的負面影響,文章提出了第二種方法——“Tie or Break”序列標注模式。不同于傳統的標準的BIO2標注模式,“Tie or Break”不再直接對文本中的單詞進行標注,而是對文本中相鄰單詞的關系進行標注。其規則如下,
相鄰的兩個單詞出現在同一個(知識庫)實體中,這兩個單詞間的關系標注為“Tie”;
相鄰的兩個單詞中但凡有一個出現在Unknown類型的“高質量短語”中,這兩個單詞間的關系標注為“Unknown”;
其它情況,標注為“Break”。
這種標注模式有兩點好處,其一,當文本中的短語在遠程監督時被知識庫中的實體部分匹配或者錯誤匹配時,這些短語內單詞間的Tie關系是正確的不受影響的;其二,在遠程監督標注時,文本中的單詞極容易被知識庫中unigram entity即由單獨單詞組成的實體錯誤地標注成假正例。而使用“Tie or Break”序列標注模式,無論一個單詞時真正的unigram entity或者是假正例,它與兩邊的單詞間的關系都是“Break”,由此減少了假正例對模型的影響。為了匹配這種新的標注模式,文章提出了一種新的命名實體識別模型——AutoNER,如圖4所示。
圖4 基于“Tie or Break”標注模式的AutoNER
自下而上,我們依然能看到單詞的字符級別表示和雙向LSTM編碼,雖然與上一章提到的具體方法有所差異,但其思想基本是一致的,我們重點關注在LSTM編碼層之后的解碼層。在這個模型中,文章沒有繼續使用CRF而是分為兩步去做解碼:第一步,使用雙向LSTM表示出單詞間關系的隱藏層向量表示后,然后使用一個二分類器區分“Break”和“Tie”,不對“Unknown”做判斷;第二步,將第一步預測出的兩個相鄰“Break”之間的短語視為一個待預測的候選實體,用單詞的隱藏層向量綜合表示該短語,然后輸入到一個多分類器中。
領域敏感特征
為了使得模型能在較小的標注數據集上完成訓練,2018年Liu L等人發表在AAAI上的工作[3]提出了一種可行的思路。文章提出了一種LM-LSTM-CRF模型,通過模型的名稱,我們就可以看出在該模型的編碼層和解碼層應當和第一章提到的主流方法相同,文章的主要貢獻在單詞的字符級表示,準確來講,文章的主要貢獻在對字符級別的特征的挑選。文章認為,單詞字符級的特征雖然在已有的工作中被證明有效,但其是在大規模預料上經過預訓練得到,包含了大量領域無關的特征,這些領域無關的特征需要更多的數據、更大的模型來訓練更長的時間。而本文利用多任務學習提取共享特征的思路,以及語言模型(Neural Language Model)可以學習領域敏感特征的特性,使用語言模型從文本的大量特征中只提取領域相關的特征用于序列標注模型的訓練,屏蔽掉了大量的任務無關特征,從而使得序列標注模型可以用少量的參數達到較好的效果,具體模型如圖5所示。
圖5 LM-LSTM-CRF模型結構
圖中使用了雙向LSTM提取字符級別的特征,而隱藏層向量卻是用于兩個任務:序列標注(主要任務)和語言模型(輔助任務)。其中,序列標注任務不再贅述,語言模型就是利用已知序列預測下一個單詞是什么,在該模型中,利用單詞的前一個隱藏層輸出來表示該單詞,如前向LSTM中用“Pierre”前一個字符的隱藏層向量來表示“Pierre”,然后進行Softmax分類操作。并且由于這兩個任務是不相關的(相關的任務如實體識別和關系抽取),所以文章中在字符級別的LSTM后特意使用了highway層,將隱層向量映射到兩個不同的向量空間,各自完成不同的任務。
命名實體嵌套
實體嵌套是指在一句文本中出現的實體,存在某個較短實體完全包含在另外一個較長實體內部的情況,如“南京市長”中地名“南京”就嵌套在職務名“南京市長”中。而傳統的命名實體識別任務關注的都是平坦實體(Flat entities),即文本中的實體之間不交叉、不嵌套。為了解決嵌套命名實體識別的問題,近年來的研究做了不同的嘗試,本文就我了解的幾篇工作作簡要的介紹,希望能對大家有所啟發。
首先,第一篇是Ju M等人于2018年發表在NAACL上的工作[4],該工作提出一種層模型,其思路其實非常簡單,就是對文本一遍一遍的識別,直到識別不出實體為止。具體就是將前面提到的LSTM+CRF看作一個平坦命名實體識別層(flat NER layer),通過動態的堆疊flat NER layer,自內而外的一層一層的識別嵌套實體(先識別inner entities,再識別outer entities),直到flat NER layer識別不出實體,停止堆疊,模型如圖6所示。
圖6 層模型
自下而上,在第一個flat NER layer內,文章把每個token經過雙向LSTM后對應的隱藏層表示輸入到CRF中,用于識別最內層實體(most inner entities),然后將構成每個最內層實體的單詞的隱藏層向量相加并平均來表示最內層實體,然后將其看作一個新的“單詞”,替換組成最內層實體的所有單詞,然后和其他被識別為Other的單詞組成新的序列輸入到下一個flat NER layer中,重復以上內容,直到某個flat NER layer將其輸入的token都標記為Other后結束堆疊。作者認為通過這樣的方式不但可以將嵌套的實體識別出來,還能考慮到inner entities和其outer entities之間的關系。
接著,第二篇是Sohrab M G等人于2018年發表在EMNLP上的工作[5],該工作的主要內容集中在解碼層,單詞的字符級表示和雙向LSTM編碼層與前面的工作大同小異。如圖7所示,在解碼層,文章不再使用CRF,而是使用一個可變長的滑動窗口在編碼層輸出的隱藏層向量序列上滑動,枚舉出所有可能的片段作為候選實體,然后利用隱藏層向量表示這些候選實體,最后分別通過Softmax進行分類。雖然試驗結果不錯,但我認為這種窮舉的方法比較適合于序列長度較短的情況,因為一方面它忽略了標簽間的相關性,另一方面當序列長度較長的情況下,窮舉法會得到大量的負樣本,使得正負樣本不均衡,影響模型效果。
圖7 枚舉模型
最后,同樣是一篇來自2018年EMNLP的工作[6],不同于前面兩篇工作對平坦命名實體識別主流方法的修修改改,本文的核心思想是將文本進行一定的轉化之后,實現對嵌套實體的平坦訪問(順序訪問)。
首先,如圖8所示,作者將嵌套實體表示成一棵句法成分樹,文本中的多個嵌套實體便被表示成一個森林。其中,樹的葉子節點是文本中的token,而非葉子節點便是實體類別,這樣實體的嵌套關系便被表示成了樹中非葉子節點的父子關系。
圖8 用句法成分樹標注的嵌套實體
同時自底向上構建句法成分樹的過程中,便實現了嵌套實體平坦訪問,即構建樹的過程中,用非葉子節點的構建動作對應了相應的實體類別,而這些動作是順序的,不存在嵌套關系。而森林的構建過程是由多個樹的順序構建過程組成,其被放入一個棧中。如圖9所示,
圖9 句法成分森林的構建過程
構建動作的執行是由系統的當前狀態決定的,系統的當前狀態包含棧的狀態,文本序列的剩余部分,構建動作的歷史。這樣,以系統狀態作為輸入,當前狀態應執行的動作為輸出,即可完成模型的訓練。
具體而言,文章首先定義了三類動作:SHIFT,REDUCE-X和UNARY-X,其中X是指實體類別,屬于一個預定義的類別集合。SHIFT操作是指將文本序列中的當前單詞入棧;REDUCE-X是給棧頂的兩個元素出棧,并給他們設置一個共同父節點X,然后將這個樹元素入棧;UNARY-X則是將棧頂元素出棧,為其設置一個父節點X,然后將這個新的樹元素入棧。定義好動作之后即得到了模型的輸出(label),而其輸入——系統的狀態,則分三部分表示:
棧的向量化表示使用了stack LSTM模型,在傳統的LSTM上加入了棧頂指針,用棧頂指針所指向的unit的隱藏層輸出來表示棧的狀態;
文本序列的剩余部分則通過一個后向的LSTM建模,使用順序第一個單詞的隱藏層輸出表示文本序列的剩余部分的狀態;
歷史構建動作則通過一個前向的LSTM進行學習,最近一次動作的隱藏層輸出表示歷史動作的狀態。
將這三種狀態的向量表示拼接起來表示系統狀態,作為Softmax的輸入。
????總結
科研有時候是使用新技術解決舊問題,而同時,新技術的使用也會帶來新的問題,這一點在命名實體識別領域讓我感觸尤為深刻。一方面,得益于深度學習的發展,命名實體識別模型實現了更好的效果,對各種細節問題也有了精細化的建模;而另一方面,深度學習技術也帶來了一些問題,比如標注數據同參數規模不匹配的問題,精細模型并行化程度不高的問題等。
針對命名實體識別領域的研究現狀,本文首先介紹了該領域的主要任務和主流方法,并在此基礎上,就近年來的最新進展挑選了兩個有意思的問題和相關探索進行了介紹。此外還有中文分詞對命名實體識別的影響,以及模型并行話程度不高等問題,由于篇幅所限,這里未作介紹,感興趣的話可以查看[7][8]兩篇工作。
參考文獻
[1] Ma X, Hovy E H. End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF[J]. meeting of the association for computational linguistics, 2016: 1064-1074.
[2] Shang J, Liu L, Ren X, et al. Learning Named Entity Tagger using Domain-Specific Dictionary[J]. arXiv preprint arXiv:1809.03599, 2018.
[3] Liu L, Shang J, Ren X, et al. Empower sequence labeling with task-aware neural language model[C]//Thirty-Second AAAI Conference on Artificial Intelligence. 2018.
[4] Ju M, Miwa M, Ananiadou S. A neural layered model for nested named entity recognition[C]//Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long Papers). 2018, 1: 1446-1459.
[5] Sohrab M G, Miwa M. Deep Exhaustive Model for Nested Named Entity Recognition[C]//Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing. 2018: 2843-2849.
[6] Wang B, Lu W, Wang Y, et al. A neural transition-based model for nested mention recognition[J]. arXiv preprint arXiv:1810.01808, 2018.
[7] Zhang Y, Yang J. Chinese NER Using Lattice LSTM[J]. meeting of the association for computational linguistics, 2018: 1554-1564.
[8] Strubell E, Verga P, Belanger D, et al. Fast and Accurate Entity Recognition with Iterated Dilated Convolutions[J]. empirical methods in natural language processing, 2017: 2670-2680.
作者簡介及往期文章
張程博
博士研究生二年級、軟件工程專業
研究方向:日志增強技術,知識圖譜構建及應用
作者往期文章匯總:
淺談程序語言處理
語義網:這二十年的’老古董’究竟是什么
表示學習之跨語言表示學習
掃 描 關 注?
PKUFineLab
轉載請聯系:
colordown@pku.edu.cn
Where there is a will there is a way.
總結
以上是生活随笔為你收集整理的xmlstreamexception 参数实体未进行声明_命名实体识别研究进展概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: slf4j 如何返回堆栈_重学JS系列
- 下一篇: yolov5论文叫什么_论文格式与论文查