1. 程式人生 > >知識抽取-實體及關係抽取(一)

知識抽取-實體及關係抽取(一)

知識抽取涉及的“知識”通常是 清楚的、事實性的資訊,這些資訊來自不同的來源和結構,而對不同資料來源進行的知識抽取的方法各有不同,從結構化資料中獲取知識用 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:

  1. 收集代表性的訓練文件
  2. 為每個 token 標記命名實體(不屬於任何實體就標 Others O)
  3. 設計適合該文字和類別的特徵提取方法
  4. 訓練一個 sequence classifier 來預測資料的 label

Testing:

  1. 收集測試文件
  2. 執行 sequence classifier 給每個 token 做標記
  3. 輸出命名實體

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

優點:

  1. 速度快,沒有額外的記憶體要求
  2. 非常易於實現
  3. 有很豐富的特徵,表現不錯

缺點:

  1. 貪婪

2.1.3.2 Beam Inference

  • 在每一個位置,都保留 top k 種可能(當前的完整序列)
  • 在每個狀態下,考慮上一步儲存的序列來進行推進

優點:

  1. 速度快,沒有額外的記憶體要求
  2. 易於實現(不用動態規劃)

缺點:

  1. 不精確,不能保證找到全域性最優

2.1.3.3 Viterbi Inference

  • 動態規劃
  • 需要維護一個 fix small window

優點:

  1. 非常精確,能保證找到全域性最優序列

缺點:

  1. 難以實現遠距離的 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 其他-實體連結

實體識別完成之後還需要進行歸一化,比如萬達集團、大連萬達集團、萬達集團有限公司這些實體其實是可以融合的。

主要步驟如下:

  1. 實體識別
命名實體識別,詞典匹配
  2. 候選實體生成
表層名字擴充套件,搜尋引擎,查詢實體引用表
  3. 候選實體消歧
圖方法,概率生成模型,主題模型,深度學習

補充一些開源系統:

  • 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/