第3章〓基于Transformer模型的NER 3.1引言 随着数字化技术的快速发展,越来越多的古籍文献可以使用数字化存储和传播。然而,古籍文本的复杂性和特殊性给其信息抽取和文本分析带来了巨大挑战。在古籍研究领域,准确地识别和标注文本中的命名实体对于深入挖掘古籍的知识、历史和文化具有重要意义。 在古籍识别任务中,NER的目标是自动识别文本中的人名、地名、机构名等实体,以及日期、时间等具有特定意义的实体。这些实体信息是深入理解古籍文本、还原历史场景、揭示人物关系和地理背景的重要线索。 基于Transformer模型的NER技术作为NLP领域的重要突破,为古籍文本识别提供了新的解决方案。本章旨在探索基于Transformer模型的NER方法在古籍识别中的应用,本章将使用在Transformer架构基础上引申出来的基于分层Transformer模型的NER、基于BERTCRF(Bidirectional Encoder Representations from Transformers with Conditional Random Fields,基于条件随机场转换器的双向编码表示)的NER和基于迁移学习的细粒度BERT(Bidirectional Encoder Representations from Transformers,基于转换器的双向编码表示)的NER三种方法,用于古籍实体识别的研究。 3.2问题引入 古籍文献作为珍贵的文化遗产,蕴含着丰富的历史、文学和社会信息,对于古代社会、文化传承和学术领域都具有重要价值。然而,由于古籍文本的特殊性和复杂性,对其进行深入的分析和理解一直面临着挑战。在此背景下,如何利用先进的NLP技术来提升古籍文献的识别和分析能力成为一个重要的问题。 NER是NLP中的一个关键任务,旨在识别文本中具有特定语义含义的命名实体,如人名、地名、时间、收藏地等。在古籍文本实体识别任务中,准确地识别和标注古籍文本中的命名实体是一项具有挑战性的任务。古籍文本常常使用古代汉字、异体字和古代人名、地名的表示形式,使得传统的基于规则或词典的方法往往无法满足准确实体识别的要求。 Transformer模型能够通过学习上下文信息,对复杂的古籍文本进行更准确的NER。然而,将基于Transformer模型的NER方法应用于古籍文献识别任务中仍然存在一些问题和挑战。首先,古籍文献的特殊性导致其数据量有限,相比于现代语料库,可用于训练的标注数据较少。如何在有限的古籍数据上训练出高性能的NER模型,成为一个亟待解决的问题。其次,古籍文本中存在着各种异体字、俗字和缺失字等,这些问题对于命名实体的准确识别带来了挑战。此外,古籍文献中的人名、地名常常具有多义性和上下文依赖性,如何准确区分不同的命名实体,尤其是在上下文信息有限的情况下,也是一个需要解决的问题。基于上述问题,本章旨在探索基于Transformer模型的NER方法在古籍命名实体识别中的应用,利用Transformer模型提升古籍文献的NER性能。 3.3基于分层Transformer模型的NER 3.3.1引言 NLP的根本目标之一是开发能够理解人类语言所表达的潜在语义系统。实现这一目标的一个重要步骤是能够有效地提取有用的语义信息,例如,从给定的文本中识别出命名实体的边界以及命名实体的类型,也就是NER,它是信息抽取中的标准任务之一。 在大规模地应用深度学习之前,NER方法主要以基于词典和规则的方法、传统机器学习的方法为主,识别准确率在缓慢提升,但一直无法取得理想效果。深度学习的引入和发展使NER任务的准确率得到了很大的提高。开发能够高效识别嵌套命名实体的算法对于许多NLP下游任务的执行至关重要,而且具有一定的实际应用价值,如RE、EE、共参分解、知识库问答、信息检索和语义解析等。然而,嵌套命名实体结构是复杂多变的,嵌套颗粒度与嵌套层数缺乏规律性,如何快速高效地从开放领域的文本中准确获取嵌套命名实体结构信息,使得语义理解更加精准,是NLP进入全面化应用的关键。 早期,人们常结合基于规则和基于机器学习的方法来处理嵌套命名实体。文献首先使用隐马尔可夫模型识别最内层的非嵌套命名实体,其次使用基于规则的后处理来识别外部命名实体,最后在GENIA数据集上评估。Alex等人于2017年提出了几种基于CRF的技术,用于对GENIA数据集进行嵌套NER。该方法以特定的顺序对实体类型应用CRF,这样每个CRF都能利用前面CRF的输出,采用这种级联方法可以取得最佳嵌套NER结果。2009年,Finkel和Manning从解析的角度来实现嵌套NER任务,通过构建选区树,将命名实体映射到树中的节点上。 3.3.2实现原理与步骤 基于分层Transformer模型的NER的实现原理主要涉及两方面,分别是分层Transformer模型和标注数据的预处理。 1) 分层Transformer模型 分层Transformer模型是一种基于Transformer的模型架构,用于处理NLP任务。它由多层Transformer编码器和解码器组成,其中编码器负责将输入文本表示为上下文有关的向量表示,解码器负责生成输出结果。 在NER任务中,输入是一个句子,目标是识别出句子中的命名实体,如人名、地名、组织机构等。为了实现这一目标,分层Transformer模型首先将输入句子的每个单词转换为其对应的词向量。然后,通过多个编码器层,逐步将输入句子的上下文信息编码到词向量中。每个编码器层包括多头自注意力机制和前馈神经网络层。多头自注意力机制可以捕获单词之间的依赖关系,前馈神经网络层用于对词向量进行非线性变换。通过多个编码器层的堆叠,模型可以逐渐提取句子中的上下文信息。 在编码器的输出上,可以应用CRF层来对每个单词进行标签预测。CRF层考虑了相邻单词之间的标签依赖关系,可以提高模型在命名实体边界的准确性。最终,模型会输出每个单词的命名实体标签。 2) 标注数据的预处理 在训练分层Transformer模型之前,需要对标注数据进行预处理。通常,标注数据由句子和每个单词对应的命名实体标签组成。预处理包括将句子转换为词向量表示以及将命名实体标签转换为模型可接受的形式。句子的转换可以使用预训练的词向量模型,例如Word2Vec或GloVe,将每个单词映射为词向量。这些词向量可以在分层Transformer模型的输入层使用。命名实体标签的转换通常采用BIO(Begin,Inside,Outside)或者BIOES(Begin,Inside,Outside,End,Single)格式。BIO和BIOES是常用的命名实体标签编码方案,用于表示命名实体的开始、内部、结束和单独的状态。通过预处理标注数据,可以将其转换为模型可接受的输入形式,从而训练分层Transformer模型进行NER。 总之,基于分层Transformer的NER的实现原理包括分层Transformer模型的架构和标注数据的预处理。这些技术可以帮助模型从输入句子中提取上下文信息,并预测每个单词的命名实体标签。使用分层Transformer模型进行NER,步骤如下。 (1) 数据准备。 收集或准备一个NER标注数据集,其中包含句子和每个单词对应的标签(如人名、地名、组织机构等)。并将标注数据集划分为训练集、验证集和测试集。 (2) 模型构建。 选择一个适合的分层Transformer模型,如BERT或GPT(Generative Pretrained Transformer,生成式预训练变换器)。根据任务需求,可以选择在预训练的模型上进行微调(finetuning),或从头开始训练。在模型中添加适当的层和参数,以输出每个单词的命名实体标签。 (3) 输入数据处理。 将句子转换为词向量表示,可以使用预训练的词向量模型,如Word2Vec或GloVe,将每个单词映射为词向量。将标签转换为模型可接受的形式,通常使用BIO或BIOES编码方案。 (4) 模型训练。 使用训练集进行模型的训练。将输入数据(词向量表示)和标签输入模型中,计算预测结果,并与真实标签进行比较,计算损失函数。根据损失函数的反向传播算法,更新模型的参数,以减小预测结果与真实标签之间的差距。重复迭代训练过程,直到模型收敛或达到指定的训练轮数。 (5) 模型评估。 使用验证集对模型进行评估,计算准确率、召回率、F1评分等指标,以评估模型的性能。根据评估结果,可以对模型进行调整和优化。 (6) 模型应用。 使用测试集对模型进行最终评估,评估模型在未使用过的数据集上的性能。将训练好的模型部署到实际应用中,对新的文本进行NER。需要注意的是,在实际应用中,可以根据具体需求对模型进行调整和优化,例如增加正则化、模型融合、后处理等技术,以提高NER的性能。 3.3.3基本结构与训练方法 1. 基本结构 嵌套NER框架如图3.1所示,该框架主要包含5部分内容。 (1) 获取有标签数据集: 人工标注获取有标签嵌套命名的实体数据集。常见的标注方法如下。 ① BIO标注法,其中B表示开始,I表示内部,O表示外部。 ② BIOES标注法,该标注方法是BIO标注法的延伸,其中E表示结束,S表示单独构成一个命名实体。 (2) 构建词语向量表示: 对原始的输入字符序列进行分词,将分词表示成计算机可识别的计算类型,在各个位置上学习一个位置向量表示来编码序列顺序的信息,或者在表示以外加入一些传统的浅层有监督模型中使用的特征。 (3) 进行特征提取: 对词向量表示进行特征变换、编码,例如使用递归神经网络、CNN、Transformer等进行建模和学习。 (4) 嵌套NER: 采用一定的模型对词语向量表示和提取的特征进行训练,得到嵌套NER预训练模型。 (5) 评估识别性能: 对识别结果进行评测,评测流程见图3.1。 图3.1评测流程 分层Transformer模型是一种基于Transformer的模型架构,用于处理NLP任务。它主要由多个编码器层组成,每个编码器层由多头自注意力机制和前馈神经网络层组成。以下是分层Transformer模型的基本结构。 (1) 输入嵌入层(Input Embedding Layer)。 将输入的文本序列中的每个单词转换为其对应的词向量表示。可以使用预训练的词向量模型,如Word2Vec或GloVe,或者在模型训练时从头开始学习词向量。 (2) 编码器层(Encoder Layer)。 多个编码器层的堆叠是分层Transformer模型的核心。每个编码器层可以独立地对输入序列进行处理,并且每个编码器层的输出将作为下一个编码器层的输入。每个编码器层包含两个子层: 多头自注意力机制层和前馈神经网络层。 (3) 多头自注意力机制层(MultiHead SelfAttention Layer)。 在多头自注意力机制层中,输入序列的每个单词都会与其他单词进行交互,以捕捉单词之间的依赖关系。通过使用多个注意力头,模型可以同时学习多个注意力权重,以捕捉不同的语义信息。注意力权重告诉模型每个单词与其他单词的关联程度。 (4) 前馈神经网络层(FeedForward Neural Network Layer)。 在前馈神经网络层中,通过对多头自注意力机制的输出进行非线性变换。通常,前馈神经网络层由两个全连接层和一个激活函数组成,用于引入非线性。 (5) 输出层(Output Layer)。 在NER任务中,可以在编码器的输出上应用CRF层。CRF层考虑了相邻单词之间的标签依赖关系,可以提高模型在命名实体边界的准确性。最终,模型会输出每个单词的命名实体标签。通过多个编码器层的堆叠,分层Transformer模型可以逐渐提取输入序列的上下文信息,并预测每个单词的命名实体标签。 需要注意的是,分层Transformer模型可以根据具体任务的需求进行调整和扩展。例如,在NER中,可以在模型中添加CRF层以考虑标签依赖关系,或者使用模型融合等技术来提高性能。 2. 训练方法 分层Transformer的训练方法通常采用两个阶段: 预训练阶级和微调阶级。 (1) 预训练阶段。 在预训练阶段,使用大规模的未标注文本数据集对分层Transformer模型进行训练。通常使用自监督学习的方法,如掩码语言建模(Masked Language Modeling,MLM)或预测下一个句子(Next Sentence Prediction,NSP)来训练模型。在MLM任务中,一部分输入文本中的单词会被随机掩码,模型需要预测这些掩码单词的正确标签。在NSP任务中,模型需要判断两个句子是否相邻,以帮助模型学习句子级别的关系。 (2) 微调阶段。 在预训练完成后,使用有标签的任务特定数据集对模型进行微调,以适应具体的任务。在NER任务中,可以准备一个NER标注的数据集,其中包含句子和每个单词对应的命名实体标签。将NER数据集输入模型中,计算预测结果,并与真实标签进行比较,计算损失函数。根据损失函数的反向传播算法来更新模型的参数,以减小预测结果与真实标签之间的差距。重复迭代训练过程,直到模型收敛或达到指定的训练轮数。在微调阶段,可采用下述策略来进一步优化模型性能。 ① 学习率调整: 可以使用学习率衰减策略,如逐渐减小学习率或在训练过程中进行学习率的动态调整。 ② 正则化: 可以使用正则化技术,如权重衰减(Weight Decay)或随机删除神经元(Dropout),以防止过拟合。 ③ 模型融合: 可以将多个训练好的模型进行融合,如使用集成学习方法或模型堆叠方法,以提高泛化能力。需要注意的是,分层Transformer的预训练和微调方法可以根据具体的任务需求进行调整和优化。此外,采用更大规模的预训练数据集和更复杂的训练策略通常可以提高模型的性能。 3. 预训练模型 分层Transformer模型的预训练模型有许多,其中一些最为知名和常用的预训练模型包括以下几种。 (1) BERT。 BERT是一种基于Transformer架构的预训练模型,通过MLM和NSP的任务来进行训练。BERT模型在多种NLP任务上取得了显著的性能提升,并广泛应用于文本分类、NER等任务中。 (2) GPT。 GPT是一种基于Transformer架构的预训练模型,通过语言模型任务进行训练。GPT模型使用自回归的方式生成下一个单词,以捕捉句子中的上下文关系,并能够生成连贯的句子。 (3) RoBERTa。 RoBERTa是在BERT模型的基础上进行改进和优化的预训练模型。RoBERTa采用更大的模型规模和更长的预训练步骤,以获得更好的性能表现。 (4) ALBERT。 ALBERT是对BERT模型进行改进,以减小模型规模和参数数量的预训练模型。ALBERT通过共享参数和分解参数矩阵等技术,实现模型轻量化,提高了训练和推断的效率。 除了以上列举的模型,还有许多其他的分层Transformer预训练模型,如XLNet、T5、ELECTRA等。这些模型在不同的任务和数据集上表现出色,具有不同的优势和特点。需要根据具体的任务需求、数据集和计算资源等因素选择适合的预训练模型,并结合微调和优化技术来进一步提高模型的性能。 4. 损失函数 分层Transformer模型的损失函数可以根据具体任务进行选择。以下是几种常见的损失函数示例。 (1) MLM。 在预训练阶段,分层Transformer模型通常使用MLM任务进行训练。在该任务中,输入文本中的一部分单词会被随机掩码,模型需要预测这些掩码单词的正确标签。通常,采用交叉熵损失函数来计算模型预测结果与真实标签之间的差异。 (2) NSP。 在预训练阶段,分层Transformer模型还可以通过使用预测下一个句子的方式来进行训练。在该任务中,模型需要预测两个句子是否是相邻的。通常,采用二元交叉熵损失函数来计算模型预测的概率分布与真实标签概率分布之间的差异,具体来说,即计算相邻或不相邻句子的模型预测概率与真实标签之间的差异。 (3) NER。 在微调阶段,针对NER任务,常用的损失函数是序列标注任务中的交叉熵损失函数。模型将根据输入句子对每个单词进行命名实体标签的预测,并与真实标签进行比较。交叉熵损失函数可度量模型预测结果与真实标签之间的差异,以便通过反向传播算法来更新模型参数。 除上述示例损失函数外,还可以根据具体任务的特点和需求定义其他适合的损失函数。例如,在机器翻译任务中,可以使用序列级别的交叉熵损失函数来计算预测结果与目标序列之间的差异。需要根据具体任务的特点选择合适的损失函数,并结合其他优化技术来进一步提高分层Transformer模型的性能和泛化能力。 5. 评估指标 评估分层Transformer模型的性能时,可以使用多种指标来衡量其在不同任务上的表现。以下是一些常用的评估指标示例。 (1) 准确率(Accuracy)。准确率是最常见的评估指标,用于评估分类任务的性能。它表示正确分类模型在所有样本中的比例。 (2) 精确率(Precision)和召回率(Recall)。精确率和召回率通常一起使用,用于评估二分类和多分类任务中的模型性能。精确率衡量模型预测为正类别的样本中,实际为正类别的比例。召回率衡量实际为正类别的样本中,模型预测为正类别的比例。 (3) F1评分(F1Score)。F1评分综合了精确率和召回率,用于评估二分类和多分类任务中的模型性能。F1评分是精确率和召回率的调和平均值,能够综合考虑模型的预测准确性和对正例的召回能力。 (4) 均方误差(Mean Squared Error,MSE)。MSE常用于回归任务中,用于评估模型预测结果与真实值之间的差异。它计算预测值与真实值之间差异的平方的平均值。 (5) 对数损失(Log Loss)。对数损失常用于概率预测任务中,用于衡量模型对概率分布的预测准确性。它度量模型预测结果与真实结果之间的差异的平均对数概率。 (6) 特定于任务的评估指标。在一些特定的任务中,可能还会使用任务特定的评估指标。例如,在NER任务中,可以使用标签级别的精确率、召回率和F1评分来评估模型对命名实体的识别能力。在评估分层Transformer模型性能时,应根据任务类型和需求选择合适的评估指标。同时,交叉验证和对比实验等方法有助于更全面和准确地评估模型在各项指标上的性能。 3.3.4示例 这里以Python代码的形式给出一个基于TensorFlow实现的分层Transformer NER模型示例。 import tensorflow as tf from tensorflow.keras.layers import Dense, Input from tensorflow.keras.models import Model # 输入表示层 input_ids = Input(shape=(MAX_SEQ_LEN,), dtype=tf.int32) input_masks = Input(shape=(MAX_SEQ_LEN,), dtype=tf.int32) segment_ids = Input(shape=(MAX_SEQ_LEN,), dtype=tf.int32) # 分层Transformer编码器 x = Embedding(vocab_size, d_model)(input_ids) # 词嵌入 x = AddPositionEncoding(x) # 添加位置编码 for n in range(n_layers): x = MultiHeadAttention(d_model, n_heads)([x, x, x, input_masks]) # 多头自注意力 x = FeedForward(d_model)([x]) # 前馈神经网络 # 序列标记层 x = Dense(n_tags)(x) output = CRF(n_tags)(x) # CRF层 # 构建模型 model = Model(inputs=[input_ids, input_masks, segment_ids], outputs=output) # 编译和训练模型 model.compile(optimizer=Adam(learning_rate), loss=crf_loss) model.fit([input_ids, input_masks, segment_ids], labels, epochs=n_epochs) # 预测和后处理 pred = model.predict([input_ids, input_masks, segment_ids]) pred = post_process(pred) # 后处理,如去除冗余实体、合并实体等 该模型主要包含以下几部分。 (1) 输入表示层: 使用词嵌入和位置编码将词序列转换为向量序列。 (2) 分层Transformer编码器: 包含多层Transformer编码器,每个编码器层包括多头自注意力和前馈神经网络。 (3) 序列标记层: 使用CRF层对序列进行标记,预测每个词的实体标签。 (4) 模型训练: 使用交叉熵损失和CRF损失训练模型。 (5) 预测和后处理: 使用训练好的模型进行预测,并使用后处理技术改进预测结果。 该示例演示了如何利用TensorFlow实现一个基本的分层Transformer NER模型。可以对模型进行进一步改进,如调整超参数、使用更大的预训练模型等,以提高模型性能。 3.3.5实验分析 HiTRANS模型描述如图3.2~图3.4所示。 图3.2HiTRANS模型概述——语句的多个层级表征图 为了更好地捕捉句子的语义信息,从多个层级进行表征,例如,字符级、单词级和句子级。字符级嵌入(CLEMB)、单词级嵌入(WLEMB)和字符级嵌入(SLEMB)被级联以获得更好的表示。 图3.3HiTRANS模型概述——自下而上分层跨度生成模型图 为了从嵌套结构句子中提取嵌套实体,设计了一个分层跨度生成模型,该模型由两个阶段组成,以生成NER的候选跨度。具体地,这两个阶段分别以自下而上和自上而下的方式生成候选跨度。在该模型的每一层中,首先利用卷积神经网络(CNN)聚合下一层的两个相邻跨度,生成所有可能的平面实体作为进一步预测的候选。然后利用多头注意力层来增强每个候选的表示学习。自下而上分层跨度生成模型网络的核心思想是通过从底层到顶层递归堆叠卷积神经网络来生成候选跨度的特征向量。 图3.4HiTRANS模型概述——自上而下分层跨度生成模型图 在相反的方向上,由于高层的长实体与低层的短实体在相同的上下文中密切相关,因此高级特征可以通过提供与低级特征互补的附加背景信息来有助于识别低层中的实体。因此,自上而下分层跨度生成模型网络旨在以自上而下的方式将高层信息传播到较低层。P表示采用CNN时的填充。 总体而言,基于超图的方法获得的不错的结果取决于表达性标注模式,然而,模糊性和高时间复杂性几乎不是不可避免的。基于跨度的方法提高了NER的性能; 然而,它们可能会打破上下文的连续结构。为了缓解这个问题,基于层次的模型通过分层结构进一步提高了最终的性能,但是,跨度表示过于简化。此外,与预训练语言模型(Pretrained Language Models,PLMs)结合的方法,例如,BERT和ALBERT,通常优于以前的方法,其中利用捕获句子级特征的方法分析上下文结构。 以 “中国少数民族古籍总目提要”数据集中回族卷中的识别为例,原文如下: “重修大殿棬棚水房水池碑记石碑1通。民国3年(1914)买兰馥撰文撰,刘凤舞刻。清真寺重修大殿碑。记述重修大殿棬棚、水房、水池事,落成立碑留念,刻捐资者姓名。碑在今河南省郏县北大街清真寺,总碑面155cm×60cm,一面有字。刻面120cm×45cm,竖刻汉文21行。碑额100cm×30cm,刻阿拉伯文1行。石材。保存完好。(杨俊杰)”对于这段话可以提取出一些标签信息,如古籍名称、时间和地名等。这段节选的段落的标签抽取结果如表3.1所示。 表3.1HiTRANS模型的标签抽取结果 开始 结束 文本 标签 1 12 重修大殿棬棚水房水池碑记 古籍名称 13 14 石碑 类别 15 16 1通 数量 18 27 民国3年(1914) 时间 28 30 买兰馥 编著者 82 92 河南省郏县北大街清真寺 地名 94 106 总碑面155cm×60cm 大小 113 124 刻面120cm×45cm 大小 130 132 21行 大小 134 145 碑额100cm×30cm 大小 170 173 杨俊杰 编著者 3.4基于BERTCRF的NER 3.4.1引言 随着NLP领域的不断发展,利用神经网络进行语言表示的最新进展使得将训练模型的学习内部状态转移到下游任务成为可能,例如NER和问题回答。研究表明,利用预训练的语言模型可以提高许多任务的整体性能,并且在标记数据稀缺时非常有益。本节探索了基于特征和微调的BERT模型训练策略,微调方法在“中国少数民族古籍总目提要”数据集上获得了新的最先进的结果,在选择性场景(5个NE类)上将F1评分提高了1分,在总场景(10个NE类)上将F1评分提高了4分。这些结果表明,BERTCRF模型具有很高的性能和迁移能力,可以在NER等NLP任务中取得优异的表现。 3.4.2问题引入 NER的任务是识别提到命名实体的文本范围,并将它们分类到预定义的类别中,例如人员、组织、位置或任何其他感兴趣的类别。尽管概念上很简单,但NER并不是一项容易的任务。命名实体的类别高度依赖于文本语义及其周围的上下文。此外,命名实体和评估标准的定义很多,导致了评估复杂性。目前最先进的NER系统采用的神经架构已经在语言建模任务上进行了预训练。这类模型的例子有ELMo、OpenAI GPT、BERT、XLNet、RoBERTa、Albert和T5。研究表明,语言建模预训练显著提高了许多NLP任务的性能,也减少了监督学习所需的标记数据量。将这些最新技术应用于中文中非常有价值,因为带标记的资源很少,而未标记的文本数据非常丰富。研究人员采用了BERT(基于变换器的双向编码表示)模型对中文的NER任务进行了评估,并比较了基于特征和基于微调的训练策略。这是第一次将BERT模型应用于中文的NER任务。 3.4.3相关工作 NER系统可以基于手工规则也可以基于机器学习方法。对于中文来说,目前的研究探索了机器学习技术,研究了神经网络模型在中文NER中的应用。Vieira使用从中心词和周围词中提取的15个特征创建了一个CRF模型。Pirovani等将CRF模型与Local Grammars结合起来,采用了类似的方法。从Collobert的工作开始,神经网络NER系统已经变得流行,因为最小的特征工程要求,这有助于更高的领域独立性。CharWNN模型通过使用卷积层从每个单词中提取字符级特征,扩展了Collobert的工作。这些特征与预训练的词嵌入相连接,然后用于执行顺序分类。LSTMCRF架构已被广泛用于NER任务。该模型由两个双向LSTM组成,用于提取和组合字符级和词级特征,然后由CRF层执行顺序分类。 最近的工作探索了与LSTMCRF体系结构一起从语言模型中提取的上下文嵌入。Santos等使用Flair Embeddings从中文语料库上训练的双向字符级LM中提取上下文词嵌入。这些嵌入与预训练的词嵌入相连接,并馈送到BiLSTMCRF模型。Castro使用ELMo嵌入,该嵌入是CNN提取的字符级特征与由BiLSTM模型组成的双向LM (biLM)每层隐藏状态的组合。 3.4.4模型结构 模型体系结构主要由BERT、CRF组成,BERT模型顶部有一个令牌级分类器,然后是一个线性链CRF。对于n个标记的输入序列,BERT输出一个隐藏维度为h的编码标记序列。模型将每个标记的编码表示投影到标签空间,即RH →RK,其中K是标签的数量,取决于类的数量和标记方案。然后将分类模型的输出分数P∈Rn×K馈送到CRF层,其参数为标签转换矩阵a∈RK+2×K+2。在矩阵A中,Ai,j表示从标签i到标签j的转移得分。A包含了两个附加状态: 序列的开始和结束。如Lample所述,对于输入序列X=(x1,x2,…,xn)和标签预测序列y=(y1,y2,…,yn),yi∈{1,2,…,K},则序列的分数定义为 sX,y=∑ni=0Ayi,yi+1+∑ni=1Pi,yi(3.1) 式(3.1)中,y0和yn+1是开始和结束标记。对模型进行训练,使正确标签序列的对数概率最大化为 logpy|X=sX,y-log∑y~∈YXes(X,y-)(3.2) 其中,Y,X是所有可能的标签序列。式(3.2)中的求和是用动态规划计算的。在求值过程中,通过维特比解码得到最可能的序列。继Devlin之后,本节仅计算每个令牌的第一个子令牌的预测和损失。 本节实验了两种迁移学习方法: 基于特征和微调。对于基于特征的方法,BERT模型权值保持不变,只训练分类器模型和CRF层。分类器模型由一个1层的BiLSTM和一个线性层组成。没有只使用BERT的最后一个隐藏表示层,而是根据Devlin对最后4层求和。得到的架构类似于Lample的LSTMCRF模型,但使用了BERT嵌入。对于微调方法,分类器是一个线性层,所有权重,包括BERT的权重,在训练期间共同更新。对于这两种方法,没有CRF层的模型也被评估。在这种情况下,它们通过最小化交叉熵损失来优化。 为了在计算BERT的令牌表示时利用较长的上下文,本节使用文档上下文而不是句子上下文作为输入示例。遵循Devlin对SQuAD数据集的方法,使用D个令牌的跨步将超过S个令牌的示例分解为最长为S的跨度。在训练过程中,每个跨度被用作一个单独的例子。然而,在求值期间,单个标记Ti可以出现在N=SD的多个跨度sj中,因此可能有多达N个不同的标签预测yi,j。每个标记的最终预测是从标记更接近中心位置的范围中获取的,即它具有最多上下文信息的范围。图3.5说明了评估过程。 图3.5BERT模型评估过程(见彩插) 3.4.5实验结果 本节实验中,最大句子长度设置为S=512个令牌。本节只训练大小写敏感的模型,因为大写与NER相关。使用sentencepece和BPE算法生成了一个包含3万个子词单位的中文词汇表和20万个随机中文维基百科文章,然后将其转换为WordPiece格式。对于预训练数据,本节使用了brWaC语料库,其中包含来自353万个文档的26.8亿个令牌,是迄今为止最大的开放中文语料库。brWaC是由完整的文档组成的,它的方法保证了高度的领域多样性和内容质量,这是BERT预训练所需要的特征。本节只使用了文档主体,并对数据应用单个后处理步骤,使用ftfy库删除mojibakes3和残余的HTML标签。最终处理的语料库有17.5GB的原始文本。预训练输入序列使用默认参数生成,并使用整个工作屏蔽(如果由多个子词单元组成的单词被屏蔽,则其所有子词单元都被屏蔽,并且必须在屏蔽语言建模任务中进行预测)。这些模型被训练了100万步。本书使用的学习率是0.0001,在前1万步之后,学习率呈线性衰减。 对于BERT Base模型,使用多语言BERT Base的检查点初始化权重。在整个训练过程中,本节使用了128个批处理大小和512个令牌序列。在TPUv38实例上,该训练需要4天,并在训练数据上执行大约8次迭代。对于BERT Large,用英语BERT Large的检查点初始化权值。由于它是一个更大的模型,训练时间更长,本节在前90万步中使用128个令牌的序列,批处理大小为256,然后在最后10万步中使用512个令牌的序列,批处理大小为128。在TPUv38实例上,该训练需要7天,并在训练数据上执行大约6次epoch。用于训练和评估中文NER的流行数据集是“中国少数民族古籍总目提要”。表3.2包含了数据集一些统计信息。 表3.2识别示例(节选自“中国少数民族古籍总目提要”数据集) 数据集 文档数 符号 实体 中国少数民族古籍总目提要 45 96593 4635/5436 考虑到文本中的模糊性和不确定性,如句子中的歧义,研究人员对“中国少数民族古籍总目提要”数据集进行了注释。这样,一些文本段包含标记,这些标记包含多个可选的命名实体标识解决方案。此外,可以将多个类别分配给单个命名实体。为了将NER建模为序列标记问题,须为每个未确定的段或实体选择一个单一的真理。要解析数据集中的每个标记,本节的方法是选择包含最多命名实体的替代方案。在命名实体存在同样多的情况下,选择第一个。要解析每个分配了多个类的命名实体,只需为场景选择第一个有效的类。数据集预处理脚本在GitHub4上提供。 比较了模型在两种情况下(完全和选择性)的性能。所有指标都是使用CoNLL 2003评估脚本计算的,该脚本由实体级微F1评分组成,只考虑精确匹配。本节讨论的BERTCRF模型优于之前的模型(BiLSTMCRF+FlairBBP),在选择性场景中将F1评分提高了约1分,在总场景中将F1评分提高了4分。有趣的是,Flair嵌入在英语NER上优于BERT模型。与没有上下文嵌入的LSTMCRF架构相比,本节的模型在总场景和选择场景的F1评分上分别高出8.3分和7.0分。中文BERT(PTBERTBASE和PTBERTLARGE)也优于以前的结果,即使没有强制执行CRF层提供的顺序分类。在比较总体F1评分时,具有CRF的模型与其更简单的变体改进或执行相似。在大多数情况下,它们显示出更高的精确率、更低的召回率。 虽然中文BERT large模型在这两种情况下都是表现很好的,但当在基于特征的方法中使用时,它们的性能会下降,比它们的较小变体表现得更差,但仍然比多语言BERT好。此外,可以看出,与BERT base模型相比,BERT large模型并没有给选择场景带来太大的改善。假设这是由于NER数据集的规模较小。与微调方法相比,基于特征的方法的模型表现明显较差。研究发现,表现远高于英语语言的NER报告值。对于IOB2方案,滤除无效过渡的后处理步骤平均使基于特征的方法和微调方法的F1评分分别提高1.9分和1.2分。这一步骤使召回率降低了0.4%,但平均而言,精确率提高了3.5%。 例如在蒙古族卷文书中的一段: “鄂尔多斯右翼中旗札萨克贝勒索诺木喇布斋根敦札文 1件。2页。清嘉庆四年(1799)索诺木喇布斋根敦撰。蒙古文。记登记鄂尔多斯后翼中旗(今鄂托克旗)所有寺庙造册事宜。鄂尔多斯右翼中旗札萨克贝勒索诺木喇布斋根敦致伊克昭盟鄂尔多斯右翼后旗(今杭锦旗)札萨克贝子喇什达尔济札文。文中记载申请鄂尔多斯右翼中旗直辖光缘寺及所有已命名的寺庙进行重新登记造册之事。对研究蒙古族佛教文化有史料价值。全宗名《清朝杭锦旗政府》。全宗号57,目录号1,卷号113,件号1,第7~8页。麻纸,毛笔楷体,墨书,页面24.1cm×12.2cm+6折。钤有鄂尔多斯右翼中旗大红印。残缺。今藏鄂尔多斯市档案馆(巴音登录韩长寿、朝伦巴特尔、巴音译)。”对于这段话可以提取出一些标签信息,如古籍名称、时间和收藏单位等。标签抽取结果如表3.3所示。 表3.3BERT模型的标签抽取结果 开始 结束 文本 标签 1 23 鄂尔多斯右翼中旗札萨克贝勒索诺木喇布斋根敦札文 古籍名称 31 46 清嘉庆四年(1799) 时间 263 288 鄂尔多斯市档案馆 收藏单位 本节通过在大量未标记文本的语料库上预训练中文BERT模型,并对中文NER任务上的BERTCRF模型进行微调,在“中国少数民族古籍总目提要”语料库上讨论分析了一种新的技术。尽管它是在更少的数据上进行预训练,但实验结果表明,BERTCRF模型优于之前模型(BiLSTMCRF+FlairBBP)的效果。 3.5基于迁移学习的细粒度BERT的NER 3.5.1引言 在如今的数字化时代,对于古籍文本的处理和研究具有重要的学术和文化价值。然而,由于古籍文本的特殊性和复杂性,传统的文本识别方法往往难以达到理想的效果。近年来,基于深度学习的技术在NLP领域取得了巨大的进展,为古籍文本识别带来了新的希望。特别是基于Transformer架构的BERT模型的出现,在处理自然语言数据方面取得了突破性的成果。然而,面对古籍文本的特殊挑战,传统的BERT模型仍然存在一些局限性。为了解决这一问题,迁移学习成为古籍文本识别中的一种有效方法。迁移学习通过利用其他领域的知识和数据来提升目标领域任务的性能。在古籍文本识别中,迁移学习的思想被成功地应用于提高模型的识别准确度和泛化能力。通过预训练一个大规模的BERT模型,在其他相关领域的大量文本数据上学习丰富的语言知识,然后通过微调的方式,在古籍文本识别任务上进行训练,可以有效地利用跨领域的知识,提高模型对于古籍文本的识别能力。 3.5.2问题引入 在中文NER方面,Yin提出了一种基于部首级特征和自注意机制的BiLSTMCRF来解决中文临床NER问题。He针对中文社交媒体中的NER问题提出了一个统一的特征模型,该模型可以从外国语料库和该领域的未注释文本中学习。Yin提出了一种考虑模糊实体边界的标注策略,结合领域专家知识,构建了基于微博数据的MilitaryCorpus。在双向编码器词向量表达层和在BERT的指导下,利用该模型获得词级字符。在BiLSTM的指导下,该层提取上下文特征,形成特征矩阵,最后用CRF生成最优标签序列。 Shen将深度学习与主动学习相结合,以减少标记的训练数据的数量。引入了一种轻量级的NER方法,即CNNCNNLSTM模型,以加快操作。该模型由一个CNN字符编码器、一个CNN单词编码器和一个LSTM标签解码器组成。LukaGligic引导神经网络(NN)模型通过迁移学习对未注释的电子健康记录(EHR)上执行的次要任务进行词嵌入预训练,并将输出嵌入作为一系列NN架构的基础。Van CuongTran组装了一种方法,使用主动学习(AL)和自我学习,通过使用机器标记和手动标记的数据来减少推文流中NER任务的工作负荷。CRF也被选为高度可靠案例的算法。Kung建立了一个基于普通话NER模块的迁移学习系统,在灾害管理中对损失信息进行收集和分析。针对文物区缺乏标签数据的情况,张晓明提出了一个模型——文物NER的半监督模型,这个模型利用没有标签数据训练的BiLSTM和CRF模型,获得了有效的识别性能。 特定领域NER的主要困难在于缺乏规范的标注语料,然而,深度网络模型的训练通常需要一个大的注释语料库来训练。因此,深度网络模型直接应用于某一特定领域的作用往往不大。本节通过结合主动学习和迁移学习,提出了一种考虑主动学习的模型迁移方法,对NER的研究基于“中国少数民族古籍总目提要”数据集,在古籍研究领域中应用NER技术是很有必要的,古籍文本往往具有复杂的语言形式和特定的文化背景,而其中蕴含的丰富实体信息对于深入理解历史、文化和社会等方面信息具有重要意义,应用NER技术可以有效地自动化实体识别的过程,通过识别和标注古籍文本中的命名实体,包括人名、地名、机构名、日期等,从而提供更高效、准确的文本分析和信息抽取。研究者可以更加方便地进行进一步的文本分析、信息检索和知识发现。通过预训练和微调BERT模型,利用现代文本数据的丰富语言表示,该方法能够提高古籍文本的NER准确度和稳健性,为古籍文献的数字化处理和研究提供了有力的工具和技术支持。 3.5.3实验过程 在本节提出的模型的训练过程中,采用了主动学习和自我学习相结合的方法,并选择CRF层的条件概率作为CRF层预测的置信度(nx)。在迭代过程中,置信度高于阈值的样本直接作为训练样本加入; 置信度低于阈值的样本则交给人工标注。这将解决领域语料库数据的问题,并提高模型的普适性。考虑激活学习方法的ALBERTAttBiLSTMCRF模型迁移如图3.6所示。 算法考虑激活学习的模型迁移(L、U、M、Conf) 输入: L: 有标记的训练数据集; U: 未标记的训练数据集; M: 拟议模式; Conf: 置信水平。 输出: 训练好的模型M′。 1: //模型转移 2: 使用训练集L进行训练,得到模型M 3: 使用模型M预测未标记的数据集U 4: 计算模型CRF层的条件概率的得分(Y|X)作为置信水平Conf 5: //主动学习 6: 对每个样本的每个置信度执行操作 7: 选择所有Conf≥Confhigh的样本Uhigh,将其加入L(L=L+Uhigh),并从U(U=U-Uhigh)中删除Uhigh 8: 选择所有Conf