知识抽取(二)

目录

面向文本的知识抽取

关系抽取分类

Deepdive关系抽取实战

KBC系统

kbc系统自动搭建框架

KBC流程

框架实战:抽取上市公司中的股权交易关系

开放域关系抽取

知识挖掘

实体消歧与链接

知识规则挖掘

Stactical Schema Induction

关联规则挖掘 (ARM)

​ 统计关系学习 (SRL)

基于图的方法

路径排序方法

知识图谱表示学习

PRA vs. TransE

路径的表示学习

​ 加入规则的表示学习

​ 多模态的表示学习

​ 基于知识图谱图结构的表示学习

总结和挑战


面向文本的知识抽取

  • 关系抽取分类

知识抽取(二)_第1张图片

  • Deepdive关系抽取实战

  • KBC系统

     填充、融合不同来源的知识

     输入

     非结构化的期刊文章

     半结构化的html、table等

     输出

     结构化知识库

    知识抽取(二)_第2张图片

    kbc系统自动搭建框架

     特征工程 + distant supervision + 图优化

     考虑全局最优而不是某个三元组最优

     帮助领域专家自主搭建KB,专家只需要填充领域知识,不用考虑算法性能等问题

     技术难点

     设计一个KBC系统的工作流,包括文本预处理、特征抽取、统计推理与学习、迭代优化等。用户通过自定义datalog语言调控这些过程。

     利用分布式数据库大幅度提升系统性能

  • KBC流程

 特征抽取

 OCR、NLP工具等

 用户自定义脚本

 专业知识融合

在整个知识库上进行多种关系的融合

 监督学习

 distant supervision

 迭代优化

如何分析模型并提升最终结

 

知识抽取(二)_第3张图片

  •  

    框架实战:抽取上市公司中的股权交易关系

知识抽取(二)_第4张图片先验数据导入

准备抽取所需的先验数据 (国泰安)

 从知识库中获得已知具有交易关系的实体对

 命名为pos_transaction.csv,放在input文件夹下

 在app.ddlog中定义相应的数据表

知识抽取(二)_第5张图片

  •  

     命令行生成postgresql数据表

 $ deepdive do pos_transaction

 对于定义输入的表格,deepdive会自动去input文件夹下找到同名csv文件,在postgresql里建表导入

待抽取文章导入

 准备待抽取的文章,命名为articles.csv,放在input文件夹下 (上市公司公告)

 在app.ddlog中定义文章数据表,包括doc_id和content

 同理,用deepdive do articles导入文章到postgresql里

知识抽取(二)_第6张图片文章数据预处理

 对数据库中的文章数据进行NLP解析,为后续特征抽取做准备

 在app.ddlog中定义sentences表,用于存放POS、NER等字段

知识抽取(二)_第7张图片  定义NLP处理的函数nlp_markup

 输入为doc_id和content,输出按sentence表的字段格式

 函数调用nlp_markup.sh这个脚本实现NLP的处理,可自由发挥

知识抽取(二)_第8张图片  nlp_markup.sh

 这里是调用udf/bazaar/parser下的run.sh进行实现的,run.sh调用了stanford nlp集成好的jar包。

 这一步要逐句做NER、词法分析等,耗时比较久。

把输入的articles的行转化为json,传给stanford nlp

知识抽取(二)_第9张图片

  •  函数调用,从articles表中读取输入,输出存放sentences表中

     编译并执行$ deepdive do sentences,生成sentences表

    知识抽取(二)_第10张图片知识抽取(二)_第11张图片候选实体抽取

     抽取文本中的候选实体

     在app.ddlog中定义候选实体表

知识抽取(二)_第12张图片

 定义候选实体抽取的函数map_company_mention

 输入为sentence的token和对应的NER标签

 函数调用map_company_mention.py抽取NER为ORG的标签,并返回实体和在句中的位置

知识抽取(二)_第13张图片  map_company_mention.py

 找到连续的ORG标签作为实体,并定位实体位置。

 可在此处对一些误识别的非实体进行过滤。

