1、背景
命名实体识别(named entity recognition,NER):通常是一个序列标注的任务,常见的模型框架有:LSTM-CRF、BERT+BILSTM+CRF等,该种任务通常被成为flat NER即:每一个token只分配一个label;序列标准任务还会受到分词器的影响,而对于nested NER,即一个token可能被赋予多个实体。如:老中医(本身中医是一个学科实体,但是“中医”与“老”连起来表达的是一个身份实体,即中医被赋予了不同的含义)
2、原理介绍
目前基于QA问答形式的大模型技术日前在蓬勃的发展,通过问答任务训练实体识别NER任务,被称之为MRC(机器阅读理解)。将目标词(实体类型)当成一个自然语言的查询query,对于给定的上下文句子,以回答问题的方式将实体值识别出来。
(1)任务的目标:对于输入的文本句子序列X = {x1, x2,…, xn},其中n表示序列的长度,需要从文本句子X中找到每个实体片段span,然后给该实体片段分配一个标签y∈y,其中y是一个预定义的所有可能的标签类型(目标词)的列表(如地址、电话号码、职业、学历等实体类型)
(2)模型的框架:将{[CLS], q1, q2, ..., qm, [SEP], x1, x2, ..., xn},其中qy表示的是目标实体类型y对应的查询,即将带识别的目标词和文本上下文放在一起,送入大模型进行统一的编码,根据生成的embedding表示,通过分类任务进行实体片段的识别
(3)片段识别器:通过双指针网络从输入的x1, x2, ..., xn中,发现实体span的起点和终点,模型寻找start和end的过程:n个二分类器的判读过程,即对于输入n长度的文本句子中的每个词进行二分类器,判断是否是起点还是终点,这样通过定的上下文和特定的查询输出多个开始索引和多个结束索引。对于每个位置的embedding进行T转化生成起始位置的概率分布,同理可生成终止位置的概率分布,在起始的概率分布中找到概率最大对应的位置,作为起始位置,在终止的概率分布中找到概率最大对应的位置,作为终止位置,根据起始位置和终止位置对应的embedding,拼接后进行二分类判断是否为span,整体的loss包含了位置的loss是否是起点和终点以及span的loss是否是对应的起点和终点。
3、chatGLM做实体识别的例子
微调数据构建
首先,我们需要将NER标记风格的数据集转换成一组 (上下文、问题、答案) 三元组。有每个标签类型y∈Y,它与自然语言问题qy相关联,qy = {q1, q2, ..., qm} ,其中m表示生成的查询的长度。注释实体xstart,end = {xstart, xstart+1,···,end-1, xend}是满足start≤end的X的子字符串。每个实体都有一个真实标签y∈y。通过基于标签y生成一个自然语言问题qy,我们可以获得三元组(qy, xstart,end, X),这正是我们需要的三元组(问题,答案,上下文)。注意,我们使用下标“start,end”来表示从' start '到' end '的连续标记。
4、参考文献
[1]https://www.zhihu.com/question/452002433/answer/2327252882?utm_psn=1722650204480577536
[2]A Unified MRC Framework for Named Entity Recognition
论文链接:https://arxiv.org/pdf/1910.11476.pdf
代码链接:GitHub - ShannonAI/mrc-for-flat-nested-ner: Code for ACL 2020 paper `A Unified MRC Framework for Named Entity Recognition`
[3]Pointer Networks
[4] UIE:Unified Structure Generation for Universal Information Extraction