NER——命名实体识别任务。上图是我们今年发表在 ACL 的一篇文章。NER 实际上就是在给定一段文章或一句话的情况下,识别出内容中所有的命名实体,比如说地名或者是机构名。那么在上图中的 at the Chinese embassy in France 实际上就包含三个命名实体,其中 Chinese 和 France 是地名, the Chinese embassy in France 是一个机构名。 那我们如何将这个 NER 的任务转化为 QA 任务呢?参照上文所讲的三要素 question, context, answer。首先context就是输入的这句话。那么 query 是什么? 可以通过一个简单方法来构造,直接去问:which location is mentioned in the context?我们希望对于这一 query 和 context 组合,模型能够帮我们抽取出 answer。answer 就是两个连续的子串 Chinese 和 France。需要注意的是,query 的构造方法还有很多种。 我们还尝试过另一种方法,直接拿 NER 数据集的标注规则,来作为我们的 query,比如说地名的 NER 的标注规则,就是 find all geographical regions, such as … 这样的话我们就能更贴切的让模型知道什么样的命名实体是一个地名。
2.2 MRC框架解决Relation Extraction任务
接着我们来看如何把 Relation Extraction 的任务转换为 QA?上图是我们发表在 ACL2019 上的一篇文章。Relation Extraction 一般来说可以分为两个步骤,第一个步骤是先识别出来输入 passage 的形态,比如说上图 passage 中绿色标记的就是时间、红色的是人名、蓝色的是公司名,以此类推。 第二个步骤是找出不同的 entity 之间的关系,比如说大家可以看下面这张表。 比如说 Musk 这个人,他在 2002 年担任 SpaceX 这一公司 CEO。Relation Extraction 其实就是一个将非结构化的文档转化为一个结构化信息的过程,这个过程通常是通过先识别 entity,然后再识别 energy 之间的 relation 来完成的。 那我们如何将 Relation Extraction 这个任务转化成 QA?第一步先抽取 person,构造一个 query 叫做 who is mentioned in the text?这样的话我们希望模型会根据这个 query 和 context 进行回答,Musk 这个人出现在了结果中。 第二步我们会问 Musk 这个人 which company did Musk work for?这样的话我们就能可以抽取出来 Musk 为哪些公司工作过。 第三步如果还想抽取他在这个公司担任的职务,可以再继续问 what was Musk’s position in SapceX?模型就会抽取出,他是在 SapceX 担任 CEO。 那么类似的也可以抽出来时间 2002 年,然后我们就会得到一张表。这里有个问题,比如说 Musk 他既在 SpaceX 工作过,又在 Tesla 工作过,那应该怎么去抽取?实际上阅读理解的答案也可以是由多个 span 来组成,可以借助 NER 的 BIO 的标注方式,从一个 passage 中去抽取多段答案,然后只需要对每一段做 QA,这样就可以用多轮 QA 的形式来抽出完整的表格。
最后一个任务来看 Co-reference,Co-reference 比较有意思,任务目的是识别一段话中指代同一个实体的不同描述,比如说上图这段话中 Jingle Bells。还有下图中的 the song 实际上就是在指代同一个东西。任务就是要把这段话中所有可能指代同一个物体的描述全都抽出来,并做出聚类。 context 是原本的输入,query 是抽取和 Jingle Bells 所指相同的词。我们的做法是,构造一个 query It was just “” Jingle Bells “”,这里的 mention 是一个 special token,其实是什么都可以。 然后再匹配前面的 it was just,在原文中出现的 context 作为一个简短的 query 来提问。我们期望得到的 answer 就是 the song,这样的话我们就完成了 Co-reference 任务到 QA 任务的转换。 如果没有答案 answer 就直接是 None 就可以了。
不同NLP任务转化为MRC的优势
上文转换的多个任务中,主要的工作都是在构造 query。Context 通常来讲就是任务本来的输入,核心目标就是构建 query 或 questions。 和将 context 推给模型来学习相比,为什么构建 questions 的效果要更好呢?原因在于 questions 是 encode 了一些先验知识的,可以更明确的告诉模型哪些信息或 token 要被注意到,看做一种 hard version of attention。 还是拿 NER 任务来举例,比如说 context 是 at the Chinese embassy in France,如果标注方式是 annotation guidelines,那么就会提到 geographical regions。 在 Bert 的头注意力机制中,government 这些词如果做可视化的话会被着重强调的。在这种情况下如果构造一个比较好的 query,在数据量很少的情况下也可以抽出高质量的结果。 还有 Domain adaptation 和 Few shot learning 两个优势,这两个优势都是由第一个优势引申过来的。我们在前文和 NER 相关的那篇文章实验中发现,在 question 先验知识的帮助下,只需要使用大概占原本数据集一半左右的数据量就可以达到原本直接用 encoder 来做的效果。 除此之外,我们认为还有一个非常大的优势,就是它的 flexibility,即灵活性。对于灵活性,下面会通过具体分析上述的任务来做逐一解释。
3.1 NER任务在MRC框架下的优势
和前卫的顺序一致,先看 NER 问题下 MRC 框架的优势。 目前主流 NER 任务的大数据集主要都解决的是 flat NER,每一个字可能都只属于一个 entity,但实际上在现实生活中经常不是这样,比如说中国人民解放军,其中的中国这两个字就是一个国家,但中国人民解放军可能又是一个组织,同样的在上图这两个例子中,蛋白和 DNA 或者说国家和机构其实都是会有重叠的。 熟悉 NER 同学都知道常规解决手段比如 Sequence labeling,会后面加一个 CRF,但这样做很难解决 NER 之间 overlap 的情况。 而对 MRC 来说这就是非常简单的一个问题,因为我们的 query 构造先天的避免了问题,对每一类的 entity 都会问一个不同的问题,比如说对于图中的第二句话,我们就可以先问:这句话里出现了哪些地名? 然后 MRC 会告诉我们有 Chinese、France,接着问这句话里又出现了哪些机构名,它会告诉我们是 the Chinese embassy in France,可以看到嵌套命名实体的情况对于 MRC 框架来说就根本不是一个问题。 上图是在 Nested NER 数据集上实验的结果,大家会发现我们的优点非常明显,相比于 Flat NER 领先优势是一个点左右。Nested NER 突破了之前一些方法的瓶颈,所以相应的提升会非常的明显。
3.2 Relation Extraction任务在MRC框架下的优势
接下来看 relation extraction。一般的方法是,首先提取不同类型的 entities,比如说人名、公司名、时间等等。第二步就是去构造 entity 之间的关系,比如说这个 Musk 跟 SpaceX 就是 work at 这样的一种 relation。 这样操作的问题是很难去解决 hierarchies 的问题,还是看上图简单的例子, Musk 可以在不同的公司工作,在一家公司也有可能担任多个职务,单纯的通过 two stages 的方法是解决不了问题的。 那么在 MRC 的框架下,这样的问题就会迎刃而解,这一切都可以通过多轮问答的形式来解决。上图是在 relation extraction data 上的实验结果。