知識抽取-實體及關係抽取(一)
知識抽取涉及的“知識”通常是 清楚的、事實性的資訊,這些資訊來自不同的來源和結構,而對不同資料來源進行的知識抽取的方法各有不同,從結構化資料中獲取知識用 D2R,其難點在於複雜表資料的處理,包括巢狀表、多列、外來鍵關聯等,從連結資料中獲取知識用圖對映,難點在於資料對齊,從半結構化資料中獲取知識用包裝器,難點在於 wrapper 的自動生成、更新和維護,這一篇主要講從文字中獲取知識,也就是我們廣義上說的資訊抽取。
資訊抽取三個最重要/最受關注的子任務:
- 實體抽取 也就是命名實體識別,包括實體的檢測(find)和分類(classify)
- 關係抽取
通常我們說的三元組(triple)
- 事件抽取 相當於一種多元關係的抽取
篇幅限制,這一篇主要整理實體抽取和關係抽取,下一篇再上事件抽取。
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
announced earnings… |
正確的 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/