1. 序
命名实体识别(Named Entity Recognition, 下称NER)任务,主要目的是从一段话中抽取出其中可能为实体的所有元素。比如:
"Hi Siri, 今天北京天气怎么样?"
如果下游任务要求我们从其中抽取出地点,那我们期望 北京 能被识别成Location,如果我们希望从中抽取的产品名称,那么 Siri 应该被标记成Product——换言之,能从句子中抽出什么实体,是由我们提前给定的标签集合定义的。在一个任务型对话系统中,一些可能在后台处理中使用到的实体都应该被抽出来:我们有理由相信,Siri是真正将 北京 给提取出来了,然后再通过后台查询到了天气,而不是找了一个人工客服在后台即时回复。
NER在很多下游任务中都是非常重要的一环。比如在电商行业,我们可能需要从用户的查询中提取出品牌或商品,来针对性地给用户返回内容。金主爸爸可能也希望用户在查指定品牌的时候,将一些商品放在第一位。在任务型人机对话方面,正如上面所说,一个合格的Chatbot需要能够准确地识别时间、地点、事件等元素以回答相关问题或安排日程,同时做到不偷听用户的日常对话。
而嵌套NER,顾名思义,就是识别的实体中可能会存在嵌套的情况。比如 北京大学
不仅是一个组织,同时 北京
也是一个地点;雅诗兰黛小棕瓶
是一个产品,同时 雅诗兰黛
是一个品牌。
准确地识别嵌套内容有什么作用呢?简单来讲,如果一个模型能够识别出 北京大学
是一个组织,它倾向于将所有出现的 北京大学
都标记成组织。但如果它能够在识别前者的同时将 北京
标记成地点,我们就认为它有能力将所有 [地点]大学
的模式都识别出来,因为后者的角度,模型学到的是一种pattern,而非记住了一种具体情况。此外,提取出来的额外信息也能作为辅助特征,增强其他任务的效果。