因为课题组的需要,过去几个月一直在学习强化学习和鲁棒性算法。再加上忙于课题组中的一些工作,所以过去两个月基本没有什么时间来写博客。最近读了不少强化学习和鲁棒性算法方面的论文,也有一些小的收获,等有时间再通过博客分享出来。今天分享的是我近期记录的关系抽取的笔记,希望对想要入门关系抽取这个任务的朋友们有些帮助。
1 关系抽取概述
关系抽取从信息抽取(亦称为“文本结构化”)中演化而来。关系抽取一般指从非结构化文本中抽取实体以及实体间的关系。关系抽取的下游任务是:问答系统,聊天机器人等。
1.1 关系的获取方法
-
人工构建;
-
从结构化数据库中转换;
-
自动构建:即自动从文本中抽取。
1.2 关系抽取的任务分类
关系实例抽取:
输入:文本,给定的关系;
输出:实体对{(主体,客体)}。
关系分类:
输入:文本,实体对,关系列表P;
输出:关系P_i。
实体关系联合抽取:
输入:文本;
输出:三元组的集合{(主体,关系,客体)}
开放关系抽取:此类任务抽取的是关系的文本描述,这类关系通常未定义。开放关系抽取之后要进行规范化。
2 关系抽取方法
评测数据集:
人工构建的数据集:ACE 2005, SemEval-2010 Task 8。质量高,规模小。
基于远程监督构造的数据集:NYT, KBP。 规模大、但噪音多。
远程监督方法是一种弱监督方法,优点是代价小,规模大;缺点是质量问题。
基于远程监督的数据集构造过程:
-
从知识库中为目标关系识别尽可能多的实体对;
-
对于每个实体对,利用实体链接从大规模文本中抽取提及该实体对的句子集合,并为每个句子标注相应的关系;
-
包含实体对的句子集合 和 关系类型标签 构成关系抽取的标注集。相应的句子是训练数据,关系类型是标签。
解决远程监督的噪音问题:
发表于2018年ACL的《Robust distant supervision relation extraction via deep reinforcement learning》这篇论文中的思路是引入强化学习的思想,通过选择高质量的句子,来不断地筛选数据集。这种思路是将基于远程监督的关系分类划分为两个子任务:
实例筛选:利用强化学习策略构造一个实例选择器,从远程监督产生的数据中获取优质样本。
关系分类:根据选择的样本训练关系分类器。关系分类器同时为实例选择器提供奖励。
以及同时期发布的另一篇论文《Reinforcement learning for relation classification from noisy data》
2.1 基于模式的抽取
使用模式来表达关系在文本中提及方式,将模式与语料匹配,来获取关系实例。这种方法现在用得比较少。
有两种方法,一种是专家定义模式,俗称规则法;另一种是自动学习模式。
自动化模式获取方法:bootstrapping,即根据已经习得的模式自动标注新样本,然后基于新补充的标注样本来获取新的模式,依次逐步提升模型。
2.2 基于学习的关系抽取
数据标注->模型构建->模型学习
-
基于RNN的关系抽取:包括输入层,双向循环层和池化层,最后借全连接层+softmax层生成关系的概率分布;
-
基于CNN的关系抽取;
-
基于注意力机制的关系抽取:为每个句子赋予权重,权重越大表明该句子表达目标关系的程度越高,反之则越可能是噪声。