远程监督浅谈

关系抽取是NER基础上的一个任务,就是抽取一个句子中实体对之间的关系。想要训练一个关系抽取器,给它一个句子俩实体,首先它需要知道给这俩实体间的关系打个什么标签,模型不可能自己给关系取名字,所以肯定需要人用标注好的语料告诉他,这俩实体间的关系叫啥。然后模型训练好了,再遇到哪个句子里有这种实体对,他就会知道是这个关系并抽出来。

 

那么问题来了。人工标注好的语料哪里去找。这是NLP方向一个巨大的挑战。自己标费时费力,而且数量实在有限,数据规模大大限制了模型训练。

 

这个时候mintz大佬首次提出了不依赖人工标注的关系抽取,也就是把远程监督应用到了关系抽取上。那么到底什么叫做远程监督?它既不是单纯的传统意义上的监督语料,当然也不是无监督。它是一种用KB去对齐朴素文本的标注方法。

 

KB中已经有关系名和实体对的三元组,只需要把这三元组付给朴素文本中相应的句子就可以了,那按照什么原则付?这时候z大佬就提出了一个非常大的假设:如果一个句子中含有一个关系涉及的实体对,那这个句子就是描述的这个关系。也就是说,报纸里所有含有中国和北京的句子,全都假设说的是北京是中国的首都。然后把这些句子全都提取出来作为首都这个关系的训练语料,直接批量打个标签,实体识别和标注一举两得。然后把一个关系对应的所有句子打个包,称作一个bag,干脆一个bag一个标签。这就是后来又有的工作,被叫做多示例学习。

 

说到这就会发现这个方法有很多不严谨的地方,一是找句子时候,谁说含有中国和北京的句子全都是首都的关系,比如我说中国的面积比北京的面积大,就不是。在举个通用的例子,乔布斯是苹果的创始人,和乔布斯吃了一个苹果,表达的完全不是一个关系。这就说明远程监督的数据里存在大量的噪声,我们把真正含有指定关系的句子叫做real instance ,实际上不含任何关系的句子叫NA,其余的就都是反例。这个噪声问题被叫做wrong label 问题。这是远程监督方法第一个需要解决的大问题。

其次,给bag打标签时候根据什么打?按那个关系抽的句子就冠那个关系的名?那万一里面只有一个real sentence  其余全是反例或者NA咋办?所以给包打标签的策略也有很多种,最经典的就是当里面所有句子都是NA的时候,包也NA,里面只有有带关系的句子,就把占比最大的关系打给这个bag。然后拿去作为训练语料。其实也可以对bag里的句子做一些预处理来提高训练效果,比如两个实体在句子里的距离超过一个阈值就删掉,实体竟然是其他实体的子字符串,那不是瞎对应吗,也删掉。等等。

 

当然远程监督还有一些其他问题,比如你找不到你想做的领域的合适的KB。那这种情况我也不知道能有什么办法了,如果解决实际问题还需要具体问题具体分析,DS也不能处处适用。

 

那么综上,大家知道了什么是关系抽取 ,什么是远程监督。接下来就要面对刚才提到的那些挑战了,为了找到更优的关系抽取器。之后的工作主要也集中在对数据的降噪,对模型的改造上。

 

近些年陆续提出了很多优秀的方法,具体介绍在review里。

你可能感兴趣的:(远程监督浅谈)