大綱
- 面向文本的知識抽取
Deep Dive關(guān)系抽取實戰(zhàn)
開放域關(guān)系抽取 - 知識挖掘
實體消岐與鏈接
知識規(guī)則挖掘
知識圖譜表示學習
面向文本的知識抽取
關(guān)系抽取分類
KBC系統(tǒng)
- 填充、融合不同來源的知識
輸入:非結(jié)構(gòu)化的期刊文章,半結(jié)構(gòu)化的html、table等
輸出:結(jié)構(gòu)化知識庫
Deepdive
- KBC系統(tǒng)的自動搭建框架
特征工程+distant supervision+圖優(yōu)化
考慮全局最優(yōu)而不是某個三元組最優(yōu)
幫助領(lǐng)域?qū)<易灾鞔罱↘B - 技術(shù)難點
設(shè)計一個KBC系統(tǒng)的工作流,包括文本預(yù)處理、特征抽取、統(tǒng)計推理與學習、迭代優(yōu)化等;
利用分布式數(shù)據(jù)庫大幅度提升系統(tǒng)性能。
框架實戰(zhàn):抽取上市公司中的股權(quán)交易關(guān)系
- 工程組成:
app.ddlog:dd,deepdive,log,類dialogue的語言
db.url
deepdive.conf
input文件夾:數(shù)據(jù)
udf文件夾:python - 先驗數(shù)據(jù)導入
準備先驗數(shù)據(jù)(國泰安);
在app.ddlog中定義相應(yīng)的數(shù)據(jù)表;
命令行生成postgresql數(shù)據(jù)表;
$ deepdive do pos_transaction - 待抽取文章導入
準備待抽取的文章,名為articles.csv,放在input文件夾下;
在app.ddlog中定義文章數(shù)據(jù)表,包括doc_id和content;
deepdive do articles導入文章到postgresql里 - 工作流
- 文章數(shù)據(jù)預(yù)處理
對數(shù)據(jù)庫中文章數(shù)據(jù)進行NLP解析;
在app.ddlog中定義sentence表,存放POS、NER字段;
定義NLP處理的函數(shù)nlp_markup;
nlp_markup.sh
函數(shù)調(diào)用,從articles表中讀取輸入,輸出存放在sentences表中;
編譯執(zhí)行$ deepdive do sentences,生成sentences表 - 候選實體抽取
抽取文本中的候選實體;
在app.ddlog中定義候選實體表;
定義候選實體抽取的函數(shù)map_company_mention
map_company_mention.py
函數(shù)調(diào)用,從sentences表中讀取輸入,輸出到company_mention中
Join實體表,篩選出在同句中的不同實體,生成候選實體對;
編譯,生成候選實體對表 - 特征抽取
抽取候選實體對的文本特征;
在app.ddlog中定義特征表;
定義特征抽取的函數(shù)extract_transaction_features;
輸入為sentence的NLP結(jié)果,輸出NLP組合的各種特征 - 樣本打標
從候選實體對中標出部分正負例;
在app.ddlog中定義標簽表;
導入所有的候選實體對,初始標簽均為0
將db數(shù)據(jù)與候選實體對關(guān)聯(lián),關(guān)聯(lián)到權(quán)重標注為+3,規(guī)則標記為從知識庫得到
通過規(guī)則再標注一部分實體,輸入候選實體對的關(guān)聯(lián)文本,進行打標;
將規(guī)則抽取的標簽也加入到transaction_label中
規(guī)則在supervise_transaction.py中定義:
最后,在多條規(guī)則和知識庫標記的結(jié)果中為每隊實體做vote,執(zhí)行deepdive do transaction label resolved 生成最終標簽。 - 因子圖構(gòu)建
定義最終存儲的表格;
定義一系列推導關(guān)系,構(gòu)建因子圖;
根據(jù)打標的結(jié)果,灌入已知的變量 - 因子圖定義
- 吉布斯采樣
- 權(quán)重學習
最大化和先驗變量取值一致的possible world的數(shù)目;
在采樣得到的樣本上隨機梯度下降;
deepdive針對硬件做了優(yōu)化,支持分布式、增量式訓練;
執(zhí)行deepdive do probablities,開始訓練。 - 數(shù)據(jù)表
- 其他配置文件
- 迭代調(diào)試
總結(jié)-deepdive
模快化,便于更改替換;
NLP影響較大,可以考慮其他端到端模型;
便于分析和迭代開發(fā)。
http://www.openkg.cn/tool/cn-deepdive
開放域關(guān)系抽取
IE的發(fā)展趨勢
主要系統(tǒng)
第一代OpenIE系統(tǒng)
第二代OpenIE系統(tǒng)
- OpenIE的應(yīng)用
直接回答問題,形如(A1,?,A2)的問題
用作其他NLP的特征:
文本理解,相似度比較
第二部分:知識挖掘
實體鏈接:給定一片文本中的實體指稱(mention),確定這些指稱在給定知識庫中的目標實體(entity)。
- 實例一:百科型知識庫,適用于長、短文本場景
生成模型,先計算聯(lián)合概率,再計算條件概率。 - 實例二:百科型知識庫,適用于長文本場景
- 示例三:百科型知識庫,適用于長文本場景
候選實體間語義相似度計算(cos)
實體鏈接總結(jié)
- 知識庫的變更:從百科知識庫發(fā)展到特定領(lǐng)域知識庫;
- 實體鏈接的載體:從長文本到短文本,甚至到列表和表格數(shù)據(jù);
- 候選實體生成追求同義詞、簡稱、縮寫的準備到從Mention到實體候選的查找;
- 實體消岐則考慮相似度計算的細化和聚合,以及基于圖計算協(xié)同消岐。
規(guī)則挖掘
主要方法
- 基于歸納邏輯編程(ILP)的方法
- 基于統(tǒng)計關(guān)系學習(SRL)的方法
目標:根據(jù)已知三元組對未知三元組預(yù)測;
將連接兩個實體的路徑作為特征來預(yù)測其間可能存在非關(guān)系
路徑排序算法-path Ranking Alo(PRA) - 基于關(guān)聯(lián)規(guī)則挖掘(ARM)的方法
數(shù)據(jù)挖掘>>>事務(wù)表
知識表示學習
自然語言中的表示學習;
建立統(tǒng)一的語義空間,語義可計算。
- 實體預(yù)測和推理
- 關(guān)系推理
- 推薦系統(tǒng)
TransE
將三元組<h, r, t>看做 h 通過 r 翻譯到 t 的過程
- 優(yōu)化目標
勢能函數(shù)
目標函數(shù)
PRA vs. TransE
互補
路徑的表示學習
性能比較 - 三元組分類
性能比較 - 鏈接預(yù)測
pTransE
- 加入規(guī)則的表示學習
- 多模態(tài)的表示學習
- 基于知識圖譜圖結(jié)構(gòu)的表示學習
用實體周圍實體描述實體
Neighbor Context
Path Context
Triple Context = Triple + Path Context + Neighbor Context - 勢能函數(shù)
- 實驗結(jié)果:在一對多,多對多,多對一均有好的效果
實體鏈接總結(jié)和挑戰(zhàn)
- 融合更多本體特征的知識圖譜表示學習算法研發(fā)
- 知識圖譜表示學習與本體推理之間的等價性分析
- 知識圖譜學習與網(wǎng)絡(luò)表示學習之間的異同
- 神經(jīng)符號系統(tǒng)