徐阿衡 | 知识抽取-实体及关系抽取(一)
本文轉載自公眾號:徐阿衡。
這一篇是關于知識抽取,整理并補充了上學時的兩篇筆記 NLP筆記 - Information Extraction 和 NLP筆記 - Relation Extraction,梳理了知識抽取的基本方法,包括傳統機器學習及經典的深度學習方法。
知識抽取涉及的“知識”通常是 清楚的、事實性的信息,這些信息來自不同的來源和結構,而對不同數據源進行的知識抽取的方法各有不同,從結構化數據中獲取知識用 D2R,其難點在于復雜表數據的處理,包括嵌套表、多列、外鍵關聯等,從鏈接數據中獲取知識用圖映射,難點在于數據對齊,從半結構化數據中獲取知識用包裝器,難點在于 wrapper 的自動生成、更新和維護,這一篇主要講從文本中獲取知識,也就是我們廣義上說的信息抽取。
信息抽取三個最重要/最受關注的子任務:
實體抽取
也就是命名實體識別,包括實體的檢測(find)和分類(classify)關系抽取
通常我們說的三元組(triple) 抽取,一個謂詞(predicate)帶 2 個形參(argument),如 Founding-location(IBM,New York)事件抽取
相當于一種多元關系的抽取
篇幅限制,這一篇主要整理實體抽取和關系抽取,下一篇再上事件抽取。
1. 相關競賽與數據集
信息抽取相關的會議/數據集有 MUC、ACE、KBP、SemEval 等。其中,ACE(Automated Content Extraction) 對 MUC 定義的任務進行了融合、分類和細化,KBP(Knowledge Base Population) 對 ACE 定義的任務進一步修訂,分了四個獨立任務和一個整合任務,包括
Cold Start KB (CSKB)
端到端的冷啟動知識構建Entity Discovery and Linking (EDL)
實體發現與鏈接Slot Filling (SF)
槽填充Event
事件抽取Belief/Sentiment (BeSt)
信念和情感
至于 SemEval 主要是詞義消歧評測,目的是增加人們對詞義、多義現象的理解。
ACE 的 17 類關系
具體的應用實例
常用的 Freebase relations
還有的一些世界范圍內知名的高質量大規模開放知識圖譜,如包括 DBpedia、Yago、Wikidata、BabelNet、ConceptNet 以及 Microsoft Concept Graph等,中文的有開放知識圖譜平臺 OpenKG……
2. 實體抽取
實體抽取或者說命名實體識別(NER)在信息抽取中扮演著重要角色,主要抽取的是文本中的原子信息元素,如人名、組織/機構名、地理位置、事件/日期、字符值、金額值等。實體抽取任務有兩個關鍵詞:find & classify,找到命名實體,并進行分類。
主要應用:
命名實體作為索引和超鏈接
情感分析的準備步驟,在情感分析的文本中需要識別公司和產品,才能進一步為情感詞歸類
關系抽取(Relation Extraction)的準備步驟
QA 系統,大多數答案都是命名實體
2.1 傳統機器學習方法
標準流程:
Training:
收集代表性的訓練文檔
為每個 token 標記命名實體(不屬于任何實體就標 Others O)
設計適合該文本和類別的特征提取方法
訓練一個 sequence classifier 來預測數據的 label
Testing:
收集測試文檔
運行 sequence classifier 給每個 token 做標記
輸出命名實體
2.1.1 編碼方式
看一下最常用的兩種 sequence labeling 的編碼方式,IO encoding 簡單的為每個 token 標注,如果不是 NE 就標為 O(other),所以一共需要 C+1 個類別(label)。而 IOB encoding 需要 2C+1 個類別(label),因為它標了 NE boundary,B 代表 begining,NE 開始的位置,I 代表 continue,承接上一個 NE,如果連續出現兩個 B,自然就表示上一個 B 已經結束了。
在 Stanford NER 里,用的其實是 IO encoding,有兩個原因,一是 IO encoding 運行速度更快,二是在實踐中,兩種編碼方式的效果差不多。IO encoding 確定 boundary 的依據是,如果有連續的 token 類別不為 O,那么類別相同,同屬一個 NE;類別不相同,就分割,相同的 sequence 屬同一個 NE。而實際上,兩個 NE 是相同類別這樣的現象出現的很少,如上面的例子,Sue,Mengqiu Huang 兩個同是 PER 類別,并不多見,更重要的是,在實踐中,雖然 IOB encoding 能規定 boundary,而實際上它也很少能做對,它也會把 Sue Mengqiu Huang 分為同一個 PER,這主要是因為更多的類別會帶來數據的稀疏。
2.1.2 特征選擇
Features for sequence labeling:
再來看兩個比較重要的 feature
Word substrings
Word substrings (包括前后綴)的作用是很大的,以下面的例子為例,NE 中間有 ‘oxa’ 的十有八九是 drug,NE 中間有 ‘:’ 的則大多都是 movie,而以 field 結尾的 NE 往往是 place。
Word shapes
可以做一個 mapping,把 單詞長度(length)、大寫(capitalization)、數字(numerals)、希臘字母(Greek eltters)、單詞內部標點(internal punctuation) 這些字本身的特征都考慮進去。
如下表,把所有大寫字母映射為 X,小寫字母映射為 x,數字映射為 d…
2.1.3 序列模型
NLP 的很多數據都是序列類型,像 sequence of characters, words, phrases, lines, sentences,我們可以把這些任務當做是給每一個 item 打標簽,如下圖:
常見的序列模型有 有向圖模型 如 HMM,假設特征之間相互獨立,找到使得 P(X,Y) 最大的參數,生成式模型;無向圖模型 如 CRF,沒有特征獨立的假設,找到使得 P(Y|X) 最大的參數,判別式模型。相對而言,CRF 優化的是聯合概率(整個序列,實際就是最終目標),而不是每個時刻最優點的拼接,一般而言性能比 CRF 要好,在小數據上擬合也會更好。
整個流程如圖所示:
討論下最后的 inference
最基礎的是 “decide one sequence at a time and move on”,也就是一個 greedy inference,比如在詞性標注中,可能模型在位置 2 的時候挑了當前最好的 PoS tag,但是到了位置 4 的時候,其實發現位置 2 應該有更好的選擇,然而,greedy inference 并不會 care 這些。因為它是貪婪的,只要當前最好就行了。除了 greedy inference,比較常見的還有 beam inference 和 viterbi inference。
2.1.3.1 Greedy Inference
優點:
速度快,沒有額外的內存要求
非常易于實現
有很豐富的特征,表現不錯
缺點:
貪婪
2.1.3.2 Beam Inference
在每一個位置,都保留 top k 種可能(當前的完整序列)
在每個狀態下,考慮上一步保存的序列來進行推進
優點:
速度快,沒有額外的內存要求
易于實現(不用動態規劃)
缺點:
不精確,不能保證找到全局最優
2.1.3.3 Viterbi Inference
動態規劃
需要維護一個 fix small window
優點:
非常精確,能保證找到全局最優序列
缺點:
難以實現遠距離的 state-state interaction
2.2 深度學習方法
2.2.1 LSTM+CRF
最經典的 LSTM+CRF,端到端的判別式模型,LSTM 利用過去的輸入特征,CRF 利用句子級的標注信息,可以有效地使用過去和未來的標注來預測當前的標注。
2.3 評價指標
評估 IR 系統或者文本分類的任務,我們通常會用到 precision,recall,F1 這種 set-based metrics,見信息檢索評價的 Unranked Boolean Retrieval Model 部分,但是在這里對 NER 這種 sequence 類型任務的評估,如果用這些 metrics,可能出現 boundary error 之類的問題。因為 NER 的評估是按每個 entity 而不是每個 token 來計算的,我們需要看 entity 的 boundary。
以下面一句話為例
1 | First Bank of Chicago |
正確的 NE 應該是 First Bank of Chicago,類別是 ORG,然而系統識別了 Bank of Chicago,類別 ORG,也就是說,右邊界(right boundary)是對的,但是左邊界(left boundary)是錯誤的,這其實是一個常見的錯誤。
1 2 3 4 5 | 正確的標注: ORG - (1,4) 系統: ORG - (2,4) |
而計算 precision,recall 的時候,我們會發現,對 ORG - (1,4) 而言,系統產生了一個 false negative,對 ORG - (2,4) 而言,系統產生了一個 false positive!所以系統有了 2 個錯誤。F1 measure 對 precision,recall 進行加權平均,結果會更好一些,所以經常用來作為 NER 任務的評估手段。另外,專家提出了別的建議,比如說給出 partial credit,如 MUC scorer metric,然而,對哪種 case 給多少的 credit,也需要精心設計。
2.4 其他-實體鏈接
實體識別完成之后還需要進行歸一化,比如萬達集團、大連萬達集團、萬達集團有限公司這些實體其實是可以融合的。
主要步驟如下:
實體識別
命名實體識別,詞典匹配
候選實體生成
表層名字擴展,搜索引擎,查詢實體引用表
候選實體消歧
圖方法,概率生成模型,主題模型,深度學習
補充一些開源系統:
http://acube.di.unipi.it/tagme
https://github.com/parthatalukdar/junto
http://orion.tw.rpi.edu/~zhengj3/wod/wikify.php
https://github.com/yahoo/FEL
https://github.com/yago-naga/aida
http://www.nzdl.org/wikification/about.html
http://aksw.org/Projects/AGDISTIS.html
https://github.com/dalab/pboh-entity-linking
?-End-
原文鏈接:http://www.shuang0420.com/2018/09/15/%E7%9F%A5%E8%AF%86%E6%8A%BD%E5%8F%96-%E5%AE%9E%E4%BD%93%E5%8F%8A%E5%85%B3%E7%B3%BB%E6%8A%BD%E5%8F%96/
OpenKG.CN
中文開放知識圖譜(簡稱OpenKG.CN)旨在促進中文知識圖譜數據的開放與互聯,促進知識圖譜和語義技術的普及和廣泛應用。
點擊閱讀原文,進入 OpenKG 博客。
總結
以上是生活随笔為你收集整理的徐阿衡 | 知识抽取-实体及关系抽取(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员面试100题之十六:二叉树中两个节
- 下一篇: Dockerfile构建docker镜像