找到每个ORG标签起始位置,从起始位置往后遍历,找到结束位置

知识抽取(二)_第14张图片  函数调用,从sentences表中读取输入,输出到company_mention中

知识抽取(二)_第15张图片  编译并执行$ deepdive do company_mention,生成候选实体表

知识抽取(二)_第16张图片

知识抽取(二)_第17张图片

 Join实体表,筛选出在同句中的不同实体,生成候选实体对

知识抽取(二)_第18张图片  编译并执行$ deepdive do transaction_candidate,生成候选实体对表

  • 知识抽取(二)_第19张图片知识抽取(二)_第20张图片 特征抽取

 抽取候选实体对的文本特征

 在app.ddlog中定义特征表

 定义特征抽取的函数extract_transaction_features

 输入为sentence的NLP结果,输出NLP组合的各种特征

 函数调用extract_transaction_features.py,脚本调用自带

知识抽取(二)_第21张图片

 extract_transaction_features.py

 调用ddlib库,得到各种POS/NER/词序列的窗口特征,此处可以自定义特征

 每个实体对都要生成大量特征,这一步耗时比较久。

知识抽取(二)_第22张图片  extract_transaction_features.py

Ddlib自带的一些特征如下:

知识抽取(二)_第23张图片  Join sentences表和mention表作为输入,输出到transaction_feature

知识抽取(二)_第24张图片

编译并执行$ deepdive do transaction_feature,生成特征表(下图是部分窗口词特征)

知识抽取(二)_第25张图片知识抽取(二)_第26张图片 样本打标

 从候选实体对中标出部分正负例

 利用已知的实体对和候选实体对关联

 利用规则打部分正负标签

 在app.ddlog中定义标签表

 导入所有的候选实体对,初始标签均为0

知识抽取(二)_第27张图片

 将db数据与候选实体对关联,关联到的权重标注为+3,规则标记为从知识库得到

知识抽取(二)_第28张图片  通过规则再标注一部分实体,输入候选实体对的关联文本,进行打标

知识抽取(二)_第29张图片  将规则抽取的标签也加入到transaction_label中

知识抽取(二)_第30张图片

知识抽取(二)_第31张图片  规则在supervise_transaction.py中定义

 最后,在多条规则和知识库标记的结果中为每对实体做vote,执行deepdive do transaction_label_resolved生成最终标签。

因子图构建

 定义最终存储的表格,「?」表示此表是用户模式下需要推导label的最终表。

知识抽取(二)_第32张图片

 定义一系列推导关系,构建因子图

 根据打标的结果,灌入已知的变量

知识抽取(二)_第33张图片知识抽取(二)_第34张图片

对于给定的 fid ∈ F j 和possible world I σ

该fid在当前possible world上的聚合值g j fid, I σ = weight fid ∗ aggr(vars fid )

定义I σ 的总的聚合概率

变量的边缘概率


 

知识抽取(二)_第35张图片 吉布斯采样

采样得到符合内在条件概率的possible world集合

 先随机一个possible world I 0

 根据每个变量的相关变量,依次更新每个变量v的边缘概率

 得到新的possible world I 1 ,再循环

不共享factor的变量独立sample

知识抽取(二)_第36张图片 权重学习

 最大化和先验变量取值一致的possible world的数目

 在采样得到的样本上随机梯度下降

 deepdive针对硬件做了优化,支持分布式、增量式训练

 执行deepdive do probablities,开始训练。

知识抽取(二)_第37张图片

知识抽取(二)_第38张图片 其他配置文件

知识抽取(二)_第39张图片

迭代调试

 $ deepdive do calibration_plots

 系统自动在run/model/calibration_plots下生成此图

知识抽取(二)_第40张图片 (a) 横轴表示模型输出的分数,纵轴是该分数段的 正例率。越趋近蓝色标准线,模型效果越好。

(b) 测试集上置信度的分布,越靠近横轴两端,说明模型区分度越好。

