日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

史上最可爱的关系抽取指南?从一条规则到十个开源项目

發布時間:2024/7/5 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 史上最可爱的关系抽取指南?从一条规则到十个开源项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正文來自訂閱號:AINLP

正文作者:太子長琴(NLP算法工程師)

小夕,我來給你出個題,看看你的反應如何?

好呀好呀,你說~

“梁啟超有一個著名的兒子,叫梁思成;同時還有一個著名的學生,叫徐志摩。這兩個人有一個共同的愛人,叫林徽因。林徽因的父親是林長民,林長民不僅自己是名人,還有一個名人哥哥,叫林覺民。林徽因最后與梁思成結婚了,徐志摩娶的則是陸小曼。”

那么問題來了,梁啟超和林長民是什么關系?

親家!

哇,你怎么一口就答出來了!?

!?(・_・;?

嘻嘻,我悄悄拿我的關系抽取模型跑了一下~( ̄▽ ̄)"

啥是關系抽取?

吶,跟我來~!


信息抽取是NLP領域的一個經典任務了,如何從不同來源的自然語言文本中提取真實可用的“知識”,并保證這些“知識”通常是清楚的、事實性的信息,是當今信息抽取領域的一個難點。

信息抽取三個最重要/最受關注的子任務:

  • 實體抽取
    也就是命名實體識別,包括實體的檢測(find)和分類(classify)

  • 關系抽取
    通常我們說的三元組(triple)抽取,一個謂詞(predicate)帶2個形參(argument),如 Founding-location(IBM,New York)

  • 事件抽取
    相當于一種多元關系的抽取

屬性一般的形式是(實體,屬性,屬性值),關系的一般形式是(實體,關系,實體)。簡單來區分的話,關系涉及到兩個實體,而屬性只有一個實體。
不過呢,屬性和關系的提取是可以相互借鑒的。下面小夕以關系抽取為出發點,從算法、數據集、評價指標、比賽這幾個方面給大家介紹關系抽取的相關知識。文末還有一個蛋哦~~~

關系提取方法

基于模板

這種方法比較簡單,一般都是根據先驗知識設計一些模式,然后在語料中匹配這些模式。舉幾個例子:

  • 馬云作為企業家,對應的模式是:XX (?:作為|是) YY

  • 劉強東是京東的創始人,對應的模式是:XX (?:作為|是) YY 的? ZZ

這里的 XX YY 和 ZZ 自然就是前一步識別出來的實體了。

相關資源包括:

  • 100 Best GitHub: Expert System | Meta-Guide.com

基于句法分析

主要是找到主謂賓,一般都是在句法分析的基礎上進行的。舉幾個例子:

  • 感冒是一種病,對應的句法結構為:感冒(SBV),是(Root),病(VOB)。

  • 王思聰是王健林的兒子,對應的句法結構為:王思聰(SBV),是(Root),王健林(ATT),兒子(VOB)

其中,SBV 是主謂關系,VOB 是動賓關系,ATT 是定中關系。

相關資源包括:

  • lemonhu/open-entity-relation-extraction: Knowledge triples extraction and knowledge base construction based on dependency syntax for open domain text.

  • aoldoni/tetre: TETRE: a Toolkit for Exploring Text for Relation Extraction

  • gabrielStanovsky/template-oie: Extract templated Open Information Extraction

基于機器學習

使用基本步驟如下:

  • (通常在一個句子中)尋找實體對

  • 判斷實體對之間是否存在關系

  • 送到分類器判斷關系的類別(預先定義好的)是什么

標準流程:

  • 預先定義好類別集合

  • 選擇相關實體集合

  • 標注

  • 設計特征

  • 訓練分類器

  • 評估結果

特征:

  • 詞相關

  • 詞法相關

  • 句法相關

  • 實體相關

之前那篇筆記里涉及的比較全面,而且現在幾乎都是結合深度學習模型做了,這塊就不再贅述了。

相關資源:

  • machinalis/iepy: Information Extraction in Python

  • marcolagi/quantulum: Python library for information extraction of quantities from unstructured text

基于深度學習

一般包括兩種做法:Pipeline 和 Joint model,前者就是把實體識別和關系分類分開;后者一起做。

特征一般是基于 Word embedding,Position embedding,POS,NER,WordNet;模型一般都是基于 CNN,RNN。

  • 端到端目前最好的是基于 Bert 的,在此之前,最好的是 Wang et al. 2016 的 Multi-Attention CNN。

  • 關系分類最好的是 (Cai et al., 2016) 的 BRCNN(Bidirectional Recurrent Convolutional Neural Network)。

從論文的趨勢看,端到端相對主流一些,不過對于我們的需求來說,關系分類更適合些。更多相關論文和模型可以進一步閱讀 NLP-progress/relationship_extraction,這里就不貼那些論文的東西了。

基于半監督

半監督是利用少量高精度的 pattern 種子或種子 tuple 來 bootstrap 一個分類器。具體而言,在大規模語料中查找包含已有 pattern 實體對的句子,然后提取和歸納實體的上下文來學習新的 pattern。

還是舉個栗子,比如我們有一個種子 tuple:(Queen,創作了,波西米亞狂想曲),然后可能找到了這些句子:

  • 波西米亞狂想曲是由 Queen 演唱的歌曲。

  • 波西米亞狂想曲是 Queen 最偉大的作品之一。

  • Queen 這首將近 6 分鐘的波西米亞狂想曲包括四個部分。

進而可以提取出類似這樣的一些 pattern:

  • (藝人,演唱,歌曲)

  • (歌曲,是,藝人,作品)

  • (藝人,作品,包括)

這些 pattern 又可以進一步尋找新的 pattern(把藝人和歌曲替換掉)。最終算法如下:

1 2 3 4 5 6 7 8 9 function BOOTSTRAP(Relation R) returns new relation tuplestuples←Gather a set of seed tuples that have relation Riteratesentences←find sentences that contain entities in tuplespatterns←generalize the context between and around entities in sentencesnewpairs←use patterns to grep for more tuplesnewpairs←newpairs with high confidencetuples←tuples + newpairsreturn tuples

Bootstrapping 系統會給新的 pattern 一個置信度以避免語義飄移。比如 “在演唱會現場粉絲的要求下,周杰倫不得不演唱了一首網絡歌曲《學貓叫》”,(周杰倫,演唱,學貓叫)顯然不是我們想要的。關于置信度的計算可以參考上面提到的筆記,對一個 pattern 主要考量兩方面因素:pattern 在現有 tuple 上的 hits 和在整個 Documents 上的 finds。

基于遠程監督

遠程監督從大規模數據庫中獲取的大量種子中產生出許多帶噪聲的 pattern features,然后用一個分類器組合這些 pattern。

舉個栗子,比如要學習 “出生地-出生日期” 關系,半監督的方法中,我們可能只有少量幾個啟動的種子,但是現在我們可以在 Wikipedia-based 數據庫(比如 DBPedia 或 Freebase) 中獲取大量包含 “出生地-出生日期” 的 tuple,比如(<Albert Einstein, Ulm>, <Hubble, Marshfield>?等等)。然后用命名實體工具提取包含兩個實體并 match 給定 tuple 的句子:

  • Hubble 出生于 Marshfield

  • Einstein,生于 1879,Ulm

  • Hubble 的出生地是 Marshfield

可以從中提取訓練集,一個訓練實例對應一個(關系,實體1,實體2)。

  • <出生地, Edwin Hubble, Marshfield>

  • <出生地, Albert Einstein, Ulm>

  • <出生日期, Albert Einstein, 1879>

接下來可以用基于特征的分類器或直接使用神經網絡分類器(不需要構建特征)。對于前者,可以從多個方面構建特征,比如實體 label,實體間單詞、路徑,相鄰詞等。每個 tuple 包括多個訓練實例的特征,每個實例又可以從多個句子中獲取詞法和句法特征。最終的算法如下:

1 2 3 4 5 6 7 8 function DISTANT SUPERVISION(Database D, Text T) returns relation classifier Cforeach relation Rforeach tuple (e1,e2) of entities with relation R in Dsentences←Sentences in T that contain e1 and e2f←Frequent features in sentencesobservations←observations + new training tuple (e1, e2, f, R)C←Train supervised classifier on observationsreturn C

最終的分類器將會根據特征發現關系。

基于無監督

無監督關系提取的目的就是在沒有標注數據,甚至沒有任何關系列表的情況下從 Web 或大規模語料中提取關系。這個任務一般叫 open information extraction 或 Open IE,關系通常都是幾個單詞(常以動詞開頭)。

ReVerb 系統從一個句子中提取關系一般包括四步:

  • 在句子上進行 POS 和實體識別。

  • 對句中每個動詞,找到以動詞開頭并滿足句法和詞匯約束(合并相鄰匹配項)的最長單詞序列 w。

  • 對每個短語 w,找到最左邊的名詞短語 x(不是相對代詞,wh-單詞或 “there”),在右邊找到最近的名詞短語 y。

  • 使用置信度分類器(一個邏輯回歸分類器)給關系 r=x, w, y) 一個置信度。

