论文:https://arxiv.org/abs/1910.11476
源码:https://github.com/ShannonAI/mrc-for-flat-nested-ner
使用机器阅读理解的方式去解决 命名实体(NER) 任务,主要在数据的构建上面,对于每一个实例句子作为 context,前面拼接一个 query 块,这个 query 是对实体的描述,比如:
- which person is mentioned in the text
- find an organization such as company, agency and institution in the context
- 然后 跟 后面的需要标识出 实体的句子 进行拼接:
- [CLS] query [SEP] context [SEP]
作为 bert 的输入格式
MRC抽取答案的方法是预测答案的开始位置和结束位置,有两种方案:
- 设计2个n-classes分类器(n为句子长度),分别预测答案的开始位置和结束位置。这种方案在给定一个context和一个question时只能得到一个答案,无法处理句子中存有多个实体的问题,更不能解决实体嵌套的问题;
- 设计2个2分类器,其中一个分类器负责预测每个字符是否是实体开始位置,另一个分类器负责预测每个字符是否是实体的结束位置。这种方案在给定一个context和一个question时支持多个实体开始位置和多个实体结束位置
Loss:
- strat_loss & end_loss:
多标签二分类问题,对于一个原始样本来说,假设序列长度为n,那么就是n个二分类问题。设计baseline时,使用交叉熵作为损失函数,最终的损失函数由两部分组成:start_loss和end_loss。 - span_loss。核心思想是对于模型学习到的所有实体的start和end位置,构造首尾实体匹配任务,即判断某个start位置是否与某个end位置匹配为一个实体,是则预测为1,否则预测为0,相当于转化为一个二分类问题,正样本就是真实实体的匹配,负样本是非实体的位置匹配。
tips:
模型结构不复杂,主要在于数据集的构建,论文结果是比一般的 NER 方法好,论文中说到时 借鉴19年另一篇 转换为 阅读理解任务做关系抽取 的工作
参考:
https://zhuanlan.zhihu.com/p/103779616?utm_source=qq
基于MRC框架的命名实体识别方法
网友评论