(c) 全集上置信度的分布。

 $ mindbender tagger labeling/*/mindtagger.conf

Mindtagger是deepdive提供的一套可视化工具,可参考http://deepdive.stanford.edu/labeling 搭建环境

执行完毕后,会开启web服务,默认通过http://localhost:8000访问

知识抽取(二)_第41张图片  可以通过特征的weight,分析置信度的误差,调整先验数据等

 $ mindbender search update && mindbender search gui

直接执行,默认通过http://localhost:8000访问

知识抽取(二)_第42张图片  可以通过可视搜索功能,方便定位要找的实体/特征等

总结

 模块化、便于更改替换

 NLP影响较大,可以考虑尝试其他端到端模型

 便于分析和迭代开发

  • 开放域关系抽取

IE的发展趋势

知识抽取(二)_第43张图片 主要系统

知识抽取(二)_第44张图片


传统IE和OpenIE互相补充,可以按当前知识库的规范数据,链接更多网络数据。OpenIE得到的三元组可以用扩充知识库。

知识抽取(二)_第45张图片 面临的挑战

•关系不一致、不准确

E.g. Peter thought that John began his career as a scientist

True: (John, began, his career as a scientist)

False: (Peter, began, his career as a scientist)

•提取的关系不包含有效信息

E.g. Al-Qaeda claimed responsibility for the 9/11 attacks

True: (AI-Qaeda, claimed responsibility, for the 9/11 attacks)

False: (Al-Qaeda, claimed, responsibility)

知识抽取(二)_第46张图片知识抽取(二)_第47张图片

更多进展

模型

• 联合训练

训练一个统一模型,同时抽取实体和关系

• 模板匹配 + 深度学习

• 矩阵因式分解等所有好用的分类器

源数据

结构化的知识库,可以依赖知识库进行更好的链接和特征抽取

知识挖掘

  •  

    • 实体消歧与链接

• 给定一篇文本中的实体指称(mention),确定这些指称在给定知识库中的目标实体 (entity)


 

知识抽取(二)_第48张图片

 

知识抽取(二)_第49张图片

百科型知识库,适用于长文本场景

构建实体关联图

实体关联图由3个部分组成:

(1) 每个顶点Vi=由mention-entity对构成

(2) 每个顶点得分 :代表实体指称mi的目标实体为ei概率可能性大小

(3) 每条边的权重:代表语义关系计算值,表明顶点Vi和Vj的关联程度

知识抽取(二)_第50张图片

顶点的得分初始化方法:

(1) 若顶点V实体不存在歧义,则顶点得分设置为1;

(2) 若顶点中mention和entity满足p(e|m)>=0.95,则顶点得分也设置为1。

(3) 其余顶点的得分设置为p(e|m)。

边权初始化方法:深度语义关系模型

知识抽取(二)_第51张图片 基于图的标签传播算法

(1) 构造相似矩阵

(2) 迭代传播直到收敛算法结束

知识抽取(二)_第52张图片 百科型知识库,适用于长文本场景


 

知识抽取(二)_第53张图片 候选实体间语义相似度计算

知识抽取(二)_第54张图片 构建实体关联图

实体关联图由四个部分组成:

(1) 实体指称节点

(2) 候选实体节点

(3) 候选实体节点顶点值:代表该候选实体是实体指称的目标实体概率大小

(4) 候选实体节点边权值:代表两个候选实体间的转化概率大小

各候选实体节点顶点值:初始化为均等,之后每轮更新为上一轮的PageRank得分候选实体节点边权值计算公式如下:

知识抽取(二)_第55张图片

知识抽取(二)_第56张图片 更新实体关联图

知识抽取(二)_第57张图片 选择本轮最高得分的未消歧实体 New York Knicks作为实体指称New York的最佳实体,删除其他候选实体 NewYork City及相关的边,更新图中的边权值。

知识抽取(二)_第58张图片

实体消歧整体过程示例

  • 知识抽取(二)_第59张图片 总结

 知识库的变更:从百科知识库发展到特定领域知识库

 实体链接的载体:从长文本到短文本,甚至到列表和表格数据

 候选实体生成追求同义词、简称、各种缩写等的准备和高效从Mention到实体候选的查找

 实体消歧则考虑相似度计算的细化和聚合,以及基于图计算协同消歧

  • 知识规则挖掘

Stactical Schema Induction

 基于归纳逻辑编程 (Inductive Logic Programming, ILP)

的方法

 使用精化算子 (refinement operators)

 基于统计关系学习 (Statistical Relational Learning, SRL)的方法

 主要对贝叶斯网络进行扩展

 基于关联规则挖掘 (Association Rule Mining,ARM)的方法

1构建事务表

2挖掘规则

3将规则转换为OWL公理

4构建本体

关联规则挖掘 (ARM)

 OWL2公理可被转换为关联规则

知识抽取(二)_第60张图片

示例

公理 (Axiom) 规则 (Rules)

C⊑D C ⇒ {D}

规则 C ⇒ {D} 意味着:概念C的实例同时也属于概念D

规则的置信度 (confidence)越高,C ⊑ D越可能成立

事务表 (Transaction Table)

知识抽取(二)_第61张图片 统计关系学习 (SRL)

 输入

 实体集合 {e i}

 关系集合{ r k}

 已知三元组集合 {(e i , r k , e j)}

 目标

 根据已知三元组对未知三元组成立的可能性进行预测

 P((e i , r k , e j) = 1)

 可以应用于知识图谱补全

基于图的方法

 基本思想

 将连接两个实体的路径作为特征来预测其间可能存在的关系

知识抽取(二)_第62张图片

路径排序方法

 通用关系学习框架 (generic relational learning framework)

知识抽取(二)_第63张图片

知识抽取(二)_第64张图片

Profession(Charlotte Bonte, Writer)?

Q: all path types starting from s and ending with t (with length of n)

θ: weights obtained by training

 Probability of a path type

P:the probability of reaching target node t starting from source node s and following path Use dynamic programming procedure

 Weight training (offline)

知识抽取(二)_第65张图片

  • 知识图谱表示学习

建立统一的语义空间,语义可计算
实体预测和推理

输入:实体、关系、属性、描述、上下文词

输出:表示模型

使用时,要确信两个实体关系的关系,把两个实体输入训练好的模型;模型输出关系向量,计算输出向量和关系向量词典距离找出最可能的关系作为输出。

关系推理

知识抽取(二)_第66张图片 推荐系统

知识抽取(二)_第67张图片 TransE

知识抽取(二)_第68张图片 无法处理一对多、多对一和多对多问题关系的性质

PRA vs. TransE

两类方法之间存在互补性

• PRA

可解释性强

能够从数据中挖掘出推理规则

难以处理稀疏关系

路径特征提取效率不高

• TransE

– 能够表示数据中蕴含的潜在特征

– 参数较少,计算效率较高

– 模型简单,难以处理多对一、一对多、多对多的复杂关系

– 可解释性不强

路径的表示学习

TransE孤立地学习每个事实三元组,关系之间存在复杂关系,涉及关系推理

知识抽取(二)_第69张图片 加入规则的表示学习

知识抽取(二)_第70张图片 多模态的表示学习

知识抽取(二)_第71张图片 基于知识图谱图结构的表示学习

哪些数据可以用来描述实体

实体周围的实体

从一个实体到这个实体的联通路径

知识抽取(二)_第72张图片 Neighbor Context

知识抽取(二)_第73张图片 Path Context

知识抽取(二)_第74张图片 Triple Context = Triple + Path Context + Neighbor Context

势能函数

 希望三元组在Triple Context概率最大

 假设不同的Context都是相互独立的企且独立用来描述三元组的某一部分

 目标函数

实验结果

在一对多、多对多、多对一下均有较好的表现

如果用TransE训练后的结果作为输入还有提高的空间

总结和挑战

 融合更多本体特征的知识图谱表示学习算法研发

 知识图谱表示学习与本体推理之间的等价性分析

 知识图谱学习与网络表示学习之间的异同

 神经符号系统

你可能感兴趣的:(知识图谱)