知识抽取
知识抽取:从相关数据或资料中获得构建知识图谱的三元组。
知识挖掘:在已有知识图谱基础上发现隐藏的知识。
知识抽取任务
该任务旨在从不同来源、不同结构数据中进行知识题去并存入知识图谱中。数据源可以是结构化数据(链接数据、数据库)、半结构化数据(网页中的表格、列表)、非结构化数据(纯文本数据)。
知识抽取的子任务:
- 命名实体识别:监测命名实体并分类到预定义的类别中。
- 关系抽取:从文本中识别抽取实体及实体之间的关系。
- 事件抽取:识别文本中关于事件的信息,以结构化形式呈现。
知识抽取相关评测方案:
-
消息理解会议 MUC
在MUC的评测中,召回率(Recall)和精确率(Precision)是评价信息抽取系统性能的两个重要评价指标。通过最终计算F1值来评测标注质量。
-
自动内容抽取 ACE
主要任务包括三项:
- 实体检测和跟踪:要求识别文本中的实体(人物、组织、设施、地缘政治实体、位置等)。
- 关系检测与表征:要求识别和表征实体间的关系(角色、部分整体、位于、临近、社会)。
- 事件检测与表征:识别实体参与的五类事件(交互、移动、转移、创建、销毁)。
-
知识库填充
目标是开发和评估从非结构化文本中获取知识填充知识库的技术。独立子任务包括以下几方面:
- 实体发现与链接:评估文档集合中提取特定个人、组织、设施、地缘政治实体、位置实体的名称和提及(提及链接到相应实体)。
- 槽填充:搜索文档集合以填充特定实体的特定属性(“擦操”)值。
- 事件跟踪:从非结构化文本中提取关于事件的信息、使其作为结构化知识库的输入。该任务具体包括事件块任务(检测和链接事件块)和事件参数任务(提取属于同一事件的事件参数和链接属于同一事件的参数)。
- 信念和情感:情感跟踪监测实体对另一个实体、关系或事件的信念和情绪。
-
语义评测
目标是增进人们对词义与多义现象的理解。主要任务包括:语义角色标注、情感分析、跨语言语义分析。
非结构化数据知识抽取
在自由文本形式中抽取知识。主要任务包括实体抽取、关系抽取和事件抽取。
实体抽取
从文本中抽取实体信息元素(人名、组织机构名、地理位置、时间、日期、金额等)。
相关方法:
-
基于规则的方法
将规则与字符串匹配,比如时间日期的正则表达式,地理位置的某省某市,人名的某某先生。
-
基于统计模型的方法
利用完全标注或部分标注的语料进行模型训练。将命名实体识别作为序列标注问题处理(当前标签的预测不仅与当前输入特征相关,还与之前的预测标签相关)。主要涉及预料标注、特征定义和模型训练三个方面:
-
训练语料标注,IOB或IO标注方法。
-
特征定义,定义单词级别特征(首字母大写、句点结尾、是否包含数字、词性)、词典特征(预定义的此表、地点列表等)和文档级特征(文档集中的词频、同现词)。
-
模型训练,HMM是一种有向图概率模型,模型中包含了隐藏的状态序列和可观察的观测序列。
模型基本假设:
-
在任意 t 时刻的状态只依赖于前一时刻的状态,与其他观测状态无关
P ( x t ∣ x t − 1 , x t − 2 , . . . , x 1 , y t − 1 , y t − 2 , . . . , y 1 ) = P ( x t ∣ x t − 1 ) P(x_t|x_{t-1},x_{t-2},...,x_{1},y_{t-1},y_{t-2},...,y_{1}) = P(x_t|x_{t-1}) P(xt∣xt−1,xt−2,...,x1,yt−1,yt−2,...,y1)=P(xt∣xt−1) -
任一时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关
P ( y t ∣ x t , x t − 1 , . . . , x 1 , y t − 1 , y t − 2 , . . . y 1 ) = P ( y t ∣ x t ) P(y_t|x_t,x_{t-1},...,x_1,y_{t-1},y_{t-2},...y_1) = P (y_t|x_t) P(yt∣xt,xt−1,...,x1,yt−1,yt−2,...y1)=P(yt∣xt)
CRF是给定一组随机变量条件下另一组输出随机变量的条件概率分布模型。模型通过极大似然估计得到条件概率模型;当标注新数据时,给定输入序列y,模型输出使条件概率P(x|y)最大化的x*。
-
-
-
基于深度学习方法
- LSTM-CRF模型
- Embedding层对句子中词的向量表示,作为双向LSTM的输入,通过词向量学习模型获得。
- 双向LSTM层计算每个词左侧和右侧词对应的向量,对两个向量进行链接,形成词的输出向量。
- CRF以输出向量作为输入,对句子中命名实体进行序列标注。
- LSTM-CNNs-CRF模型
- Embedding层加入了词的字符级向量表示。
- 注意力机制的神经网络模型
- 扩展基本的编码器-解码器模型结构,让模型能够获取输入序列与下一个目标词相关的信息。
- 通过双向LSTM获得词向量特征x,还基于双向LSTM计算词的字符级特征向量m。
- x与m进行加权z的相加(z通过两层神经网络计算获得的)。
- 得到词的新向量之后,模型使用CRF对句子中的命名实体进行序列标注。
- 扩展基本的编码器-解码器模型结构,让模型能够获取输入序列与下一个目标词相关的信息。
- LSTM-CRF模型
关系抽取
在识别出文本的实体后,再抽取实体之间可能存在的关系。
-
基于模版的关系抽取方法
通过关系敏感词制作关系模版,抽取变量。
-
基于监督学习的关系抽取方法
步骤:预定义关系的类型、人工标注数据、设计关系识别所需特征、选择分类模型、对训练模型进行评估。
针对抽取特征定义,将常用的特征分为轻量级、中等量级、重量级三大类。
- 轻量级主要基于实体和词的特征,例如句子中实体前后的词、实体的类型以及实体之间的距离。
- 中等量级特征主要基于句子中的语块序列的特征。
- 重量级特征一般包括实体间的依存关系路径、实体间依存树结构的距离以及其他特定的结构信息。
深度学习方法,包括流水线方法和联合抽取方法两大类。
-
流水线方法:将识别实体和关系抽取作为两个分离的过程进行处理,两者不会相互影响。
-
CR-CNN模型:句子映射到低维向量(包含词向量和位置向量),模型对固定大小的滑动窗口进行卷积操作,为每个窗口生成新的长度的特征向量。对窗口特征向量求最大值,模型最终得到整个句子的向量表示。
进行关系分类时,模型计算女子响亮和每个关系类型响亮的点积,得到实体具有某种预定义关系的分值。
-
Attention CNNs模型:在输入层引入词与实体相关的注意力,在池化和混合层引入针对目标关系类别的注意力。通过注意力机制引入网络,对反应实体关系更重要的词语赋予更大权重。
-
Attention BiLSTM:通过词的两个状态向量元素级求和产生词的向量表示。通过注意力层组合词的向量产生句子向量,基于句子响亮进行关系分类。
-
-
联合抽取方法:将实体抽取和关系抽取相结合,在统一模型中共同优化。(参考文献13)
-
该模型主要由三个表示层组成:
-
词嵌入层
-
基于单词序列的LSTM-RNN层
-
依赖性子树的LSTM-RNN层
对序列层上构建的由左到右的实体识别,并实现依存关系层上的关系分类。其中每个基于子树的LSTM-RNN对应于两个被识别实体之间的候选关系。
-
-
-
基于弱监督学习的关系抽取方法
弱监督学习方法可以只利用少量数据进行模型学习,基于弱监督学习的关系抽取方法主要包括远程监督方法和bootstrapping方法。
-
远程监督方法
将知识图谱与非结构化文本对齐的方式自动构建大量训练数据,减少模型对人工标注数据的依赖,增强模型跨领域适应能力。远程监督方法的基本假设是如果两个实体在知识图谱中存在某种关系,则包含两个实体的句子均表达了这种关系。关系抽取的一般步骤为:
- 从知识图谱抽取存在目标关系的实体对
- 从非结构化文本中抽取含有实体对的句子作为训练样例
- 训练监督学习模型进行关系抽取
该方法可能引入大量噪声,发生语义飘移。
解决样例错误标注的问题方法采用了多示例学习、注意力机制及强化学习等方法。
- APCNNs方法:
- PCNNs模型:输入词向量和位置向量,通过卷积和池化操作,得到句子的向量表示。
- 句子级注意力模型,将同一关系的所有样例句子向量作为输入,学习获得每个句子权重,加权求得所有句子包特征。对包特征的Softmax分类器实现分类。
- 基于强化学习的CNN-RL方法:
- 样例选择器:负责从样例包中选择高质量的句子
- 基于一个随机策略,在考虑当前句子的选择状态情况下选择样例句子
- 关系分类器:从句子级特征对关系进行分类
- 利用卷积神经网络对句子中的实体关系进行分类,并向样例选择器反馈,帮助改进样例选择策略。
- 样例选择器:负责从样例包中选择高质量的句子
-
Bootstrapping方法
利用少量的实例作为初始种子集合,然后在种子集合上学习获得关系抽取的模版,利用模版抽取更多的实例,加入种子集合中。
-
事件抽取
指从自然语言文本中抽取出用户感兴趣的事件信息,并以结构化的形式表现出来。
-
子任务:识别事件触发词及事件类型、抽取事件元素的同时判断其角色、抽出描述事件的词组或句子、事件属性标注、事件共指消解。
-
方法:
-
流水线方法
- 将事件抽取任务分解为事件识别、元素抽取、属性分类、可报告性判别的一系列子任务,每一个子任务由一个机器学习分类器负责实施。分类器包括:
- 事件触发词分类器:判断词汇是否为事件触发词,基于触发词信息对事件类别进行分类。
- 元素分类器:判断词组是否为事件元素。
- 元素角色分类器:判定事件元素的角色类别。
- 属性分类器:判定事件的属性。
- 可报告性分类器:判定是否存在值得报告的事件实例。
- 将事件抽取任务分解为事件识别、元素抽取、属性分类、可报告性判别的一系列子任务,每一个子任务由一个机器学习分类器负责实施。分类器包括:
-
联合抽取方法
- 采用联合推断或联合建模方法,建立事件抽取子任务模型,对各个模型目标函数组合形成联合推断的目标函数;通过联合目标函数优化获得事件抽取各个子任务的结果。
- 充分分析子任务间的关系后,基于概率图模型进行建模,获得事件抽取总体结果。
联合事件抽取模型
- 将事件触发词、元素抽取的局部特征和捕获任务之间关联的结构特征结合进行事件抽取。
-
面向结构化数据的知识抽取
DM和R2ML映射语言定义了关系数据库中数据如何转换为RDF数据和各种规则(具体包括URI生成、RDF类和属性的定义、空节点的处理、数据间关联关系的表达等)。
直接映射
定义了从关系数据库到RDF图的简单转换,为定义和比较更复杂的转换提供了基础。映射规则:
- 数据库表映射成RDF表
- 数据库表的列映射为RDF属性
- 表中每一行映射为一个资源或实体,创建IRI
- 数据库表中每个单元格值映射为一个文字值。如果单元格值对应一个外键,则替换为外键值只想的资源或实体的IRI。
三元组的主语由IRI前缀和表名、主键列名、主键值串联成的IRI;谓词由IRI前缀和表名、列名链接形成的IRI。
R2RML
每个R2RML映射针对特定数据库模式和目标词汇量身定制,映射的输入是符合该模式的关系数据库,输出是采用目标词汇表中谓词和类型描述的RDF数据集。
R2RML映射是通过逻辑表从数据库中检索数据(逻辑表可以是数据库的一个表、视图、有效SQL语句查询),每个逻辑表通过三元组映射映射到RDF数据,而三元组映射是可以将逻辑表中每一行映射为若干RDF三元组的规则。“逻辑表”突破了关系数据库表结构的限制,对灵活生成RDF数据很友好。
三元组映射的规则主要有两部分:一个主语映射和多个谓词-宾语映射,主语映射从逻辑表中生成所有RDF三元组的主语,通常基于数据库表中的主键生成的IRI表示。谓词-宾语映射则包含了谓词映射和宾语映射,其过程与主语映射相似。
映射文档示例:
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix ex: <http://example.com/nx#> .
<#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"];
].
<#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"];
].
<#TriplesMap1>
rr:predicateObjectMap[
rr:predicate ex:department;
rr:objectMap[
rr:parentTriplesMap <#TriplesMap2>;
rr:joinCondition[
rr:child "DEPTNO";
rr:parent "DEPTNO";
];
];
].