4. 知识抽取与知识挖掘
概述
简而言之,知识抽取就是把数据变成可存入知识图谱的数据类型。
知识抽取包括三个子任务:
1. 命名实体识别
2. 关系抽取
3. 事件抽取
知识抽取的相关竞赛
1. MUC(消息理解会议)
评测指标:召回率(Recall)是系统抽取的正确结果占标准结果的比例;
精确率(Precision)是系统抽取的正确结果占其抽取所有结果的比例。
基于召回率和精确率计算F1值。
MUC会议推动了命名实体识别和共指消解(指代是一种常见的语言现象,广泛存在于自然语言的各种表达中。一般情况下,指代分为 2 种:回指(也称指示性指代)和共指(也称同指)。回指是指当前的照应语与上文出现的词、短语或句子(句群)存在密切的语义关联性,指代依存于上下文语义中,在不同的语言环境中可能指代不同的实体, 具有非对称性和非传递性;共指主要是指 2 个名词(包括代名词、名词短语)指向真实世界中的同一参照体,这种指代脱离上下文仍然成立。) 等技术的发展。
2. ACE(自动抽取技术)
主要包括:
实体检测和跟踪
关系检测与表征
事件检测与表征
3. KBP(知识库填充)
目标:开发和评估从非结构化文本中获取知识填充知识的技术。
内容:覆盖了知识库填充的独立子任务以及被成为“冷启动”的端到端知识库构建任务。所谓“端到端”,就是从原始数据输入到任务结果输出,整个训练和预测过程,都是在模型里完成的。
(1) 实体
(2)属性(“槽”)
(3)事件
(4)信念和情感。一个实体对另一个实体、关系或事件的信念和情绪。
4. SemEval(语义测评)
目标:词义消歧测评,增进对词义或多义现象的理解。
面向非结构化数据的知识抽取
文本数据
实体抽取
命名实体识别:目的从文本中抽取实体信息元素,包括人名、组织机构名、地理位置、时间、日期、字符值和金额值等。
1. 基于规则的方法
由领域专家构建大量实体抽取规则。
缺点:数据量大的情况下,规则集的构建周期变长,并且移植性较差。
2. 基于统计模型的方法
a. 隐马尔可夫
b. 条件马尔可夫模型
c. 最大熵模型
d. 条件随机场模型
过程:
(1). 训练语料标注:IOB;IO
(2). 特征定义:单词级别特征,词典特征和文档级特征
单词级别特征中包括词性的n-gram,N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。 每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表,也就是这个文本的向量特征空间,列表中的每一种gram就是一个特征向量维度。 该模型基于这样一种假设,第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的Bi-Gram和三元的Tri-Gram。
(3). 模型训练
a. 隐马尔可夫模型
隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。
在命名实体识别中,HMM模型中的状态对应词的标记,标注问题可以看作是对给定的观测序列进行序列标注。
b. 条件随机场(CRF)
条件随机场(Conditional Random Fields, 以下简称CRF)是给定一组输入序列条件下另一组输出序列的条件概率分布模型,在自然语言处理中得到了广泛应用。在实际应用中,自然语言处理中的词性标注(POS Tagging)就是非常适合CRF使用的地方。词性标注的目标是给出一个句子中每个词的词性(名词,动词,形容词等)。而这些词的词性往往和上下文的词的词性有关,因此,使用CRF来处理是很适合的,当然CRF不是唯一的选择,也有很多其他的词性标注方法。
3. 基于深度学习的方法
以文本中词的向量为输入,通过神经网络实现端到端的命名实体识别,不再依赖人工定义的特征。
常用于命名实体识别的神经网络:
(1) 卷积神经网络(CNN)
卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。 卷积神经网络由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网络能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网络在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网络,卷积神经网络需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。
(2) 循环神经网络(RNN)
RNNs的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。RNNs之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNNs能够对任何长度的序列数据进行处理。但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关
https://www.jiqizhixin.com/articles/100902
(3) 注意力机制(Attention Mechanism)
Attention是为了对特征进行权重重分配?在无Attention机制下,我们可以认为输入的每个特征对于输出的每个特征作用是相同的,而Attention则是为了进一步区分特征的不同重要性,为其赋予不同的注意力权值强调不同特征的重要性。
三个深度学习方法在文本处理中的区别:CNN核心点在于可以捕捉局部相关性,具体到文本分类任务中可以利用CNN来提取句子中类似 n-gram 的关键信息。尽管TextCNN能够在很多任务里面能有不错的表现,但CNN有个最大问题是固定 filter_size 的视野,一方面无法建模更长的序列信息,另一方面 filter_size 的超参调节也很繁琐。CNN本质是做文本的特征表达工作,而自然语言处理中更常用的是递归神经网络(RNN, Recurrent Neural Network),能够更好的表达上下文信息。具体在文本分类任务中,Bi-directional RNN(实际使用的是双向LSTM)从某种意义上可以理解为可以捕获变长且双向的的 "n-gram" 信息。CNN和RNN用在文本分类任务中尽管效果显著,但都有一个不足的地方就是不够直观,可解释性不好,特别是在分析badcase时候感受尤其深刻。而注意力(Attention)机制是自然语言处理领域一个常用的建模长时间记忆机制,能够很直观的给出每个词对结果的贡献,基本成了Seq2Seq模型的标配了。Attention的核心point是在翻译每个目标词(或 预测商品标题文本所属类别)所用的上下文是不同的,这样的考虑显然是更合理的。
神经网络在命名实体识别中担任的是编码器的角色,基于初始输入以及词的上下文信息,得到每个词的新向量表示,最后通过CRF模型输出对每个词的标注结果。
a. LSTM-CRF模型
长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。
b. LSTM-CNNS-CRF模型
与a不同之处是在Embedding层加入了每个词的字符级向量表示。该模型可以有效获取词的形态信息,如前缀、后缀等。
c. 基于注意力机制的神经网络模型
亮点:不仅有词的特征向量,还基于双向LSTM计算词的字符级特征向量。
关系抽取
1. 基于模板的关系抽取方法
领域专家手工编写模板。
优点:模板构建简单,小规模数据较为适用
缺点:数据规模大时,耗费时间长,且模板移植性较差。
2. 基于监督学习的关系抽取方法
将关系抽取转化为分类问题。需要大量的训练语料,特别是基于深度学习的方法,模型的优化更依赖大量的训练数据。
步骤:
a. 预定义关系的类型;
b. 人工标注数据;
c. 设计关系识别所需的特征,一般根据实体所在句子的上下文计算获得
d. 选择分类向量(如支持向量机、神经网络和朴素贝叶斯等),基于标注数据训练模型
e. 对训练的模型进行评估.
传统的 基于监督学习的关系抽取是一种依赖特征工程的方法。因此,基于深度学习的关系抽取模型被提出,深度学习的方法不需要人工构建各种特征,其输入一般只包括句子中的词及其位置的向量表示。
(1)基于深度学习的流水线关系抽取方法
实体抽取和关系抽取过程是分离的。
a. CR-CNN模型
b. Attention CNNs模型
将注意力机制引入到神经网络中,对反映实体关系更重要的词语赋予更大的权重,借助改进后的目标函数提高关系提取的效果。
c. Attention BLSTM模型
考虑到了左边和右边序列背景的状态向量
(2)基于深度学习的联合关系抽取方法
将实体抽取和关系抽取相结合。
3. 基于弱监督学习的关系抽取方法
当训练语料不足时,弱监督学习方法可以只利用少量的标注数据进行模型学习。
(1)远程监督方法
基本假设:
如果两个实体在知识图谱中存在某种关系,则包含两个实体的句子均表达了这种关系。
步骤:
从知识图谱中抽取存在目标关系的实体对;
从非结构化文本中抽取含有实体对的句子作为训练样例;
训练监督学习模型进行关系抽取;
代表模型:
APCNNs:单一句子的特征向量+句子级注意力模型
CNN-RL:基于强化学习的关系分类模型,适用于整个样例都包含大量噪声的情况。
强化学习是一类算法的总称,与监督和无监督学习的区别就时不需要大量数据的“喂养”,而是通过自己不停的尝试来学会某种技能
我认为远程监督关系抽取方法就是在文本中把出现目标实体的句子抽取出来,然后程序将这些句子进行对齐作为训练数据。这样可以不用人工来进行标注了,但是会有语义漂移(也就是语义偏移,句子有目标实体,但是句子的意思不是我们想要的)的现象
(2) Bootstrapping方法
以少量实例作为种子集合,学习关系抽取模板,再利用关系抽取模板抽取获得更多实例,加入种子集合,进行迭代。
事件抽取
事件抽取任务包含的子任务有:
a. 识别事件触发词及事件类型:触发词是最能表示事件的词或短语。
b. 抽取事件元素的同时判断其角色;
c. 抽出描述事件的词组或句子;
d. 事件属性标注;
e. 事件共指消解。
1. 事件抽取的流水线方法
分成若干基于分类的子任务,每一个子任务有一个机器学习分类器实施。
但是在每个子任务阶段都有可能存在误差,这种误差会不断积累。
2. 事件的联合抽取方法
可采用联合推断或联合建模的方法。
联合推断:建立事件抽取子任务的模型,将各个模型的目标函数组合、优化
联合建模:分析子任务之间的关系后,基于概率图模型进行联合建模。
在流水线方法中实体的识别,由于词性的原因,就很容易出错了。
面向结构化数据的知识抽取
从数据库中抽取知识。
直接映射
数据库表结构和数据直接转换为RDF图
基本规则:
数据库中的表映射为RDF类;
数据库中表的列映射为RDF属性;
数据库表中每一行映射为一个资源或实体,创建IRI;
数据库表中每个单元格的值映射为一个文字值(Literal Value);如果单元个的值对应一个外键,则将其替换为外键值指向的资源或实体的IRI。
R2RML
R2RML映射语言是一种用于表示从关系数据库到RDF数据集的自定义映射的语言。
相关工具
面向半结构化数据的知识抽取
百科类知识、网页数据等是重要的半结构化数据。
面向百科类数据的知识抽取
一般抽取
基于映射的抽取
跟数据表的区别是不是在于这种知识形式是偏向结构化的文本数据?
面向Web网页的知识抽取
手工方法:xpath表达式、CSS选择器的表达式等
包装器归纳方法
自动抽取方法
知识挖掘
从已有的实体及实体关系出发挖掘新的知识,具体包括知识内容挖掘和知识结构挖掘。
知识内容挖掘:实体链接
实体链接是指将文本中的实体指称(Mention)链向其给定知识库中目标实体的过程。
步骤:实体指称识别、候选实体生成、候选实体消歧
知识结构挖掘:规则挖掘
1. 归纳逻辑程序设计
2. 路径排序算法
开源工具实践:基于DeepDive的关系抽取实践
其他工具:Reverb、OLLIE、Wandora