论文:https://arxiv.org/pdf/1910.11476v6.pdf

前沿:

在之前的NER任务中常常分为两种:nested NER和 flat NER。从直观的角度来看,nested NER考虑到了实体嵌套问题。

发展:

  • flat NER的任务通常形式化为序列标记任务:序列标记模型,但是这种序列标记的模型无法考虑到实体嵌入关系问题。如中国移动是一个公司实体,而中国是一个国家实体,在flat NER中可能只能提取出中国移动整体却忽视了中国这个部分。
  • 考虑到这个问题后,提出了pipelined systems用来实现nested NER,但是pipelined systems具有错误传播,运行时间长以及开发手工特征的强度大等缺点。
  • 而MRC对于NER任务的处理便由之而来,在论文中作者表明了MRC对于flat NER和nested NER任务都有了提升。

什么是MRC

简单来说MRC是一种以问答方式解决NER任务的模型结构,通过给出相关实体的描述(问题),然后在文本中找出相对应的答案,这个方式就像做阅读理解一样。

例子:中国移动发布了一个新方案

flat NER:按照标记,标记每一个token,然后找出实体。而属于中国移动公司实体的一部分的中国国家实体无法获得。缺点:无法获取的嵌入实体的信息。

nested NER:将中国,中国移动保存起来(通过栈,队列等等方式),使用递归迭代等方式判断,缺点:时间复杂度过高,一个错误后面全错。常用方法:多层CRF网络,超图,分类器等等。

MRC:构建实体描述信息(问题):公司:一个以营利为目的的社团法人,国家:一个具有民族意义的社会团体。然后在文本中提取具有此信息的实体。不仅时间复杂度下降了很多,而且由于开始时便给出了语义先验信息使得在少量训练集的情况下也能得出较好的效果。

MRC实现步骤

数据集构建:

需要将NER数据集转换为一组(QUESTION,ANSWER,CONTEXT)三元组。

QUESTION:描述每个实体(q1,q2,....,qn),每个q代表一个实体的描述语句,长度为实体的个数。

ANSWER:Xstart,Xend = {Xstart ,Xstart+1,......,Xend},代表实体对应在文本中的开始和结尾索引。

CONTEXT:代表整个文本。

每个数据的相关表现形式为:(qy, Xstart,Xend, X)。

问题的生成

问题生成过程很重要,因为查询会编码有关标签的先验知识,并对最终结果产生重大影响。

在论文中作者给出了他们生成问题的注释:

模型详细

模型结构

在论文中作者表示了模型的基本结构使用了bert作为预训练模型,{[CLS], q1, q2, …, qm, [SEP], x1, x2, …, xn}作为bert的输入,(bert:Simple to Bert | Ripshun Blog),最后通过bert我们可以得到一颗answay。

Span Selection

MRC中有两种Span Selection策略:

第一种策略是让两个n类分类器分别预测开始索引和结束索引,其中n表示 上下文的长度。 由于softmax函数放在上下文中的所有token上,因此该策略的缺点是,给定查询只能输出单个范围;

另一种策略是具有两个二进制分类器,一个用于预测每个标记是否为起始索引,另一个用于预测每个标记是否为结束索引。 该策略允许为给定上下文和特定查询输出多个开始索引和多个结束索引,因此有可能根据qy提取所有相关实体。

训练流程

  • 首先token通过bert预训练得到字向量。
  • 通过liner和softmax将维度降为二维概率分布(表示是否为start或end)
  • 通过argmax将是start或end的转成1
  • end与start同理,这样可以训练出2个只含1和0的向量分别代表start和end。
  • 输出其中为1的(即是start或end)位置
  • 最后通过sigmoid将输出可能为实体的词的概率。

损失值计算

在论文中损失值主要计算了3个部分,采用了交叉迭代的方法:

  • 编号为strat的损失值
  • 编号为end的损失值
  • 实体概率的损失值

将三者综合得到整体的损失值:

总结

MRC(机器阅读理解)在给了NER任务一个全新的解决方式,这种方法个人觉得比传统方法更加易于实际,且在训练集较少的情况下也能达到很好的效果(由于其先验知识)。

MRC模型结果

论文中指出mrc模型在nested和flatNER任务上都取得了提升

 
目前共有0条评论
  • 暂无Trackback
你目前的身份是游客,评论请输入昵称和电邮!