分類器是在 1000 個隨機選擇的句子上訓練所得,首先提取關系,然后人工標注是否正確,最后訓練分類器。使用到的一些特征如下(將提取到的關系及周圍的詞作為特征):

1 2 3 4 5 6 7 8 (x,r,y) covers all words in s the last preposition in r is for the last preposition in r is on len(s) ≤ 10 there is a coordinating conjunction to the left of r in s r matches a lone V in the syntactic constraints there is preposition to the left of x in s there is an NP to the right of y in s

小結

方法優點缺點
模板精準高,領域內可定制召回低,耗時耗力
句法分析構建簡單召回低,與句法結果相關
機器學習數據相關時精準較高特征工程較復雜,數據標注成本較高,訓練數據敏感
深度學習數據相關時精準高,泛化能力較好數據標注成本很高,訓練數據敏感
半監督 Bootstrapping成本低,可以發現新關系對初始種子敏感,語義飄移,準確率低
遠程監督精準高,訓練數據不敏感,無語義飄移依賴已有數據庫
無監督成本很低,容易實現需轉為權威格式存儲,動詞為中心的局限性

比賽

比賽最有名的大概就是 SemEval 2018 Task 10?和 SemEval-2010 Task 8 了。前者是一個二分類任務,目的是識別給定屬性能否區分兩個給定的概念。

