1. 程式人生 > >斯坦福大學-自然語言處理入門 筆記 第九課 資訊抽取(information extraction)

斯坦福大學-自然語言處理入門 筆記 第九課 資訊抽取(information extraction)

一、介紹

1、資訊抽取(information extraction)

  • 資訊抽取(IE)系統
    • 找到並理解文字中的有限的相關性
    • 從很多的文件之中收集資訊
    • 產生一個相關資訊的結構化的表徵
    • 目的:
      • 進行資訊的組織使之對人有用
      • 以相對精確的語義形式存放資訊方便計算機演算法後續的查詢
  • 資訊抽取(IE)系統一般會抽取清晰的實際的資訊(誰對誰做了什麼在什麼時候)
    在這裡插入圖片描述
  • 低程度的資訊抽取
    • 一般被用在蘋果或者是谷歌的郵件上,或者是web索引。通常是基於正則表達和名字列表。
      在這裡插入圖片描述

      在這裡插入圖片描述

2、命名實體識別(named entity recognition)

  • 這是在資訊抽取中十分重要的一個分支:找到並識別文件中的名字
    在這裡插入圖片描述
  • 主要用途:
    • 命名實體的索引(index)和連結(link off)
    • 分析情感指向的公司或者產品
    • 很多資訊抽取的關係都是和命名實體相關
    • 在問題回答(question answer)領域,答案往往是命名實體。

二、命名實體識別的評估

  • 正確識別一個命名實體,需要包含兩個方面,一方面需要找到表示命名實體的片語,另一方面對命名實體正確歸類,如果下圖所示:
    在這裡插入圖片描述
  • 對命名實體識別(NER)或者資訊抽取(IE)而言,用之前介紹的recall和precision來進行評估會存在一個問題:沒有辦法定義邊界錯誤(boundary error)。舉例子而言:
    對於句子:First Bank of Chicago announced earnings…而言,機器識別Bank of Chicago作為實體,但實際First Bank of Chicago才是命名實體。對於這樣的錯誤,我們在歸類的時候即可以歸到FN也可以歸到FP。所以,基於這樣的度量標準,實際上邊界錯誤比無法識別(只會歸類到FN)更嚴重。
  • 其他度量,比如MUC得分會好一些

三、命名實體識別的序列模型(sequence model)

1、命名實體識別(NER)的機器學習序列模型

  • 訓練
    • 收集一系列有代表性的訓練文件
    • 給每個token標註它的類別,如果不是命名實體的話就標註other(O)
    • 設計適合文件和類別的特徵抽取機制
    • 訓練一個序列分類來預測資料的類別
  • 測試
    • 一系列的測試文件
    • 執行序列模型來給每個token進行標註
    • 輸出識別出的實體

2、對序列標註進行類別編碼

這裡有兩種可以使用的編碼方式:

  • IO編碼,只標記每個詞的類別。這裡需要的標註個數是C+1。
  • IOB編碼,除了標記每個詞的類別之外,標記還會表示出這個類別的開始和結束,如下圖B-PER表示Person類別的開始,I-PER表示person類別的結束。這樣的話,當幾個相同的命名實體是連在一起的時候,我們可以區分出有幾個命名實體。這裡需要的標註個數是2C+1。
    在這裡插入圖片描述
  • 在實際應用中,IO編碼效果可能會更好。(在Stanford的姓名粗識別中使用IO編碼)
    • 一方面是IO編碼的速度更快,標註數量更少
    • 另一方面,幾個相同的命名實體是連在一起的情況很少,而且在這個情況下IOB編碼也很難正確識別出命名實體的開始和結束。

3、序列標記的特徵

  • 單詞
    • 目前的單詞
    • 前一個/後一個單詞(上下文)
  • 其他推論型的語言分類
    • 詞類標記
  • 上下文的標籤(label)
    • 前一個(或者後一個)詞的標籤
  • 單詞的子字串:我們可以利用單詞中的某些字元來進行判別,比如含有oxa子字串的單詞都是drug。
    在這裡插入圖片描述
  • 單詞的形狀:包括單詞的長度、大小寫、是否含有數字、是否含有希臘字母、連詞符。利用下面的規則,我們將其抽取成特徵。
    • A,B,C…→X
    • a,b,c→x
    • 1,2,3…→d
    • - → -
    • . → .
    • 對於長過四個字母的單詞,我們取前兩個和後兩個;如果單詞小於四個的話,我們就按照原來的長度轉化。
    • 例子如下:
      在這裡插入圖片描述

四、最大熵馬爾可夫模型(MEMMs)/條件馬爾可夫模型

很多在NLP領域的問題的資料都是序列資料(單詞序列,方塊字序列,行序列,句子序列等等)。而我們的任務則是對每一項都進行標註。
在這裡插入圖片描述

1、最大熵馬爾可夫模型(MEMMs)/條件馬爾可夫模型

  • 最大熵馬爾可夫模型(MEMMs)/條件馬爾可夫模型,這兩個分類器都是每次做一個決定,基於目前的觀測和過去的決定(decision)。
  • 每一次進行分類,目的是對目前的單詞進行標註,該分類器的計算和標準分類器是類似的。
  • 所使用的特徵包括單詞(之前,目前,之後),標註(之前的單詞),還有其他的單詞特徵(單詞型別、字尾、-等等)
    在這裡插入圖片描述
  • 整體的推斷系統如下
    在這裡插入圖片描述

2、三種推斷

  • 貪婪推斷(greedy inference)
    • 從左邊開始,用分類器依次給每個位置標記(label),分類器可以依靠之前的標記結果以及觀測資料。
    • 優點:
      • 快,沒有額外的空間儲存要求
      • 非常容易實施
      • 當特徵很多的時候效果很好
    • 缺點
      • 因為使用的是貪婪演算法,所以可能會發生標記錯誤
  • 束推斷(beam inference)
    • 這個方法不會簡單標記每個單詞,相反它會保留下一些可能,在每個位置都保持前k個序列(束),每次完成一個標記就滑動前進一個序列。
    • 優點
      • 快,3-5個單詞的束就可以得到比較好的效果
      • 很容易實施(不需要進行動態規劃)
    • 缺點
      • 對有些標記而言,可能在表現出比較好的概率之前,就已經離開波束了
  • 維特比推斷(Viterbi Inference)
    • 動態規劃,需要關於狀態影響的滑動視窗(比如,過去的兩個狀態是相關的)
    • 優點:精確
    • 缺點:對長距離的單詞與單詞之間的影響很難應用(束推斷也不允許長距離的序列)。

3、條件隨機場(CRFs)

這也是一個整個序列的條件模型,而不是鏈式的模型(local model)。模型形如下圖,只不過c和d是序列。但是如果特徵f是當前(local)的,條件序列似然可以用動態規劃來計算。
在這裡插入圖片描述

  • 條件隨機場的訓練是很慢的,但是可以避免causal-competition偏誤
  • 有一些比較先進的方法都在被廣泛的應用:比如a variant using a max margin criterion