本文為轉載,原文鏈接: https://zhuanlan.zhihu.com/p/44772023
這一篇是關于知識抽取,整理并補充了上學時的兩篇筆記 NLP筆記 - Information Extraction 和 NLP筆記 - Relation Extraction,梳理了知識抽取的基本方法,包括傳統機器學習及經典的深度學習方法。
知識抽取涉及的“知識”通常是清楚的、事實性的信息,這些信息來自不同的來源和結構,而對不同數據源進行的知識抽取的方法各有不同,從結構化數據中獲取知識用 D2R,其難點在于復雜表數據的處理,包括嵌套表、多列、外鍵關聯等,從鏈接數據中獲取知識用圖映射,難點在于數據對齊,從半結構化數據中獲取知識用包裝器,難點在于 wrapper 的自動生成、更新和維護,這一篇主要講從文本中獲取知識,也就是我們廣義上說的信息抽取。
信息抽取三個最重要/最受關注的子任務:
- 實體抽取
也就是命名實體識別,包括實體的檢測(find)和分類(classify) - 關系抽取
通常我們說的三元組(triple) 抽取,一個謂詞(predicate)帶 2 個形參(argument),如 Founding-location(IBM,New York) - 事件抽取
相當于一種多元關系的抽取
篇幅限制,這一篇主要整理實體抽取和關系抽取,下一篇再上事件抽取。
相關競賽與數據集
信息抽取相關的會議/數據集有 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
people/person/nationality,
people/person/profession,
biology/organism_higher_classification,
location/location/contains
people/person/place-of-birth
film/film/genre
還有的一些世界范圍內知名的高質量大規模開放知識圖譜,如包括 DBpedia、Yago、Wikidata、BabelNet、ConceptNet 以及 Microsoft Concept Graph等,中文的有開放知識圖譜平臺 OpenKG……
實體抽取
實體抽取或者說命名實體識別(NER)在信息抽取中扮演著重要角色,主要抽取的是文本中的原子信息元素,如人名、組織/機構名、地理位置、事件/日期、字符值、金額值等。實體抽取任務有兩個關鍵詞:find & classify,找到命名實體,并進行分類。
主要應用:
- 命名實體作為索引和超鏈接
- 情感分析的準備步驟,在情感分析的文本中需要識別公司和產品,才能進一步為情感詞歸類
- 關系抽取(Relation Extraction)的準備步驟
- QA 系統,大多數答案都是命名實體
傳統機器學習方法
標準流程:
Training:
- 收集代表性的訓練文檔
- 為每個 token 標記命名實體(不屬于任何實體就標 Others O)
- 設計適合該文本和類別的特征提取方法
- 訓練一個 sequence classifier 來預測數據的 label
Testing:
- 收集測試文檔
- 運行 sequence classifier 給每個 token 做標記
- 輸出命名實體
編碼方式
看一下最常用的兩種 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,這主要是因為更多的類別會帶來數據的稀疏。
特征選擇:
Features for sequence labeling:
? Words
Current word (essentially like a learned dictionary)
Previous/next word (context)
? Other kinds of inferred linguistic classification
Part of speech tags
Dependency relations
? Label context
Previous (and perhaps next) label
再來看兩個比較重要的 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…
序列模型
NLP 的很多數據都是序列類型,像 sequence of characters, words, phrases, lines, sentences,我們可以把這些任務當做是給每一個 item 打標簽,如下圖:
常見的序列模型有 有向圖模型 如 HMM,假設特征之間相互獨立,找到使得 P(X,Y) 最大的參數,生成式模型;無向圖模型 如 CRF,沒有特征獨立的假設,找到使得 P(Y|X) 最大的參數,判別式模型。相對而言,CRF 優化的是聯合概率(整個序列,實際就是最終目標),而不是每個時刻最優點的拼接,一般而言性能比 HMM 要好,在小數據上擬合也會更好。
整個流程如圖所示:
討論下最后的 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。
Greedy Inference
- 優點:
- 速度快,沒有額外的內存要求
- 非常易于實現
- 有很豐富的特征,表現不錯
- 缺點:
- 貪婪
Beam Inference
在每一個位置,都保留 top k 種可能(當前的完整序列)
在每個狀態下,考慮上一步保存的序列來進行推進
- 優點:
- 速度快,沒有額外的內存要求
- 易于實現(不用動態規劃)
- 缺點:
- 不精確,不能保證找到全局最優
Viterbi Inference
動態規劃
需要維護一個 fix small window
優點:
- 非常精確,能保證找到全局最優序列
缺點: - 難以實現遠距離的 state-state interaction
深度學習方法
LSTM+CRF
最經典的 LSTM+CRF,端到端的判別式模型,LSTM 利用過去的輸入特征,CRF 利用句子級的標注信息,可以有效地使用過去和未來的標注來預測當前的標注。
評價指標
評估 IR 系統或者文本分類的任務,我們通常會用到 precision,recall,F1 這種 set-based metrics,見信息檢索評價的 Unranked Boolean Retrieval Model 部分,但是在這里對 NER 這種 sequence 類型任務的評估,如果用這些 metrics,可能出現 boundary error 之類的問題。因為 NER 的評估是按每個 entity 而不是每個 token 來計算的,我們需要看 entity 的 boundary。
以下面一句話為例
First Bank of Chicago announced earnings...
正確的 NE 應該是 First Bank of Chicago,類別是 ORG,然而系統識別了 Bank of Chicago,類別 ORG,也就是說,右邊界(right boundary)是對的,但是左邊界(left boundary)是錯誤的,
這其實是一個常見的錯誤。
正確的標注:
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,也需要精心設計。
其它-實體鏈接
實體識別完成之后還需要進行歸一化,比如萬達集團、大連萬達集團、萬達集團有限公司這些實體其實是可以融合的。
主要步驟如下:
-
實體識別
命名實體識別,詞典匹配 -
候選實體生成
表層名字擴展,搜索引擎,查詢實體引用表 -
候選實體消歧
圖方法,概率生成模型,主題模型,深度學習
補充一些開源系統:
- 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
關系抽取
關系抽取需要從文本中抽取兩個或多個實體之間的語義關系,主要方法有下面幾類:
- 基于模板的方法(hand-written patterns)
- 基于觸發詞/字符串
- 基于依存句法
-
監督學習(supervised machine learning)
- 機器學習
- 深度學習(Pipeline vs Joint Model)
-
半監督/無監督學習(semi-supervised and unsupervised)
- Bootstrapping
- Distant supervision
- Unsupervised learning from the web
基于模板的方法
基于觸發詞/字符串
首先是基于字符串的 pattern,舉一個 IS-A 的關系
Agar is a substance prepared from a mixture of red algae, **such as** Gelidium, for laboratory or industrial use
通過 such as 可以判斷這是一種 IS-A 的關系,由此可以寫的規則是:
“Y such as X ((, X)* (, and|or) X)”
“such Y as X”
“X or other Y”
“X and other Y”
“Y including X”
“Y, especially X”
另一個直覺是,更多的關系是在特定實體之間的,所以可以用 NER 標簽來幫助關系抽取,如
? located-in (ORGANIZATION, LOCATION)
? founded (PERSON, ORGANIZATION)
? cures (DRUG, DISEASE)
也就是說我們可以把基于字符串的 pattern 和基于 NER 的 pattern 結合起來,就有了下面的例子。
對應的工具有 Stanford CoreNLP 的 tokensRegex。
基于依存句法
通常可以以動詞為起點構建規則,對節點上的詞性和邊上的依存關系進行限定。流程為:
小結
手寫規則的 優點 是:
- 人工規則有高準確率(high-precision)
- 可以為特定領域定制(tailor)
- 在小規模數據集上容易實現,構建簡單
缺點: - 低召回率(low-recall)
- 特定領域的模板需要專家構建,要考慮周全所有可能的 pattern 很難,也很費時間精力
- 需要為每條關系來定義 pattern
- 難以維護
- 可移植性差
監督學習-機器學習
研究綜述
漆桂林,高桓,吳天星.知識圖譜研究進展[J].情報工程,2017,3(1):004-025
Zhou[13] 在 Kambhatla 的基礎上加入了基本詞組塊信息和 WordNet,使用 SVM 作為分類器,在實體關系識別的準確率達到了 55.5%,實驗表明實體類別信息的特征有助于提高關系抽取性能; Zelenko[14] 等人使用淺層句法分析樹上最小公共子樹來表達關系實例,計算兩顆子樹之間的核函數,通過訓練例如 SVM 模型的分類器來對實例進行分。但基于核函數的方法的問題是召回率普遍較低,這是由于相似度計算過程匹配約束比較嚴格,因此在后續研究對基于核函數改進中,大部分是圍繞改進召回率。但隨著時間的推移,語料的增多、深度學習在圖像和語音領域獲得成功,信息抽取逐漸轉向了基于神經模型的研究,相關的語料被提出作為測試標準,如 SemEval-2010 task 8[15]。基于神經網絡方法的研究有,Hashimoto[16] 等人利用 Word Embedding 方法從標注語料中學習特定的名詞對的上下文特征,然后將該特征加入到神經網絡分類器中,在 SemEval-2010 task 8 上取得了 F1 值 82.8% 的效果。基于神經網絡模型顯著的特點是不需要加入太多的特征,一般可用的特征有詞向量、位置等,因此有人提出利用基于聯合抽取模型,這種模型可以同時抽取實體和其之間的關系。聯合抽取模型的優點是可以避免流水線模型存在的錯誤累積[17-22]。其中比較有代表性的工作是[20],該方法通過提出全新的全局特征作為算法的軟約束,進而同時提高關系抽取和實體抽取的準確率,該方法在 ACE 語料上比傳統的流水線方法 F1 提高了 1.5%,;另一項工作是 [22],利用雙層的 LSTM-RNN 模型訓練分類模型,第一層 LSTM 輸入的是詞向量、位置特征和詞性來識別實體的類型。訓練得到的 LSTM 中隱藏層的分布式表達和實體的分類標簽信息作為第二層 RNN 模型的輸入,第二層的輸入實體之間的依存路徑,第二層訓練對關系的分類,通過神經網絡同時優化 LSTM 和 RNN 的模型參數,實驗與另一個采用神經網絡的聯合抽取模型[21]相比在關系分類上有一定的提升。但無論是流水線方法還是聯合抽取方法,都屬于有監督學習,因此需要大量的訓練語料,尤其是對基于神經網絡的方法,需要大量的語料進行模型訓練,因此這些方法都不適用于構建大規模的 Knowledge Base。
分類器
標準流程:
- 預先定義好想提取的關系集合
- 選擇相關的命名實體集合
- 尋找并標注數據
選擇有代表性的語料庫
標記命名實體
人工標注實體間的關系
分成訓練、開發、測試集
- 設計特征
- 選擇并訓練分類器
- 評估結果
為了提高 efficiency,通常我們會訓練兩個分類器,第一個分類器是 yes/no 的二分類,判斷命名實體間是否有關系,如果有關系,再送到第二個分類器,給實體分配關系類別。這樣做的好處是通過排除大多數的實體對來加快分類器的訓練過程,另一方面,對每個任務可以使用 task-specific feature-set。
可以采用的分類器可以是 MaxEnt、Naive Bayes、SVM 等。
特征
直接上例子:
E.g., American Airlines, a unit of AMR, immediately matched the move, spokesman Tim Wagner said
Mention 1: American Airlines
Mention 2: Tim Wagner
用到的特征可以有:
Word features
- Headwords of M1 and M2, and combination
- M1: Airlines, M2: Wagner, Combination: Airlines-Wagner
- Bag of words and bigrams in M1 and M2
- {American, Airlines, Tim, Wagner, American Airlines, Tim Wagner}
- Words or bigrams in particular positions left and right of M1/M2
- M2: -1 spokesman
- M2: +1 said
- Bag of words or bigrams between the two entities
- {a, AMR, of, immediately, matched, move, spokesman, the, unit}
Named Entities Type and Mention Level Features
- Named-entities types
M1: ORG
M2: PERSON - Concatenation of the two named-entities types
ORG-PERSON - Entity Level of M1 and M2 (NAME, NOMINAL, PRONOUN)
M1: NAME [it or he would be PRONOUN]
M2: NAME [the company would be NOMINAL]
Parse Features
- Base syntactic chunk sequence from one to the other
NP NP PP VP NP NP - Constituent path through the tree from one to the other
NP ↑ NP ↑ S ↑ S ↓ NP - Dependency path
Airlines matched Wagner said
Gazetteer and trigger word features
- Trigger list for family: kinship terms
parent, wife, husband, grandparent, etc. [from WordNet] -
Gazetteer:
List of useful geo or geopolitical words
Country name list
Other sub-entities
或者從另一個角度考慮,可以分為
- 輕量級
實體的特征,包括實體前后的詞,實體類型,實體之間的距離等 - 中等量級
考慮 chunk,如 NP,VP,PP 這類短語 - 重量級
考慮實體間的依存關系,實體間樹結構的距離,及其他特定的結構信息
監督學習-深度學習
深度學習方法又分為兩大類,pipeline 和 joint model
- Pipeline
把實體識別和關系分類作為兩個完全獨立的過程,不會相互影響,關系的識別依賴于實體識別的效果 - Joint Model
實體識別和關系分類的過程共同優化
深度學習用到的特征通常有:
- Position embeddings
- Word embeddings
- Knowledge embeddings
模型通常有 CNN/RNN + attention,損失函數 ranking loss 要優于交叉熵。
Pipeline
CR-CNN
Santos et. al Computer Science 2015
輸入層 word embedding + position embedding,用 6 個卷積核 + max pooling 生成句子向量表示,與關系(類別)向量做點積求相似度,作為關系分類的結果。
損失函數用的是 pairwise ranking loss function
訓練時每個樣本有兩個標簽,正確標簽 y+ 和錯誤標簽 c-,m+ 和 m- 對應了兩個 margin,
另外還有一些 tips:
- 負樣本選擇
最大的標簽,便于更好地將比較類似的兩種 label 分開
- 加了一個 Artifical Class,表示兩個實體沒有任何關系,可以理解為 Other/拒識,訓練時不考慮這一類,損失函數的第一項直接置 0,預測時如果其他 actual classes 的分數都為負,那么就分為 Other,對于整體的 performance 有提升
- position feature 是每個 word 與兩個 entity 的相對距離,強調了兩個實體的作用,認為距離實體近的單詞更重要,PE 對效果的提升明顯,但實際上只用兩個實體間的 word embedding 作為輸入代替整個句子的 word embedding+position embedding,也有相近效果,且輸入更少實現更簡單。
Att-CNN
Relation Classification via Multi-Level Attention CNNs
用了兩個層面的 Attention,一個是輸入層對兩個 entity 的注意力,另一個是在卷積后的 pooling 階段,用 **attention pooling 代替 max pooling **來加強相關性強的詞的權重。
輸入特征還是 word embedding 和 position embedding,另外做了 n-gram 的操作,取每個詞前后 k/2 個詞作為上下文信息,每個詞的 embedding size 就是。這個華東窗口的效果其實和卷積一樣,但因為輸入層后直接接了attention,所以這里先做了n-gram。
第一層 input attention 用兩個對角矩陣分別對應兩個 entity,對角線各元素是輸入位置對應詞與實體間的相關性分數 ,通過詞向量內積衡量相關性,然后softmax歸一化,每個詞對兩個實體各有一個權重
,然后進行加權把權重與輸入
融合,有三種融合方法,求平均、拼接、相減(類似transE操作,把relation看做兩個權重的差)。這一層的attention捕捉的是句中單詞與實體的詞向量距離,但其實有些線索詞如caused與實體的相似度不高但很重要。
接著做正常卷積,然后第二層用 attention pooling 代替 max-pooling,bilinear 方法計算相關度,然后歸一化,再做 max pooling 得到模型最后的輸出。
另外,這篇 paper 還改進了 Santos 提出的 Ranking loss,Ranking loss 里的 distance function 直接用了網絡的輸出,而這里定義了新的 distance function 來衡量模型輸出 和正確標簽對應的向量relation embedding
的距離。
用了 L2 正則,然后基于這一距離定義了目標函數:
兩個距離分別為網絡輸出與正例和與負例的距離,負例照例用了所有錯誤類別中與輸出最接近的,margin 設置的 1。
這應該是目前最好的方法,SemEval-2010 Task 8 上的 F1 值到了 88。
Att-BiLSTM 模型
Peng Zhou et. al ACL 2016
CNN 可以處理文本較短的輸入,但是長距離的依賴還是需要 LSTM,這一篇就是中規中矩的 BiLSTM+Attn 來做關系分類任務。
評測
各方法在 SemEval-2010 Task 8 上的評測:
Joint Model
Pipeline的方法會導致誤差的傳遞,端到端的方法直覺上會更優
LSTM-RNNs
Miwa et. al ACL 2016
用端到端的方式進行抽取,實體識別和關系分類的參數共享,不過判斷過程并沒有進行交互。
三個表示層
- Embedding layer (word embeddings layer)
用到了詞向量、詞性POS tags
、依存句法標簽Dependency types
、實體標簽entity labels
- Sequence layer (word sequence based LSTM-RNN layer)
BiLSTM 對句子進行編碼,輸入是 word embedding 和 POS embedding 的拼接,輸出是兩個方向的隱層單元輸出的拼接
然后進行實體識別,還是序列標注任務,兩層 NN 加一個 softmax 輸出標簽。打標簽的方法用 BILOU(Begin, Inside, Last, Outside, Unit),解碼時考慮到當前標簽依賴于上一個標簽的問題,輸入在 sequence layer 層的輸出上還加了上一時刻的 label embedding,用 schedule sampling 的方式來決定用 gold label 還是 predict label
- Dependency layer(dependency subtree based LSTM-RNN layer)
用 tree-structured BiLSTM-RNNs 來表示 relation candidate,捕捉了 top-down 和 bottom-up 雙向的關系,輸入是 sequence layer 的輸出,dependency type embedding
,以及label embedding
,輸出是
關系分類主要還是利用了依存樹中兩個實體之間的最短路徑(shortest path)。主要過程是找到 sequence layer 識別出的所有實體,對每個實體的最后一個單詞進行排列組合,再經過 dependency layer 得到每個組合的,然后同樣用兩層NN+softmax對該組合進行分類,輸出這對實體的關系類別。
第一項是 bottom-up LSTM-RNN 的 top LSTM unit,代表實體對的最低公共父節點(the lowest common ancestor of the target word pair p),第二、三項分別是兩個實體對應的 top-down LSTM-RNN 的 hidden state。
不同模型在 SemEval-2010 Task 8 數據集上的效果比較:
與我們的直覺相反,joint model 不一定能起正作用。不過上面的比較能得到的另一個結論是:外部資源可以來優化模型。
監督學習-評價指標
最常用的 Precision, Recall, F1
監督學習-小結
如果測試集和訓練集很相似,那么監督學習的準確率會很高,然而,它對不同 genre 的泛化能力有限,模型比較脆弱,也很難擴展新的關系;另一方面,獲取這么大的訓練集代價也是昂貴的。
半監督學習
研究綜述
漆桂林,高桓,吳天星.知識圖譜研究進展[J].情報工程,2017,3(1):004-025
Brin[23]等人通過少量的實例學習種子模板,從網絡上大量非結構化文本中抽取新的實例,同時學習新的抽取模板,其主要貢獻是構建了 DIPRE 系統;Agichtein[24]在 Brin 的基礎上對新抽取的實例進行可信度的評分和完善關系描述的模式,設計實現了 Snowball 抽取系統;此后的一些系統都沿著 Bootstrap 的方法,但會加入更合理的對 pattern 描述、更加合理的限制條件和評分策略,或者基于先前系統抽取結果上構建大規模 pattern;如 NELL(Never-EndingLanguage Learner)系統[25-26],NELL 初始化一個本體和種子 pattern,從大規模的 Web 文本中學習,通過對學習到的內容進行打分來提高準確率,目前已經獲得了 280 萬個事實。
Seed-based or bootstrapping approaches
半監督學習主要是利用少量的標注信息進行學習,這方面的工作主要是基于 Bootstrap 的方法以及遠程監督方法(distance supervision)。基于 Bootstrap 的方法 主要是利用少量實例作為初始種子(seed tuples)的集合,然后利用 pattern 學習方法進行學習,通過不斷迭代從非結構化數據中抽取實例,然后從新學到的實例中學習新的 pattern 并擴充 pattern 集合,尋找和發現新的潛在關系三元組。遠程監督 方法主要是對知識庫與非結構化文本對齊來自動構建大量訓練數據,減少模型對人工標注數據的依賴,增強模型跨領域適應能力。
Relation Bootstrapping
? Gather a set of seed pairs that have relation R
? Iterate:
- Find sentences with these pairs
- Look at the context between or around the pair and generalize the context to create patterns
- Use the patterns for grep for more pairs
看一個完整的例子
從 5 對種子開始,找到包含種子的實例,替換關鍵詞,形成 pattern,迭代匹配,就為(authoer,book) 抽取到了relation pattern, x, by y, 和x, one of y's
優點:
- 構建成本低,適合大規模構建
- 可以發現新的關系(隱含的)
缺點: - 對初始給定的種子集敏感
- 存在語義漂移問題
- 結果準確率較低
- 缺乏對每一個結果的置信度的計算
Snowball
對 Dipre 算法的改進。Snowball 也是一種相似的迭代算法,Dipre 的 X,Y 可以是任何字符串,而 Snowball 要求 X,Y 必須是命名實體,并且 Snowball 對每個 pattern 計算了 confidence value
Group instances w/similar prefix, middle, suffix, extract patterns
? But require that X and Y be named entites
? And compute a confidence for each pattern
ORGANIZATION {'s, in, headquaters} LOCATION
LOCATION {in, based} ORGANIZATION
Distant Supervision
基本假設:兩個實體如果在知識庫中存在某種關系,則包含該兩個實體的非結構化句子均能表示出這種關系。
具體步驟:
- 從知識庫中抽取存在關系的實體對
- 從非結構化文本中抽取含有實體對的句子作為訓練樣例,然后提取特征分類器
Distant Supervision 結合了 bootstrapping 和監督學習的長處,使用一個大的 corpus 來得到海量的 seed example,然后從這些 example 中創建特征,最后與有監督的分類器相結合。
與監督學習相似的是這種方法用大量特征訓練了分類器,通過已有的知識進行監督,不需要用迭代的方法來擴充 pattern。
與無監督學習相似的是這種方法采用了大量沒有標注的數據,對訓練語料庫中的 genre 并不敏感,適合泛化。
PCNN+Attention
Kang Liu et.al AI 2017
PCNN
單一池化難以刻畫不同上下文對句向量的貢獻,而進行分段池化,根據兩個實體把句子分成三段然后對不同部分分別進行池化,刻畫更為精準。
另見 Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks-
Sentence-level attention
遠程監督常用的 multi-instance learning,只選取最有可能的一個句子進行訓練預測,丟失了大部分信息,句子層面的 attention 對 bag 里所有句子進行加權作為 bag 的特征向量,保留盡可能多的信息,能動態減少噪聲句的權重,有利于解決錯誤標記的問題。
另見 Neural Relation Extraction with Selective Attention over Instances
這里對兩個實體向量作差來表示 relation 向量,如果一個實例能表達這種關系,那么這個實例的向量表達應該和
高度相似,根據這個假設來計算句向量和關系向量的相關性,其中
表示垂直級聯,
是PCNN得到的特征輸出,softmax歸一化再進行加權,最后再過softmax進行分類。
-
Entity representation
引入了實體的背景知識(Freebase 和 Wikipedia 提供的實體描述信息),增強了實體表達(entity representation),D 是 (entity, description) 的集合表示,是實體表示,
通過另一個傳統 CNN 對收集到的實體的描述句抽特征得到
希望和
盡可能相似,定義兩者間的誤差:
最后的損失函數是交叉熵和實體描述誤差的加權和:
小結
- 優點:
可以利用豐富的知識庫信息,減少一定的人工標注 - 缺點:
假設過于肯定,引入大量噪聲,存在語義漂移現象
很難發現新的關系
無監督學習
研究綜述
Bollegala[27]從搜索引擎摘要中獲取和聚合抽取模板,將模板聚類后發現由實體對代表的隱含語義關系; Bollegala[28]使用聯合聚類(Co-clustering)算法,利用關系實例和關系模板的對偶性,提高了關系模板聚類效果,同時使用 L1 正則化 Logistics 回歸模型,在關系模板聚類結果中篩選出代表性的抽取模板,使得關系抽取在準確率和召回率上都有所提高。
無監督學習一般利用語料中存在的大量冗余信息做聚類,在聚類結果的基礎上給定關系,但由于聚類方法本身就存在難以描述關系和低頻實例召回率低的問題,因此無監督學習一般難以得很好的抽取效果。
Open IE:
Open Information Extraction 從網絡中抽取關系,沒有訓練數據,沒有關系列表。過程如下:
1. Use parsed data to train a “trustworthy tuple” classifier
2. Single-pass extract all relations between NPs, keep if trustworthy
3. Assessor ranks relations based on text redundancy
E.g.,
(FCI, specializes in, sobware development)
(Tesla, invented, coil transformer)
半監督/無監督學習-評價指標
因為抽取的是新的關系,并不能準確的計算 precision 和 recall,所以我們只能估計,從結果集中隨機抽取一個關系的 sample,然后人工來檢驗準確率
也可以計算不同 recall level 上的 precision,比如說分別計算在前 1000,10,000,100,000 個新的關系中的 precision,在各個情況下隨機取樣。
然而,并沒有方法來計算 recall。