【知识图谱】知识抽取与挖掘(I)
文章目錄
- 一、知識抽取任務定義和相關比賽
- 1、知識抽取任務定義
- 2、知識抽取的技術與難點
- 3、知識抽取的子任務
- (1)知識抽取 的 子任務
- 4、相關競賽與數據集
- 二、面向非結構化數據的知識抽取
- 1、實體抽取
- 2、實體識別與鏈接
- 3、關系抽取
- (1)基于模板的方法
- a、基于觸發詞的Pattern
- b、基于依存句法分析的Pattern
- c、小結
- (2)基于監督學習方法
- a、基于機器學習的方法
- b、基于深度學習的方法
- c、小結
- (3)基于半監督學習方法
- a、遠程監督方法
- b、Bootstrapping
- 4、事件抽取
- (1)概述
- (2)事件抽取任務
- (3)事件抽取的Pipeline方法
- (4)事件抽取的聯合方法
- a、Joint Inference(聯合推理方法):
- b、Joint Modeling
- (4)基于深度學習的事件抽取方法
- 三、面向結構化數據的知識抽取
- 1、Direct Mapping
- 2、R2RML
- 四、面向半結構化數據的知識抽取
- 1、百科類知識抽取
- 2、WEB網頁數據抽取:包裝器生成
- (1)包裝器簡介及描述方式
- (2)包裝器生成:包裝器歸納
- (3)包裝器生成:自動抽取
- (4)小結
- 3、WEB TABLE 抽取
一、知識抽取任務定義和相關比賽
1、知識抽取任務定義
從不同來源、不同結構的數據中進行抽取,形成知識存入到知識圖譜。
2、知識抽取的技術與難點
從結構化數據庫中獲取知識:D2R
- 難點:復雜表數據的處理
從鏈接數據中獲取知識:圖映射
- 難點:數據對齊
從半結構化(網站)數據中獲取知識:使用包裝器
- 難點:方便的包裝器定義方法,包裝器自動生成、更新與維護
從文本中獲取知識:信息抽取
- 難點:結果的準確率與覆蓋率
3、知識抽取的子任務
知識抽取:自動化從文本中發現和抽取相關信息。將非結構化轉化為結構化數據。
(1)知識抽取 的 子任務
- 命名實體識別(NER)
- 檢測:西瓜書的作者是周志華。→[西瓜書]:實體
- 分類:西瓜書的作者是周志華。→[西瓜書]:書籍
- 術語抽取
- 從語料中發現多個單詞組成的相關術語。
- 關系抽取:抽取出實體、屬性等之間的關系。
- eg:王思聰是萬達集團董事長王健林的獨子。→[王健林] <父子關系> [王思聰]
- 事件抽取:相當于多元關系抽取
- eg:據路透社消息,英國當地時間9月15日早8時15分,位于倫敦西南地鐵線District Line的Parsons Green地鐵站發生爆炸,目前已確定有多人受傷,具體傷亡人數尚不明確。目前,英國警方已將此次爆炸與起火定性為恐怖襲擊。
- eg:據路透社消息,英國當地時間9月15日早8時15分,位于倫敦西南地鐵線District Line的Parsons Green地鐵站發生爆炸,目前已確定有多人受傷,具體傷亡人數尚不明確。目前,英國警方已將此次爆炸與起火定性為恐怖襲擊。
- 共指消解
4、相關競賽與數據集
MUC(Message Understanding Conference):正規文本(新聞報告等)抽取
- 命名實體識別(Named Entity Recognition,NER)
- 共指消解(Co-reference Resolution,CR)
ACE(Automatic Content Extraction):對MUC的任務融合、分類、細化,涵蓋英語、阿拉伯語和漢語;
- 實體檢測與識別(Entity Detection And Recognition,EDR)
- 細化了實體分類(eg:person,organizations,locations……)
- 數值檢測與識別(Value Detection And Recognition,VAL)
- 分類:百分比、錢、郵箱、時間
- **時間表達檢測與識別(**Time Detection And Recognition,TERN)
- 關系檢測與識別(Relation Detection And Recognition,RDR)
- 事件檢測與識別(Event Detection And Recognition,VDR)
KBP(TAC Knowledge Base Population):對ACE的進一步修訂,分為四個獨立任務和一個整合任務。
- 實體發現與鏈接(Entity Discovery and Linking,EDL):需要知識庫中唯一URI去鏈接實體
- 槽填充(Slot Filling,SF):事件/多元關系抽取;
- 事件抽取(Event)
- 信念和情感(Belief and Sentiment,BeSt):抽取知識的額外描述
- 整合任務:端到端冷啟動知識構建:對數據層進行學習和擴充
SemEval(Semantic Evaluation):國際權威的詞義消歧評測
二、面向非結構化數據的知識抽取
1、實體抽取
實體抽取:抽取文本中的原子信息元素。包括人名、組織/機構名、地理位置、時間/日期、字符值、金額值等(原子根據場景來定義)
示例:
非結構化數據的實體抽取可以認為是一個序列標注問題,則可使用序列標注的方法,通過評價指標 F1值的比較如下:
- 人工特征:IOB標注體系——O(Others)/B-ORG(組織開始字)/I-ORG(組織中間詞)….
- 詞本身的特征:邊界特征、詞性、依存關系等
- 前后綴特征:姓氏、地名等
- 字本身的特征:是否是數字、是否是字符等
- HMM
- 有向圖模型、生成式模型(找到使 P(X,Y)P(X,Y)P(X,Y) 最大的參數)、假設特征之間是獨立的
- CRF
- 無向圖模型、判別式模型(找到使 P(Y∣X)P(Y|X)P(Y∣X) 最大的參數)、沒有關于特征之間是獨立的
- LSTM+CRF(主流)
- 判別式模型、端到端網絡、自動提取特征
- 模型:word embeddings->Bi-LSTM encoder->CRF Layer
2、實體識別與鏈接
示例:聊天機器人
- 如何處理大規模細粒度實體識別?
- 如何應對新興實體或實體新說法?
實體鏈接的流程:
- 文本 =》實體指稱識別 =》候選實體生成 =》候選實體消歧 =》鏈接
開源工具:Wikipedia Miner、DBpedia Spotligth、OpenCalais
實體鏈接示例:
- eg:中國證券網訊(記者 王雪青)中國證券記者今日獲悉,萬達集團的文明產業版圖將再添世界級新軍——傳奇影業,具體收購情況或于下周二正式發布。
3、關系抽取
關系抽取:從文本中抽取兩個或多個實體之間的語義關系。它是信息抽取研究領域的任務之一。
示例1:王健林談兒子王思聰:我期望他穩重一點。==》父子(王健林, 王思聰)
示例2:
方法分類:
- 基于模板的方法
- 基于觸發詞的Pattern
- 基于依存句法分析的Pattern
- 基于監督學習方法
- 機器學習方法
- 深度學習方法
- 基于弱監督學習方法
- 遠程監督
- Bootstrapping
(1)基于模板的方法
a、基于觸發詞的Pattern
首先確定觸發詞(trigger word),然后根據觸發詞做pattern的匹配及抽取,然后做一個映射。
分析:上述示例中的觸發詞為老婆、妻子、配偶等。根據這些觸發詞找出夫妻關系這種關系,同時通過命名實體識別給出關系的參與方。
b、基于依存句法分析的Pattern
文本一般具有一些句法結構,如主謂結構、動賓結構、從句結構、這些結構可以是跨多個詞所產生的。最常見的情況是動賓短語,所以通常以動詞為起點,構建規則,對節點上的詞性和邊上的依存關系進行限定(可以理解為泛化的正則表達式)。具體的流程如下:
示例:董卿現身國家博物館看展優雅端莊大方。
+ 分析:上圖中,我們可以看出這個例子中的依存關系路徑中 -1 代表謂語,同時可以看出 董卿 這個詞依存關系路徑為 1,說明此處的董卿是和詞順序為 1 的現身關聯,于是可以得到“董卿,現身”;接著看“國家博物館”也是和“現身”所關聯,所以可以得出一個動賓關系“現身,國家博物館”。
c、小結
優點
- 人工規則有高準確率(high-precision)
- 可以為特定領域定制(tailor)
- 在小規模數據集上容易實現,構建簡單
缺點
- 低召回率(low-recall)
- 特定領域的模板需要專家構建,要考慮周全所有可能的 pattern 很難,也很費時間精力
- 需要為每條關系來定義 pattern
- 難以維護
- 可移植性差
(2)基于監督學習方法
a、基于機器學習的方法
在給定實體對的情況下,根據句子上下文對實體關系進行預測,傳統的執行流程為:
- 預先定義好關系的類別。
- 人工標注一些數據(獲得數據)。
- 設計特征表示(特征工程)。
- 選擇一個分類方法。(分類器:SVM、NN、樸素貝葉斯)
- 評估方法。
特征表示
- 輕量級特征——詞
- 實體前后的詞
- 實體的類型
- 實體之間的距離(也就是實體之間的相似度)
- 中等量級特征——詞組
- Chunk序列:如詞組
- 重量級特征——句子
- 實體間的依存關系路徑
- 實體間樹結構的距離
- 特定的結構信息
b、基于深度學習的方法
特征表示
- Position embeddings
- Word embeddings
- Knowledge embedding
- …
方法分類
- Pipeline:識別實體和關系分類是完全分離的兩個過程(即串聯方式),不會相互影響,關系的識別依賴于實體識別的效果
- Joint Model:實體識別和關系分類的過程是共同優化的
典型的Pipeline方法——存在錯誤傳遞的問題
- CR-CNN模型
- 僅使用詞向量和位置向量作為輸入
- F1值84.1,超過現有的非深度學習方法
- Att-CNN 模型
- 應用注意力機制(表現為不同的詞對上下文來說有不同的權重)
- F1值88.0
- Att-BLSTM模型
典型的Joint Model方法——效果一般情況下優于Pipeline,但是參數空間會提高。
- LSTM-RNNs模型
c、小結
- 優點:準確率高,標注數據越多越準確
- 缺點:標注數據成本太高;不能擴展新的關系
(3)基于半監督學習方法
標注數據不足 或 數據量又特別大的情況下 ==》半監督學習的方法
a、遠程監督方法
遠程監督:知識庫與非結構化文本對齊來自動構建大量訓練數據,減少模型對人工標注數據的依賴,增強模型跨領域適應能力。
基本假設:若兩個實體在知識庫中存在某種關系,則包含該兩個實體的非結構化句子均能表示出這種關系。
示例:
在某知識庫中存在: 創始人 (喬布斯, 蘋果公司) 則可構建訓練正例:喬布斯是蘋果公司的聯合創始人和CEO具體的步驟:
- 從知識庫中抽取存在關系的實體對;
- 從非結構化文本中抽取含有實體對的句子作為訓練樣例。
小結:
- 優點:可以利用豐富的知識庫信息,減少一定的人工標注,
- 缺點:假設過于肯定,引入大量的噪聲,存在語義漂移現象;很難發現新的關系。
b、Bootstrapping
Bootstrapping:
- 通過在文本中匹配實體對和表達關系短語模式,尋找和發現新的潛在關系三元組。
- 具體來講,主要是利用少量實例作為初始種子(seed tuples)的集合,然后利用 pattern 學習方法進行學習,通過不斷迭代從非結構化數據中抽取實例,然后從新學到的實例中學習新的 pattern 并擴充 pattern 集合,尋找和發現新的潛在關系三元組。
整體步驟:
- 假設給定了一個種子集合,種子詞一般都是實體對,如:<姚明,葉莉>
- 從文檔中抽取出包含種子實體詞的新聞,eg:
姚明 老婆 葉莉 簡歷身高曝光 ==》X 老婆 Y 簡歷身高曝光
姚明 與妻子 葉莉 外出赴約 ==》X 與妻子 Y 外出赴約
- 將抽取出的Pattern去文檔集中匹配
小豬 與妻子 伊萬 外出赴約
- 根據Pattern抽取出的新文檔如種子庫,迭代多輪直到不符合條件
小結
- 優點:構建成本低,適合大規模的構建;同時還可以發現新的(隱含的)關系。
- 缺點:對初始給定的種子集敏感;存在語義漂移現象;結果的準確率較低等。
4、事件抽取
(1)概述
事件:指發生的事情,通常具有時間、地點、參與者等屬性,事件的發生可能因為一個動作的產生或者系統狀態的改變。
事件抽取:從自然語言中抽取出用戶感興趣的事件信息,并以結構化的形式呈現出來,例如事件發生的時間、地點、發生原因、參與著等。
事件抽取的相關術語:
- 事件描述 (Event Mention):描述事件的詞組或句子;
- 事件觸發 (Event Trigger):表明事件出現的主要詞匯;
- 事件元素 (Event Argument):事件的重要信息;
- 元素角色 (Argument Role):元素在句子中的語義角色。
示例:
事件嵌套:事件是可以嵌套的,可以做事件的檢測與跟蹤。
(2)事件抽取任務
事件抽取任務最基礎的部分包括:
- 識別事件觸發詞及事件類型
- 抽取事件元素同時判斷其角色
- 抽出描述事件的詞組或句子
此外,事件抽取任務還包括:
- 事件屬性標注
- 事件共指消解
(3)事件抽取的Pipeline方法
有監督的事件抽取方法的標準流程一種pipeline的方法,將事件抽取任務轉化為多階段的分類問題,
需要的分類器包括:
- 事件觸發次分類器(Trigger Classifier)
- 用于判斷詞匯是否是是事件觸發詞,以及事件的類別
- 元素分類器(Argument Classifier)
- 判別詞組是否是事件的元素
- 元素角色分類器(Role Classifier)
- 判定元素的角色類別
- 屬性分類器(attribute classifier)
- 判定事件的屬性
- 可報告性分類器(Reportable-Event Classifier)
- 判定是否存在值得報告的事件實例
分類器模型可以是機器學習方法中的各種分類器模型,比如MaxEnt、SVM等。
典型的分類特征:
存在問題:
- 誤差累積:誤差從前面的環節傳播到后面的環節,使得性能急劇衰減
- 環節獨立:各個環節的預測任務是獨立的,之間沒有互動
- 無法處理全局的依賴關系
(4)事件抽取的聯合方法
a、Joint Inference(聯合推理方法):
是一種集成學習的方法,構建 nnn 個模型,最后對 nnn 個模型的結果進行求和等方法來預測。
可以基于以下方法:
- Constrained Conditional Models
- ILP Re-ranking (整形規劃重排序)
- Dual decomposition
b、Joint Modeling
實際上是一種多任務學習,在不同任務中共享一些隱層特征,如word特征、embedding特征、句法特征等。
可以基于如下方法:
- Probabilistic Graphical Models
- Markov logic networks
(4)基于深度學習的事件抽取方法
優勢:
- 減少了對外部NLP工具的依賴,甚至不依賴NLP工具,建模成端到端的系統。
- 使用詞向量作為輸入,詞向量蘊含豐富的語言特征。
- 自動提取句子特征,避免人工設計特征的繁瑣工作。
基于動態多池化卷積神經網絡的事件抽取方法:
動態多池化層:
- 傳統的神經網絡利用最大池化層
- 事件抽取中,一個句子可能包含多個事件
三、面向結構化數據的知識抽取
結構化數據 ==》RDF或其他形式的知識庫內容
- 一種常用的W3C推薦的映射語言是 R2RML(RDB2RDF) 。一種映射結果如下圖所示:
1、Direct Mapping
通過明確在關系模式中編碼的語義,將關系數據轉換為RDF。如下按照一些簡單的規則創建 URIs: Map
- 數據庫的表作為本體中的類(Class)。比如我們在mysql中保存的數據,一共有5張表。那么通過映射后,我們的本體就有5個類了,而不是我們自己定義的三個類。
- 表的列作為屬性(Property)。
- 表的行作為實例/資源。
- 表的單元格值為字面量
- 如果單元格所在的列是外鍵,那么其值為IRI,或者說實體/資源。
示例:
2、R2RML
R2RML(RDB to RDF Mapping Language):映射的任務是將邏輯表作為輸入,然后依據 triples map規則 將其轉換成三元組的集合。
- 邏輯表:一個數據庫表、一個數據庫視圖 或者 一個SQL查詢
- Triples Maps:通過主語、謂語、賓語映射產生Triples。
示例:
- The subject IRI is generated from the empno column by the template(http://data.example.com/employee/{empno})
- The predicate IRI is the constant ex:name
- The object is the literal "SMITH”, that is copied from the ENAME column
RDF Triples:
<http://data.example.com/employee/7369> rdf:type ex:Employee. <http://data.example.com/employee/7369> ex:name "SMITH". <http://data.example.com/employee/7369> ex:department <http://data.example.com/department/10>.<http://data.example.com/department/10> rdf:type ex:Department. <http://data.example.com/department/10> ex:name "APPSERVER". <http://data.example.com/department/10> ex:location "NEW YORK". <http://data.example.com/department/10> ex:staff 1.-
數據庫表映射:在Employee類上,將 ENAME 映射到 ex:name 上。
@prefix rr: <http://www.w3.org/ns/r2rml#>. @prefix ex: <http://example.com/ns#>. <#TriplesMap1>rr:logicalTable [ rr:tableName "EMP" ];rr:subjectMap [rr:template "http://data.example.com/employee/{EMPNO}";rr:class ex:Employee;];rr:predicateObjectMap [rr:predicate ex:name;rr:objectMap [ rr:column "ENAME" ];].#### 結果 # <http://data.example.com/employee/7369> rdf:type ex:Employee. # <http://data.example.com/employee/7369> ex:name "SMITH". -
視圖映射:
## 創建視圖 <#DeptTableView> rr:sqlQuery """ SELECT DEPTNO, DNAME,LOC, (SELECT COUNT(*) FROM EMP WHERE EMP.DEPTNO=DEPT.DEPTNO) AS STAFF FROM DEPT; """.## 視圖映射 <#TriplesMap2>rr:logicalTable <#DeptTableView>;rr:subjectMap [rr:template "http://data.example.com/department/{DEPTNO}";rr:class ex:Department;];rr:predicateObjectMap [rr:predicate ex:name;rr:objectMap [ rr:column "DNAME" ];].rr:predicateObjectMap [rr:predicate ex:location;rr:objectMap [ rr:column "LOC" ];].rr:predicateObjectMap [rr:predicate ex:staff;rr:objectMap [ rr:column "STAFF" ];].### 結果 # <http://data.example.com/department/10> rdf:type ex:Department. # <http://data.example.com/department/10> ex:name "APPSERVER". # <http://data.example.com/department/10> ex:location "NEW YORK". # <http://data.example.com/department/10> ex:staff 1. -
連接兩個邏輯表
<#TriplesMap1>rr:predicateObjectMap [rr:objectMap [rr:parentTriplesMap<#TriplesMap2>;rr:joinCondition [rr:child "DEPTNO";rr:parent "DEPTNO";];]; ].#### 結果 # <http://data.example.com/employee/7369> ex:department <http://data.example.com/department/10>.
四、面向半結構化數據的知識抽取
1、百科類知識抽取
從百科里抽取知識的流程介紹:
示例:以從維基百科抽取圖靈獎獲得者Tim Berners-Lee來介紹。對網頁進行分析,抽取感興趣部分。
- 抽取出 Label,將短摘要(第一段)作為 comment,長摘要作為 abstract;
- 通過Wikimedia Commons抽取出圖像信息作為depiction;
- 將infobox的數據轉換成一些property;
- 此外,還包括抽取內鏈、類別、歧義以及重定向等數據。
2、WEB網頁數據抽取:包裝器生成
互聯網中的數據往往也具有一定的結構,我們可以通過包裝器等方法進行知識的抽取。
(1)包裝器簡介及描述方式
包裝器:一個能夠將數據從HTML網頁中抽取出來,并且將它們還原為結構化的數據的軟件程序。包裝器抽取流程如下:
包裝器的生成方法:手工方法、包裝器歸納方法和自動抽取的方法。
包裝器生成:手工方法
- 需要查看網頁結構和代碼,通過人工分析,手工寫出適合這個網站的表達式,這個表達式的形式可以是XPath表達式,也可以是CSS選擇器的表達式等。
(2)包裝器生成:包裝器歸納
包裝器歸納:是基于有監督學習的,它從標注好的訓練樣例集合中學習數據抽取規則,用于從其他用相同標記或相同網頁模板抽取目標數據。
主要步驟:
- 網頁清洗
- 清洗網頁結構不規范網頁,eg:前后標簽不對成,沒有結束標簽符。不規范的網頁結構容易在抽取的過程中產生噪聲。
- 清洗可以用 Tidy 來完成。
- 網頁標注
- 標注所需要抽取數據的過程。 標注的過程可以是給網頁中的某個位置打上特殊的標簽表明這是需要抽取的數據。
- 包裝器空間的生成
- 對標注的數據生成XPath集合空間并進行歸納,形成若干個子集。
- 歸納的規則是在子集中的XPath能夠覆蓋多個標注的數據項,具有一定的泛化能力。
- 包裝器評估
- 評估規則一:準確率。 將篩選出來的包裝器對原先訓練的網頁進行標注,統計與人工標注的相同項的數量,除以當前標注的總數量。準確率越高評分越高。
- 評估規則二:召回率。將篩選出來的包裝器對原先訓練的網頁進行標注,統計與人工標注的相同項的數量,除以人工標注的總數量。召回率越高評分越高。
- 包裝器歸納結果
- 經過前面一系列的工作之后,得到所需要抽取信息的XPath的路徑。
示例:
(3)包裝器生成:自動抽取
網站中的數據通常是用很少的一些模板來編碼的,通過挖掘多個數據記錄中的重復模式來尋找這些模板是可能的。
- 包裝器訓練:網頁聚類
自動抽取網頁中的信息不需要任何的先驗知識和人工數據的標注。將一組網頁通過聚類將相似的網頁分成若干個組,每組相似的網頁將獲得不同的包裝器。 - 包裝器應用
將需要抽取的網頁與之前生成包裝器的網頁進行比較,在某個分類下則使用該分類下的包裝器來獲取網頁中的信息。
示例:
(4)小結
三種實現方法對比
挑戰
- 動態生成的網頁中很多信息無法直接通過網頁獲取;
- 對包裝器的實時性要求越來越高,維護成本依舊很大。
3、WEB TABLE 抽取
為了解釋Web table中隱含的語義,一些工作將其中的內容標注為RDF三元組。這種標注的第一步就是實體鏈接 (entity linking ),即將表格中各單元格的字符串映射到給定知識庫的實體上。
表格實體鏈接步驟:
- 候選生成
針對表格單元格中的每個字符串,從給定的知識庫中識別候選實體。(token匹配 ,字符串匹配,同義詞匹配……)
示例:
- 實體消岐
從給定字符串所對應的實體集中選擇唯一的一個實體作為鏈接實體。
示例: 位于相同行或者列的字符串可能相關,換句話說,出現在同一表格中的任意兩個字符串都存在某種潛在的關聯。
ps:紅色方框為“邁克爾·喬丹”的相關字符串
構建實體消岐圖:
對每張給定的表格建立一個實體消岐圖每個圖由如下的元素構成:
- 字符串節點, 實體節點
- 字符串-實體 邊: 字符串與候選實體間的無向邊,
- 實體-實體 邊: 實體間的無向邊。
示例:
計算實體鏈接影響因子(兩類)
- 每個字符串的初始重要性(importance of each mention);
- 不同節點間的語義相關度(semantic relatedness between different nodes)。
實體消岐算法—PageRank:
- PageRank算法 (Iterative probability propagation) 用來整合不同的實體鏈接影響因子從而做出最終的實體鏈接決定.
生成三元組:
總結
以上是生活随笔為你收集整理的【知识图谱】知识抽取与挖掘(I)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【知识图谱】知识表示与知识建模
- 下一篇: 【知识图谱】知识抽取与挖掘(Ⅱ)