ATTRIBUTECONCEPT1CONCEPT2LABEL
bookcasefridgewood1
bucketmuground0
anglecurvesharp1
pelicanturtlewater0
wirecoilmetal0

后者是關系分類任務,給定兩個標記的 nominals,預測它們的關系和關系的方向。

There were apples,?pears?and oranges in the?bowl.

(content-container, pears, bowl)

數據集

除了上面的兩個比賽的數據集,還有以下一些數據集:

  • FewRel: A Large-Scale Supervised Few-shot Relation Classification Dataset with State-of-the-Art Evaluation

    • 70K sentences

    • 100 relations

    • Wikipedia corpus

  • The New York Times Annotated Corpus - Linguistic Data Consortium

    • Stanford NER 提取實體

    • 自動與 Freebase knowledge base 中的實體關聯

    • 關系也是基于 Freebase knowledge base 中的事實

  • Stanford TACRED Homepage

    • 106,264 examples

    • newswire and web text from?TAC KBP Comprehensive English Source Corpora 2009-2014 - Linguistic Data Consortium

    • 41 relation types as used in the?TAC KBP challenges

評價方法

評價指標還是以 F1 為主:

  • 屬性判別是二分類任務,直接用 F1 評估。

  • 關系分類使用 Macro-averaged F1(9 個關系,不包括 OTHER,考慮關系方向)。

  • FewRel 主要是在 5-way-1-shot,5-way-5-shot,10-way-1-shot 和 10-way-5-shot 幾個任務上的準確率。

  • NYT 主要使用 N 個結果的精準率或 PR 圖。

  • TACRED 使用 Micro-averaged F1(不包括 no_relation type)。

更多資源

CrowdTruth Corpus 相關:

  • CrowdTruth/CrowdTruth-core: CrowdTruth framework for crowdsourcing ground truth for training & evaluation of AI systems

  • CrowdTruth/Open-Domain-Relation-Extraction: Crowdsourced data for open domain relation classification from sentences

  • CrowdTruth/Medical-Relation-Extraction: Crowdsourced ground truth for medical relation extraction.

其他資源:

  • roomylee/awesome-relation-extraction: ???? A curated list of awesome resources dedicated to Relation Extraction, one of the most important tasks in Natural Language Processing (NLP).

  • NLP-progress/relationship_extraction.md at master · sebastianruder/NLP-progress

參考資料:

  • 知識抽取-實體及關系抽取 - 徐阿衡 知乎

  • 知識圖譜入門 (三) 知識抽取 - pelhans 的博客

文末彩蛋

明天有「超級超級重磅的文章放出噢!小伙伴們記得提前做好準備鴨( ̄? ̄)

總結

以上是生活随笔為你收集整理的史上最可爱的关系抽取指南?从一条规则到十个开源项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。