Deep Span Representations for Named Entity Recognition

文章介绍了一种新的模型DSpERT,针对NER任务中span表征的重要性,提出利用Transformer和span-transformer进行深层交互,尤其在处理长实体和嵌套实体时效果显著。实验结果显示,深度span表征在复杂结构下优于传统方法。

原文链接:

https://aclanthology.org/2023.findings-acl.672.pdf

ACL 2023

介绍

        问题

        作者认为,一个好的span表征对于NER任务是非常重要的,而之前的工作都是将第一个或最后一个的表征简单的进行组合后,没有进行充分的交互就送入到实体分类器中进行分类,不利于长实体的识别,并且对于嵌套实体中共享token的情况下,会导致产生的span是相似的。

        IDEA 

         作者提出了DSpERT模型,该模型包括了一个transformer和一个span transformer(用于span 表征和token表征之间的交互),来获取span的深层表征。

方法

         整体的结构如下图所示:

Deep Token Representations

         第l层的token表征为:

        最初的H^{0}由token embedding、positional embedding和segmentation embedding组成。

TrBlock由一个多头注意力模块和一个position-wise前馈网络(FFN)组成,并在其中加入了残差连接和层归一化。经过L层计算得到的token表征H^{L}被认为是包含了深层且丰富的语义,可用于各种任务,因此在典型的NLP范式中,只对顶层的H^{L}计算损失和解码。

Deep Span Representations

         在大小为k的span transformer中,使用对应的token embedding进行初始化,

        s_{i}^{0,k}覆盖了(i,i+k)这个span中的token embedding。

        span表征高层的计算与标准的transformer相似,对于每个span transformer block,query是低层的span 表征,k和value是上述span的position向量。第l层的span表征表示为:

        将最后一层的span 表征用于实体分类。另外,这里的SpanTrBlock与token中的TrBlock的结构一致,并且初始化参数也是一致的。作者尝试将这两个模块共享同一个transformer,但这样会导致模型性能下降。

Entity Classifier

        在进行解码前,先对span进行了降维,整个分类过程如下所示:

        使用one-hot对ground truth标签进行编码,计算每个span的loss:

实验

对比实验

         在多个英文嵌套实体数据集上进行实验,结果如下所示:

         在falt数据集上进行实验,结果如下所示:

消融实验

        作者对span representation的深度进行了消融实验,结果如下所示:

        为了更好的严重模型在嵌套实体上的表现,作者将nest ner分为两类:

        1)被嵌套在其他真实实体中;

        2)覆盖在其他真实实体中;

        比如“New York University”,作者认为一个好的模型要能够做到:1)将“New York”与外部实体“New York University”内的其他span区分开来;2)将“New York University”与涵盖的内部实体“new York”的其他span区分开。

        对模型在不同长度span上的表现进行了实验,如下所示:

        可以看出在长实体上,作者提出的模型明显优于简单的span 表征。

        在不同嵌套结构下的实验结果:

分析 

         对于神经网络中的分类模型,logits只和预定的分类类别有关,而pre-logit(我理解为在算分数前的表征)表征包含了更丰富的信息。作者通过研究pre-logit span表征,来探究为什么深度的span 表征会比简单表征更好的。

        通过计算实体共享的token个数来表示两个实体之间的重叠率,计算实体与其邻居实体之间的余弦相似度。

        可以看出,DSpERT与简单模型在非嵌套上的表现相近,然而对于嵌套率越高的实体,简单模型生成的表征要比DSpERT相似度更高,即简单模型会产生跨度重叠的表示,而DSpERT生成的表征之间相似率更低,在嵌套实体上产生更好的性能。

         计算了不同类别(positive和negative)之间的L2范式和余弦相似度,可以看出深度表征在类别之间具有较低的相似度、在类别内具有较高的相似度。

        对span的表征进行PCA降维进行可视化,也可以看出作者提出的deep 表征在别类之间有更明显的界限,各个类别联系也更加紧密。

总结 

        作者认为在span NER中,最小的建模单元应该是span而不是token,并且作者探讨了该模型的局限性,时间开销很大,是普通模型的5倍。因此可以看作该模型是用了时间来换取了精度,并且只是对表征进行了处理,其他地方都没有什么创新点,12层的transf,这是往死里丰富span啊,,

### BERT NER Transformer-Based Named Entity Recognition Overview Transformer架构下的命名实体识别(NER)方法,尤其是基于BERT的实现,在处理不平衡数据集方面表现出显著优势[^2]。这些模型通过预训练阶段获取丰富的语义信息,并在微调过程中针对具体任务优化参数。 #### 实现概述 BERT-NER的主要流程如下: - **预训练**:采用大规模无标注文本进行双向编码器表示(Bidirectional Encoder Representations from Transformers),即BERT模型的学习过程。 - **特征提取**:对于给定句子中的每一个token,BERT能够提供深层次的语言理解能力,捕捉到复杂的语法和语义模式。 - **分类层构建**:在BERT之上添加一层或多层全连接神经网络用于预测各个位置上的标签类别,如`O`, `B-Person`, `I-Person`等。 ```python import torch from transformers import BertTokenizer, BertForTokenClassification tokenizer = BertTokenizer.from_pretrained('bert-base-cased') model = BertForTokenClassification.from_pretrained('dbmdz/bert-large-cased-finetuned-conll03-english') def predict_entities(text): inputs = tokenizer.encode_plus( text, add_special_tokens=True, return_tensors="pt" ) outputs = model(**inputs)[0] predictions = torch.argmax(outputs, dim=2) tokens = tokenizer.convert_ids_to_tokens(inputs["input_ids"][0]) entities = [] current_entity = None for idx, pred in enumerate(predictions[0]): label = model.config.id2label[pred.item()] if not label.startswith("I") and current_entity is not None: entities.append(current_entity) current_entity = None if label != "O": token_text = tokens[idx].replace("##", "") if label.startswith("B"): current_entity = {"entity": label.split("-")[1], "text": token_text} elif label.startswith("I") and current_entity is not None: current_entity["text"] += f" {token_text}" if current_entity is not None: entities.append(current_entity) return entities ``` 此代码片段展示了如何加载预先训练好的BERT模型并应用于新的文本输入以执行命名实体识别的任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值