当前位置: 首页 > news >正文

FlauBERT:面向法语的无监督语言模型预训练

摘要

语言模型已成为在许多不同自然语言处理(NLP)任务中取得最先进成果的关键步骤。利用当今可用的大量未标注文本,它们提供了一种有效的方式来预训练连续词表示,这些表示可以在下游任务中进行微调,并在句子级别上进行语境化。这一点在英语中已通过语境化表示得到广泛证明(Dai和Le,2015;Peters等,2018;Howard和Ruder,2018;Radford等,2018;Devlin等,2019;Yang等,2019b)。在本文中,我们介绍并分享了FlauBERT,这是一个在非常大且异构的法语语料库上学习的模型。不同大小的模型使用法国国家科学研究中心(CNRS)的Jean Zay超级计算机进行训练。我们将我们的法语语言模型应用于各种NLP任务(文本分类、释义、自然语言推理、句法分析、词义消歧),并表明在大多数情况下,它们的表现优于其他预训练方法。FlauBERT的不同版本以及用于下游任务的统一评估协议,称为FLUE(法语语言理解评估),已与研究社区共享,以便在法语NLP中进行进一步的可重复实验。
关键词:FlauBERT,FLUE,BERT,Transformer,法语,语言模型,预训练,NLP基准,文本分类,句法分析,词义消歧,自然语言推理,释义。

1. 引言

自然语言处理(NLP)领域最近的一项颠覆性贡献是引入了仅使用纯文本语料库进行预训练的深度无监督语言表示。之前的词嵌入预训练方法,如word2vec(Mikolov等,2013)或GloVe(Pennington等,2014),为每个词形学习一个单一的向量。相比之下,这些新模型被训练以生成上下文嵌入:输出表示取决于整个输入序列(例如,每个词例的向量表示取决于其左右上下文)。最初基于循环神经网络(Dai和Le,2015;Ramachandran等,2017;Howard和Ruder,2018;Peters等,2018),这些模型迅速转向使用Transformer(Vaswani等,2017),如GPT(Radford等,2018)、BERT(Devlin等,2019)、XLNet(Yang等,2019b)、RoBERTa(Liu等,2019)。以迁移学习的方式使用这些预训练模型已显示出在广泛的NLP任务中产生显著改进。由于公开可用的预训练权重,人们可以轻松构建最先进的NLP系统,节省时间、能源和资源。因此,无监督语言模型预训练已成为NLP中的事实标准。然而,这主要是在英语中得到证明,尽管也有多语言或跨语言变体可用,单个模型中考虑了超过一百种语言:mBERT(Devlin等,2019)、XLM(Lample和Conneau,2019)、XLM-R(Conneau等,2019)。
在本文中,我们描述了构建FlauBERT的方法——通过来自Transformer的双向编码器表示进行法语语言理解,这是一个在类似配置下在多个下游NLP任务中优于多语言/跨语言模型的法语BERT1模型。FlauBERT依赖于自由可用的数据集,并以不同版本公开提供。2为了进一步的可重复实验,我们还提供了完整的处理和训练管道以及用于评估法语NLP系统的通用基准。此评估设置类似于流行的GLUE基准(Wang等,2018),并命名为FLUE(法语语言理解评估)。

2. 相关工作

2.1 预训练语言模型

在未标注文本数据上进行自监督预训练最初是在神经语言建模任务中提出的(Bengio等,2003;Collobert和Weston,2008),研究表明,训练神经网络通过前面的词预测下一个词可以学习到有用的嵌入表示,称为词嵌入(每个词由一个固定向量表示)。这些表示在NLP中发挥了重要作用,在多个任务上取得了最先进的性能(Collobert等,2011),尤其是在word2vec(Mikolov等,2013)和GloVe(Pennington等,2014)这两种高效且有效的词嵌入学习算法引入之后。

词嵌入的一个主要局限性是,即使一个词可能有多种含义(例如,取决于上下文),它也只能有一个单一的表示。因此,最近的研究引入了从上下文无关的词嵌入到上下文嵌入的范式转变:输出表示是整个输入序列的函数,这使得能够编码单词或句子的复杂、高级的句法和语义特征。这一研究方向由Dai和Le(2015)开创,他们提出了通过编码器-解码器语言模型或序列自编码器预训练表示的方法。Ramachandran等(2017)表明,这种方法可以应用于预训练序列到序列模型(Sutskever等,2014)。然而,这些模型需要大量的领域内数据来完成预训练任务。Peters等(2018,ELMo)和Howard与Ruder(2018,ULMFiT)首次证明,在预训练中利用大规模通用领域文本语料库可以显著提升下游任务的性能。这两种方法都采用了LSTM(Hochreiter和Schmidhuber,1997)语言模型,但ULMFiT使用了常规的多层架构,而ELMo采用双向LSTM通过从左到右和从右到左表示的连接为每个输入词例构建最终嵌入。另一个根本区别在于每种模型如何针对不同下游任务进行调整:ELMo提供可以插值的不同词向量,而ULMFiT支持对整个网络进行针对下游任务的鲁棒微调。微调的能力被证明可以显著提升性能,因此这种方法在最近的工作中得到了进一步发展,例如MultiFiT(Eisenschlos等,2019)或最显著的基于Transformer(Vaswani等,2017)的架构:GPT(Radford等,2018)、BERT(Devlin等,2019)、XLNet(Yang等,2019b)、XLM(Lample和Conneau,2019)、RoBERTa(Liu等,2019)、ALBERT(Lan等,2019)、T5(Raffel等,2019)。这些方法在各种NLP基准测试中相继确立了新的最先进结果,例如GLUE(Wang等,2018)或SQuAD(Rajpurkar等,2018),大幅超越了之前的方法。

2.2 英语以外的预训练语言模型

鉴于预训练语言模型对英语NLP下游任务的影响,最近有几项工作发布了针对其他语言的预训练模型。例如,ELMo已有葡萄牙语、日语、德语和巴斯克语版本,而BERT及其变体则专门针对简体中文、繁体中文和德语进行了训练。葡萄牙语版本的MultiFiT也已发布。最近,更多基于BERT的单语言模型被发布,例如阿拉伯语(Antoun等,2020)、荷兰语(de Vries等,2019;Delobelle等,2020)、芬兰语(Virtanen等,2019)、意大利语(Polignano等,2019)、葡萄牙语(Souza等,2019)、俄语(Kuratov和Arkhipov,2019)、西班牙语(Cañete等,2020)和越南语(Nguyen和Nguyen,2020)。对于法语,除了使用ULMFiT和MultiFiT配置的预训练语言模型外,CamemBERT(Martin等,2019)是与我们工作并行的法语BERT模型。

另一种趋势是考虑为多种语言使用共享词汇表的一个模型。针对104种语言的多语言BERT的发布开创了这种方法。最近的一项扩展工作利用平行数据构建了跨语言预训练版本的LASER(Artetxe和Schwenk,2019),支持93种语言,以及XLM(Lample和Conneau,2019)和XLM-R(Conneau等,2019),支持100种语言。

2.3 法语NLP任务的评估协议

像GLUE(Wang等,2018)这样的多任务评估基准的存在对于促进目标语言的研究非常有益。GLUE基准已成为评估英语NLP模型性能的重要框架。基于预训练语言模型的最新贡献在广泛的自然语言理解(NLU)任务中取得了显著性能。因此,GLUE的作者推出了SuperGLUE(Wang等,2019a):一个基于GLUE原则的新基准,包含更具挑战性和多样性的任务集。GLUE的中文版本也已开发,用于评估中文NLP任务中的模型性能。截至目前,我们尚未了解到任何类似的法语基准。

3. 构建FlauBERT

在本节中,我们将描述用于构建FlauBERTBASE和 F l a u B E R T L A R G E FlauBERT_{LARGE} FlauBERTLARGE的训练语料库、文本预处理流程、模型架构以及训练配置。

3.1 训练数据

数据收集 我们的法语文本语料库由来自不同来源的24个子语料库组成,涵盖了多样化的主题和写作风格,从正式且写作规范的文本(例如维基百科和书籍)到从互联网爬取的随机文本(例如Common Crawl)。数据主要从三个来源收集:(1) WMT19共享任务中提供的法语单语数据(Li等,2019,4个子语料库);(2) OPUS集合中提供的法语文本语料库(Tiedemann,2012,8个子语料库);(3) 维基媒体项目中可用的数据集(Meta,2019,8个子语料库)。

我们使用WikiExtractor工具从维基百科中提取文本。对于其他子语料库,我们使用自己的工具提取文本或直接从其网站下载。预处理前的未压缩文本总大小为270 GB。更多细节可在附录A.1中找到。

数据预处理 对于所有子语料库,我们过滤掉了非常短的句子以及重复和无意义的内容,例如电话/传真号码、电子邮件地址等。对于Common Crawl(这是我们最大的子语料库,原始文本大小为215 GB),我们进行了严格的清理,将其大小减少到43.4 GB。所有数据在预处理前都进行了统一的Unicode规范化,并使用Moses分词器(Koehn等,2007)进行分词。最终的训练语料库大小为71 GB。

我们用于下载和预处理数据的代码已公开提供。

3.2 模型与训练配置

模型架构 FlauBERT采用与BERT(Devlin等,2019)相同的模型架构,即多层双向Transformer(Vaswani等,2017)。根据Devlin等(2019)的建议,我们提出了两种模型规模:

  • FlauBERTBASE L = 12 , H = 768 , A = 12 L=12,H=768,A=12 L=12H=768A=12
  • F l a u B E R T L A R G E FlauBERT_{LARGE} FlauBERTLARGE L = 24 , H = 1024 , A = 16 L=24,H=1024,A=16 L=24H=1024A=16

其中, L 、 H 和 A L、H和A LHA分别表示Transformer块的数量、隐藏层大小以及自注意力头的数量。由于Transformer已成为一种标准架构,更多细节可参考Vaswani等(2017)。

训练目标与优化 原始BERT(Devlin等,2019)的预训练包括两个监督任务:(1) 掩码语言模型(MLM),学习预测随机掩码的词;(2) 下一句预测(NSP)任务,模型学习预测给定句子对A、B中,B是否是A的实际下一句。Devlin等(2019)观察到,移除NSP会显著降低某些下游任务的性能。然而,后续研究(包括Yang等,2019b,XLNet;Lample和Conneau,2019,XLM;Liu等,2019,RoBERTa)表明,情况恰恰相反。因此,我们在FlauBERT中仅采用了MLM目标。

为了优化这一目标函数,我们遵循Liu等(2019)的方法,使用Adam优化器(Kingma和Ba,2014),并设置以下参数:

  • FlauBERTBASE:预热步数24k,峰值学习率 6 e − 4 , β 1 = 0.9 , β 2 = 0.98 , ε = 1 e − 6 6e-4,β1=0.9,β2=0.98,ε=1e-6 6e4β1=0.9β2=0.98ε=1e6,权重衰减0.01。
  • F l a u B E R T L A R G E FlauBERT_{LARGE} FlauBERTLARGE:预热步数30k,峰值学习率 3 e − 4 , β 1 = 0.9 , β 2 = 0.98 , ε = 1 e − 6 3e-4,β1=0.9,β2=0.98,ε=1e-6 3e4β1=0.9β2=0.98ε=1e6,权重衰减0.01。

训练 F l a u B E R T L A R G E FlauBERT_{LARGE} FlauBERTLARGE
训练非常深的Transformer模型通常容易遇到不稳定性问题(Wang等,2019b;Nguyen和Salazar,2019;Xu等,2019;Fan等,2019)。不出所料,我们在使用与 B E R T L A R G E BERT_{LARGE} BERTLARGE R o B E R T a L A R G E RoBERTa_{LARGE} RoBERTaLARGE相同的配置训练 F l a u B E R T L A R G E FlauBERT_{LARGE} FlauBERTLARGE时也观察到了这一困难,模型在早期阶段就出现了发散现象。

为了解决这一问题,已经提出了多种方法。例如,在Transformer的更新实现中(Vaswani等,2018),默认在每个注意力层之前应用层归一化(称为pre-norm),而不是像原始实现(Vaswani等,2017)那样在每个残差块之后应用(称为post-norm)。Vaswani等(2018)观察到,pre-norm有助于稳定训练,这一结论在后续研究中得到了进一步验证(例如Wang等,2019b;Xu等,2019;Nguyen和Salazar,2019)。最近,一种称为随机深度(Huang等,2016)的正则化技术被证明对训练深层Transformer非常有效,例如Pham等(2019)和Fan等(2019)成功训练了超过40层的模型。其核心思想是在每个训练步骤中随机丢弃一些(注意力)层。其他技术还包括渐进式训练(Gong等,2019)、改进初始化(Zhang等,2019a;Xu等,2019)和归一化(Nguyen和Salazar,2019)。

在训练 F l a u B E R T L A R G E FlauBERT_{LARGE} FlauBERTLARGE时,我们采用了pre-norm注意力和随机深度技术,因为它们的实现较为简单。我们发现这两种技术足以成功完成训练。在所有实验中,我们将层丢弃率设置为0.2。

其他训练细节
使用字节对编码(BPE)算法(Sennrich等,2016)构建了一个包含50K子词单元的词汇表。与RoBERTa的唯一区别在于,我们在应用BPE之前使用了一个基本的法语分词器(Koehn等,2007,Moses)对训练数据进行预处理和分词,类似于XLM(Lample和Conneau,2019)。我们使用了fastBPE这一高效实现来提取BPE单元并对语料库进行编码。

FlauBERTBASE在32个Nvidia V100 GPU上训练了410小时, F l a u B E R T L A R G E FlauBERT_{LARGE} FlauBERTLARGE在128个GPU上训练了390小时,两者的有效批量大小均为8192个序列。最后,我们在表1中总结了FlauBERT与BERT、RoBERTa、CamemBERT之间的差异。
在这里插入图片描述

4. FLUE

在本节中,我们整理了一组现有的法语任务,构建了一个用于法语NLP的评估基准,称为FLUE(法语语言理解评估)。我们从不同领域、难度、正式程度和训练样本量中选择了数据集。六个任务中有三个(文本分类、释义、自然语言推理)来自跨语言数据集,因为我们的目标还包括提供一个单语言预训练模型的结果,以促进未来对跨语言模型的研究,这一领域最近引起了广泛的研究兴趣。

表2概述了这些数据集,包括它们的领域以及训练/开发/测试集的划分。具体细节将在接下来的小节中介绍。

在这里插入图片描述

4.1 文本分类

CLS 跨语言情感分类(CLS)数据集(Prettenhofer和Stein,2010)包含亚马逊上三类产品(书籍、DVD和音乐)的评论,涵盖四种语言:英语、法语、德语和日语。每个样本包含一条评论文本和1到5星的评分。根据Blitzer等(2006)和Prettenhofer与Stein(2010)的方法,3星评分被移除。评分高于3的为正面评论,低于3的为负面评论。每个产品类别有一个训练集和测试集。训练集和测试集是平衡的,每个数据集包含约1000条正面评论和1000条负面评论,总计2000条评论。我们选取其中的法语部分构建FLUE中的二分类文本分类任务,并报告测试集上的准确率。

4.2 释义识别

PAWS-X 跨语言释义识别对抗数据集(PAWS-X)(Yang等,2019a)是英文释义对抗数据集(PAWS)(Zhang等,2019b)的扩展,涵盖法语、西班牙语、德语、中文、日语和韩语。PAWS从维基百科和Quora中构建了具有高词汇重叠率的英文释义识别对,通过基于语言模型的词汇重组和回译生成,并由人工判断。释义识别任务是判断句子对中的句子是否语义等价。与之前创建多语言语料库的方法类似,Yang等(2019a)使用机器翻译从PAWS的英文训练集生成PAWS-X中每种目标语言的训练集。每种语言的开发和测试集由人工翻译完成。我们选取法语相关数据集进行释义识别任务,并报告测试集上的准确率。

4.3 自然语言推理

XNLI 跨语言自然语言推理(XNLI)语料库(Conneau等,2018)将多体裁自然语言推理语料库(Williams等,2018,MultiNLI)的开发和测试集扩展到15种语言。每种语言的开发和测试集包含7500个人工标注的样本,总计112500个句子对,标注为蕴含、矛盾或中立。每个句子对包含一个前提(p)和一个假设(h)。自然语言推理(NLI)任务,也称为文本蕴含识别(RTE),是判断p是否蕴含、矛盾或既不蕴含也不矛盾h。我们选取XNLI语料库中的法语部分构建FLUE中的NLI任务的开发和测试集。训练集来自XNLI中提供的机器翻译版本。根据Conneau等(2018),我们报告测试集上的准确率。

4.4 句法分析和词性标注

句法分析是为自然语言句子分配树结构。我们在法语树库(Abeillé等,2003)上进行句法分析,该树库包含从法国日报《世界报》中提取的句子,并人工标注了成分句法树、依存句法树和词性标签。具体来说,我们使用为SPMRL 2013共享任务实例化的版本(Seddah等,2013)。该版本提供了标准划分,训练集包含14759个句子,开发集和测试集分别包含1235和2541个句子。

4.5 词义消歧任务

词义消歧(WSD)是一种分类任务,旨在根据特定的词义库预测给定上下文中词语的意义。我们使用了两个法语WSD任务:法语SemEval任务(Segonne等,2019),仅针对动词;以及SemEval 2013多语言WSD任务的法语部分(Navigli等,2013)的修改版本,仅针对名词。

动词词义消歧 我们使用法语SemEval(Segonne等,2019,FSE)进行法语动词的词义消歧实验。FSE是一个评估数据集,其中动词实例通过Wiktionary(一个协作编辑的开源词典)的词义库进行人工标注。FSE包含评估数据和词义库。评估数据包含66个动词的3199个人工标注实例,每个动词大约有50个标注实例。FSE提供的词义库是Wiktionary的一个转储(2018年4月20日),通过Dbnary(Sérasset,2012)公开提供。对于目标词的每个意义,词义库提供了定义和一个或多个示例。在此任务中,我们将词义库中的示例视为训练数据,并在评估数据集上测试模型。

名词词义消歧 我们基于SemEval 2013多语言WSD任务的法语部分(Navigli等,2013)提出了一个新的法语名词词义消歧任务。我们将任务调整为使用WordNet 3.0词义库(Miller,1995)而非BabelNet(Navigli和Ponzetto,2010),通过将BabelNet中的词义键映射到WordNet 3.0(如果存在映射),否则移除。

转换过程的结果是一个评估语料库,包含306个句子和1445个标注了WordNet词义键的法语名词,并经过人工验证。对于训练数据,我们遵循Hadj Salah(2018)的方法,使用fairseq工具包(Ott等,2019)中最好的英法机器翻译系统将SemCor(Miller等,1993)和WordNet Gloss Corpus翻译成法语。最后,我们使用机器翻译系统提供的对齐信息,将源英文词的WordNet词义标注对齐到翻译后的法文词。

我们选择WordNet词义键而非原始BabelNet标注的原因有两个:首先,WordNet是完全人工验证的资源,广泛用于WSD研究(Navigli,2009);其次,已有大量基于WordNet词义库的标注数据(Vial等,2018)可用于系统训练。

我们以UFSAC格式(Vial等,2018)公开了训练数据和评估数据。

5. 实验与结果

在本节中,我们展示了FlauBERT在FLUE基准上的微调结果。我们将FlauBERT与多语言BERT(Devlin等,2019,mBERT)和CamemBERT(Martin等,2019)在所有任务上的性能进行了比较。此外,对于每个任务,我们还加入了最佳的非BERT模型作为对比。在某些实验中,我们使用了开源库(Lample和Conneau,2019,XLM)和(Wolf等,2019,Transformers)。

5.1 文本分类

模型描述 我们遵循了BERT(Devlin等,2019)的标准微调流程。输入是一个简化的文本-∅对。分类头由以下层组成,按顺序为:dropout、线性层、tanh激活函数、dropout和线性层。线性层的输出维度分别等于Transformer的隐藏层大小和类别数量(在本任务中为2,因为是二分类任务)。dropout率设置为0.1。

我们训练了30个epoch,批量大小为16,同时对4种不同的学习率进行了网格搜索: 1 e − 5 、 5 e − 5 、 1 e − 6 和 5 e − 6 1e−5、5e−5、1e−6和5e−6 1e55e51e65e6。训练数据的20%随机划分为验证集,选择在验证集上表现最佳的模型用于测试集评估。

在这里插入图片描述

结果 表3展示了每个模型在测试集上的最终准确率。结果突显了单语言法语模型在文本分类中的重要性:CamemBERT和FlauBERT均大幅优于mBERT。FlauBERTBASE在书籍数据集上的表现略优于CamemBERT,而在DVD和音乐数据集上的表现则略低于CamemBERT。FlauBERTLARGE在所有类别中均取得了最佳结果。

5.2 释义识别

模型描述 此任务的设置与前一任务几乎相同,除了以下两点:(1) 输入序列现在是一个句子对A、B;(2) 超参数搜索在开发数据集上进行(即不需要验证集划分)。

结果 表4报告了每个模型的最终准确率。可以观察到,单语言法语模型的表现仅略优于多语言模型mBERT,这可能归因于PAWS-X数据集的特点。该数据集包含高词汇重叠率的样本,已被证明是衡量模型对词序和句法结构敏感性的有效指标(Yang等,2019a)。因此,像mBERT这样的多语言模型可以像单语言模型一样捕捉这些特征。

在这里插入图片描述

5.3 自然语言推理

模型描述 由于此任务在CamemBERT(Martin等,2019)中也被考虑,为了公平比较,我们在此复现了相同的实验设置。与释义识别类似,此任务的模型输入也是一个句子对。然而,分类头仅由一个dropout层和一个线性层组成。

结果 表5报告了每个模型的最终准确率。结果证实了法语模型在此任务上优于多语言模型mBERT。FlauBERTLARGE的表现略优于CamemBERT。两者均明显优于 X L M − R B A S E XLM-R_{BASE} XLMRBASE,但未能超越 X L M − R L A R G E XLM-R_{LARGE} XLMRLARGE
在这里插入图片描述

5.4 成分句法分析与词性标注

模型描述 我们使用了Kitaev和Klein(2018)以及Kitaev等(2019)描述的句法分析器。这是一个基于自注意力编码器的公开可用的图表句法分析器。我们比较了以下模型:(i) 没有任何预训练参数的模型,(ii) 额外使用并微调fastText预训练词嵌入的模型,(iii) 基于预训练语言模型的模型:mBERT、CamemBERT和FlauBERT。对于前两种设置,我们使用Kitaev和Klein(2018)的默认超参数;对于使用预训练语言模型的设置,我们使用Kitaev等(2019)的超参数,但FlauBERTLARGE除外。对于FlauBERTLARGE,由于内存限制,我们使用了不同的学习率(0.00001)、批量大小(8),并忽略长度超过100个标记的训练句子。我们在多任务设置中,基于与句法分析器相同的输入,联合进行词性标注(POS)。对于每种设置,我们使用不同的随机种子训练3次,并根据开发集的F1分数选择最佳模型。

最终评估 我们使用SPMRL共享任务组织者提供的评估工具,并报告标记F1分数(成分句法分析的标准评估指标)以及词性标注的准确率。
在这里插入图片描述

结果 我们在表6中报告了成分句法分析的结果。在没有预训练的情况下,我们复现了Kitaev和Klein(2018)的结果。FastText预训练词嵌入并未对这一已经很强的模型带来改进。当使用预训练语言模型时,我们观察到,CamemBERT通过其语言特定的训练,比mBERT提高了0.9个绝对F1分数。FlauBERTBASE在测试集上比CamemBERT高出0.7个绝对F1分数,并获得了该任务中单一模型的最佳公开结果。关于词性标注,所有大规模预训练语言模型都取得了相似的结果(98.1-98.2),并优于没有预训练或使用fastText词嵌入的模型(97.5-97.7)。FlauBERTLARGE在开发集上提供了微小的改进,但未能在测试集上达到FlauBERTBASE的结果。

为了评估FlauBERT和CamemBERT在此任务中是否具有互补性,我们评估了这两个模型的集成(表6的最后一行)。集成模型在开发集上比FlauBERT提高了0.4个绝对F1分数,在测试集上提高了0.2个绝对F1分数,获得了该任务的最高结果。这一结果表明,两种预训练语言模型具有互补性,各有其优势和劣势。

5.5 依存句法分析

模型 我们重新实现了Dozat和Manning(2016)的句法分析模型,并进行了最大生成树解码的调整,以处理多种输入源(如BERT表示)。该模型不进行词性标注,而是使用SPMRL共享任务组织者提供的预测标签。

我们的词表示是词嵌入和标签嵌入的拼接,这些嵌入与模型参数一起在法语树库数据上学习,并且最多使用一种(fastText、CamemBERT、FlauBERTBASE、FlauBERTLARGE、mBERT)词向量。与Dozat和Manning(2016)一样,我们在词嵌入和标签嵌入上使用词和标签dropout( d = 0.5 d = 0.5 d=0.5),但在BERT表示上不使用dropout。我们对每个测试的模型进行了相当全面的超参数网格搜索。

在这里插入图片描述

结果 结果在表7中报告。该共享任务中已发布的最佳结果(Constant等,2013)涉及使用额外资源建模多词表达式(MWE)的句法分析器集成,这是法语树库注释的典型特征。单语言法语BERT模型(CamemBERT、FlauBERT)表现更好,并在该数据集上设定了新的最先进水平,仅使用单一分析器且无需对MWE进行特定建模。可以观察到,FlauBERT模型的表现略优于CamemBERT,而它们都大幅优于mBERT。

5.6 词义消歧

动词词义消歧 消歧使用了与Segonne等(2019)相同的WSD监督方法。首先,我们从Wiktionary词义库中的示例计算词义向量表示:给定一个词义s及其对应的示例,我们通过平均其示例的向量表示来计算s的向量表示。然后,我们根据余弦相似度为每个测试实例标注最接近的词义。我们使用FlauBERT输出的上下文嵌入作为目标词任何实例(来自词义库或测试数据)的向量表示。我们以相同的方式使用mBERT和CamemBERT进行比较。我们还与一种更简单的上下文向量表示方法(称为平均词嵌入,AWE)进行了比较,该方法通过在给定窗口大小内平均目标词的周围词来表示上下文。我们使用fastText词嵌入和窗口大小为5进行了AWE实验。结果在表8中报告。基于BERT的模型在该任务上设定了新的最先进水平,其中CamemBERT和FlauBERTLARGE取得了最佳结果。

名词词义消歧 我们实现了一个类似于Vial等(2019)提出的神经分类器。该分类器将预训练语言模型的输出传递到6层训练的Transformer编码器层,并通过softmax预测每个输入词的词义集。我们的模型与Vial等(2019)的唯一区别在于,我们选择了与FlauBERTBASE相同的超参数用于Transformer层的dff和注意力头数(更具体地说, d f f = 3072 , A = 12 d_{ff} = 3072,A = 12 dff=3072A=12)。
在这里插入图片描述
在这里插入图片描述

在预测时,我们选择在softmax层中具有最大值的词义集ID(不对目标词的原形进行过滤)。我们为每个实验训练了8个模型,并报告了平均结果、各个模型的标准差以及模型集成的结果,后者对softmax层的输出进行平均。最后,我们将FlauBERT与CamemBERT、mBERT、fastText以及无输入嵌入进行了比较。结果在表9中报告。在此任务和这些设置下,我们首先观察到mBERT优于CamemBERT和FlauBERTBASE。我们认为这可能是由于我们使用的训练语料是从英语机器翻译到法语的,因此mBERT的多语言特性使其更适合此任务。比较CamemBERT和FlauBERTBASE,我们发现前者的表现略有提升,我们认为这可能是由于预训练语料库大小的差异。最后,使用我们的FlauBERTLARGE模型,我们在此任务上取得了最佳分数,比mBERT高出1分以上。

6. 结论

我们介绍并发布了FlauBERT,一个针对法语的预训练语言模型。FlauBERT在多个来源的语料库上进行了训练,并在多项法语NLP任务中取得了最先进的结果,超越了多语言/跨语言模型。尽管FlauBERT的训练文本数据量几乎是CamemBERT(Martin等,2019)的一半,但它与CamemBERT(另一种针对法语的预训练语言模型)具有竞争力。为了使整个流程完全可复现,我们不仅发布了预处理和训练脚本以及FlauBERT,还提供了一个用于评估法语NLP系统的通用基准(FLUE)。FlauBERT现在也得到了Hugging Face的transformers库的支持。

A 附录

A.1 法语文本语料库的详细信息

表10展示了我们训练语料库中所有子语料库的统计信息。以下是对每个子语料库的描述。

来自WMT19共享任务的数据集 我们使用了WMT19共享任务(Li等,2019)中提供的四个语料库。

  • Common Crawl 包含从互联网数十亿页面中爬取的文本。
  • News Crawl 包含从2007年至2018年收集的新闻爬取数据。
  • EuroParl 包含从欧洲议会议程中提取的文本。
  • News Commentary 包含来自新闻评论爬取的文本。

来自OPUS的数据集 OPUS是一个不断增长的免费单语和平行语料库资源(Tiedemann,2012)。我们从OPUS中收集了以下法语单语数据集。

  • OpenSubtitles 包含翻译的电影和电视字幕。
  • EU Bookshop 包含来自欧洲机构的出版物。
  • MultiUN 包含来自联合国的文档。
  • GIGA 包含新闻通讯文本,并在WMT10共享任务中提供。
  • DGT 包含由联合研究中心提供的翻译记忆库。
  • Global Voices 包含来自Global Voices网站的新闻报道。
  • TED Talks 包含TED演讲视频的字幕。
  • Euconst 包含来自欧洲宪法的文本。

维基媒体数据库 包括维基百科、维基词典、维基学院等。内容由全球志愿者协作构建。

  • 维基百科 是一个免费的在线百科全书,包含涵盖广泛主题的高质量文本。
  • 维基文库 包含公共领域的源文本。
  • 维基新闻 包含免费内容的新闻。
  • 维基词典 是一个开放源码的词典,包含单词、短语等。
  • 维基学院 包含学习资源和学习项目或研究。
  • 维基教科书 包含开放内容的书籍。
  • 维基语录 包含来自名人和创意作品的引用。
  • 维基导游 包含旅行相关信息。

古腾堡计划 这个流行的数据集包含不同体裁的免费电子书,主要是世界上较老的经典文学作品,版权已过期。

EnronSent 该数据集由(Styler,2011)提供,是Enron电子邮件数据集的一部分,包含来自Enron公司高级管理层的50万条消息。

PCT 该子语料库包含由GETALP团队内部收集和维护的专利文档。

Le Monde 这也是由GETALP团队内部收集和维护的,包含从1987年至2003年收集的《世界报》文章。
在这里插入图片描述

相关文章:

FlauBERT:面向法语的无监督语言模型预训练

摘要 语言模型已成为在许多不同自然语言处理(NLP)任务中取得最先进成果的关键步骤。利用当今可用的大量未标注文本,它们提供了一种有效的方式来预训练连续词表示,这些表示可以在下游任务中进行微调,并在句子级别上进行…...

JavaScript严格模式

文章主要介绍JavaScript严格模式,包括启用原因、方式以及需避开的常见陷阱,助力开发者写出更健壮代码。 1. 启用原因:将普通JavaScript中的“静默错误”变为抛出错误,有助于编写健壮代码;修复阻碍JavaScript引擎优化的…...

文件上传的小点总结(1)

2.文件类型绕过 问题插入:BP无法拦截本地流量 ①插件限制 不代理的地址列表通常写有localhost和127.0.0.1,把本地的全都删掉,然后应用保存。 ②浏览器限制 Firefox浏览器设置:检查浏览器代理配置和proxy listeners都没问题后&…...

2024年数维杯数学建模B题生物质和煤共热解问题的研究解题全过程论文及程序

2024年数维杯数学建模 B题 生物质和煤共热解问题的研究 原题再现: 随着全球能源需求的不断增长和对可再生能源的追求,生物质和煤共热解作为一种潜在的能源转化技术备受关注。生物质是指可再生能源,源自植物和动物的有机物质,而煤…...

@maptalks/gl-layers中的VectorTileLayer的Symbol样式文档

maptalks/gl-layers中的VectorTileLayer的Symbol样式文档 矢量的Symbol样式分为以下几个大类: marker样式属性,定义了图标相关样式属性 text样式属性,定义了文字相关样式属性 line样式属性,定义了线相关的样式属性 polygon样式属…...

OpenCV旋转估计(3)帮助构建一个最大生成树(Maximum Spanning Tree)函数findMaxSpanningTree()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::detail::findMaxSpanningTree 是 OpenCV 中用于图像拼接工作流的一个函数,它帮助构建一个最大生成树(Maximum Spanni…...

OpenCV HighGUI 模块使用指南(Python 版)

用户让我编写一个 HighGUI 模块的使用指南,包括函数的使用和应用场景的实现。首先,我需要回顾 HighGUI 模块的主要功能:图像显示、视频捕获、鼠标和键盘事件。然后,按照用户提供的结构,整理每个部分的函数详解、代码示…...

SPI 机制与 Spring Boot AutoConfiguration 对比解析

一、架构效率革命性提升 1.1 类加载效率跃升 Spring Boot 2.7引入的AutoConfiguration.imports采用清单式配置加载,对比传统SPI机制: 传统SPI扫描路径:META-INF/services/** Spring Boot新方案:META-INF/spring/org.springfram…...

算法基础篇(1)(蓝桥杯常考点)

算法基础篇 前言 算法内容还有搜索,数据结构(进阶),动态规划和图论 数学那个的话大家也知道比较难,放在最后讲 这期包含的内容可以看目录 模拟那个算法的话就是题说什么写什么,就不再分入目录中了 注意事…...

【蓝桥杯速成】| 10.回溯切割

前面两篇内容我们都是在做有关回溯问题的组合应用 今天的题目主题是:回溯法在切割问题的应用 题目一:分割回文串 问题描述 131. 分割回文串 - 力扣(LeetCode) 给你一个字符串 s,请你将 s 分割成一些 子串&#xff…...

【Spring】深入理解 Spring 事务管理

文章目录 一、事务的基本概念​原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability) 二、Spring 事务管理的优势​简化事务管理代码提供多种事务管理方式整合…...

java学习笔记6

按住shift键,选择开始的一位和最后结束的一位来全选 面向对象特征之二:继承性(inheritance) 面向对象特征之二:继承性1.继承性的理解 > 生活上:财产的继承、颜值的继承 > 代码层面:> 自上而下:定义了一个类A,在定义另一个类B时&…...

人工智能在现代科技中的应用和未来发展趋势

人工智能(Artificial Intelligence,AI)是一种模拟人类智能思维和行为的技术,已经在现代科技中得到广泛应用。以下是人工智能在现代科技中的应用和未来发展趋势: 应用: 机器学习:机器学习是人工…...

第二十一章:模板与继承_《C++ Templates》notes

模板与继承 重点和难点编译与测试说明第一部分:多选题 (10题)第二部分:设计题 (5题)答案与详解多选题答案:设计题参考答案 测试说明 重点和难点 21.1 空基类优化(EBCO) 知识点 空基类优化(Empty Base Cla…...

STC89C52单片机学习——第35节: [16-1] AD/DA

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.03.23 51单片机学习——第35节: [16-1] AD/DA 前言开发板说明引用解答和科普一、AD问题…...

算法-最大公约数

1、约数: 1.1 试除法求约数 原理:只需要遍历最小的约数即可,较大的那个可以直接算出来。 import java.util.*; public class Main {static Scanner sc new Scanner(System.in);public static void main(String[] args) {int t sc.nextIn…...

在 SaaS 应用上构建 BI 能力的实战之路

SaaS 产品在持续运营过程中积累了大量数据,这些数据不仅是数字的记录,更是洞察市场趋势、优化产品功能、提升用户体验的宝贵资源。 因此,大部分的 SaaS 产品在发展到一定阶段后,都会开始构建自己的报表模块或分析模块,…...

代码随想录刷题day51|(二叉树篇)654.最大二叉树

一、二叉树基础知识 详见:代码随想录刷题day34|(二叉树篇)二叉树的递归遍历-CSDN博客 二、递归思路 递归三部曲 构造树一般采用前序遍历,因为先构造中间节点,然后递归构造左子树和右子树; 1.递归函数参数…...

深入理解 C++11 智能指针:独占、共享与弱引用的完美管理

文章目录 std::unique_ptr(独占式智能指针)std::shared_ptr(共享式智能指针)std::weak_ptr(弱引用智能指针)示例展示:智能指针的原理内存泄漏**什么是内存泄漏,内存泄漏的危害****如…...

1.2 编译器结构

编译器具有模块化的高层结构。还可以将模块化进一步细化。编译器可以看成多个阶段构成的流水线结构。 一种没有优化的编译器结构 更复杂的编译器结构...

文件操作助手

文件操作助手 在我们实现一个大型项目时,往往会有一个公共模块,这个公共模块是公用的,里面可能会包含文件操作助手、字符串操作助手、时间戳操作助手… 而我们今天就来实现一个文件操作助手,里面包含的功能有: 判断…...

线段树与扫描线 —— 详解算法思想及其C++实现

目录 一、线段树(Segment Tree) 基本概念 结构 操作 示例代码 二、扫描线(Sweep Line) 基本概念 应用场景 示例代码(矩形面积并集) 三、总结 一、线段树(Segment Tree) 基本…...

Leetcode 刷题笔记1 图论part04

leetcode 110 字符串接龙 def judge(s1, s2):count 0for i in range(len(s1)):if s1[i] ! s2[i]:count 1return count 1if __name__ __main__:n int(input())begin_str, end_str map(str, input().split())if begin_str end_str:print(0)exit()strlist []for _ in ran…...

快速入手:Nacos融合SpringCloud成为注册配置中心

快速入手:Nacos融合SpringCloud成为注册配置中心 前言安装Nacos项目搭建添加配置启动类添加注解运行项目服务调用RestTemplate 模式FeignClient 模式 前言 Spring Cloud是一系列框架的集合,提供了微服务架构下的各种解决方案,如服务治理、配…...

others-rustdesk远程

title: others-rustdesk远程 categories: Others tags: [others, 远程] date: 2025-03-19 10:19:34 comments: false mathjax: true toc: true others-rustdesk远程, 替代 todesk 的解决方案 前篇 官方 服务器 - https://rustdesk.com/docs/zh-cn/self-host/rustdesk-server-o…...

go:前后端分离

1.前端代码 新建一个前端文件夹,在该文件夹下新建一个.html文件,写入自己的html代码。 前端搞定。 2.后端代码 其核心是挂载路由接受前端传来的数据核心代码如下: func main() { // 服务运行提示 fmt.Println("go web server is runn…...

lodash 学习笔记/使用心得

lodash 学习笔记/使用心得 简单记一下 lodash 的一点学习笔记使用心得,最近也是打算清理一下所有的 dead code,然后发现我们用了好多的 lodash 方法。对比了之前的写法,重新看了一下官方文档,再自己重新动手写了点 util 之后发现…...

网络爬虫【爬虫库request】

我叫不三不四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲爬虫 Requests是Python的一个很实用的HTTP客户端库,完全满足如今网络爬虫的需求。与Urllib对比,Requests不仅具备Urllib的全部功能;在开发使用上&…...

AI日报 - 2025年3月24日

🌟 今日概览(60秒速览) ▎🤖 AGI突破 | Lyra生物序列建模架构效率惊人 在100生物任务中达最优,推理速度提升高达12万倍 ▎💼 商业动向 | OpenAI用户破4亿,Meta与Reliance探讨AI合作 生态扩展与全…...

Android平台毫秒级低延迟HTTP-FLV直播播放器技术探究与实现

一、前言 在移动互联网蓬勃发展的今天,视频播放功能已成为众多Android应用的核心特性之一。面对多样化的视频格式和传输协议,开发一款高效、稳定的视频播放器是许多开发者追求的目标。FLV(Flash Video)格式,尽管随着H…...

动态规划——混合背包问题

动态规划——混合背包问题 混合背包问题01背包与完全背包的混合:完全背包与多重背包的混合:三种背包混合混合背包OJ汇总 混合背包问题 将01背包、完全背包、多重背包混合起来的背包问题。也就是说,有的物品只可以取一次(01背包&a…...

数据库操作练习

一.向heros表中新增一列信息,添加一些约束,并尝试查询一些信息 //向表中添加一列age信息 alter table heros add column age int;//id列添加主键约束,设置自增 alter table heros modify column id int auto_increment primary key;//name列…...

3.milvus索引-HNSW

索引作用 加速大型数据集上的查询。 向量字段,仅只能创建一个索引。 milvus支持的向量索引类型大部分使用 近似最近邻搜索算法。ANNS该算法的核心不局限于返回最准确的结果,而是仅搜索目标的邻居。ANNS通过在可接受的范围内牺牲准确性提高检索效率。 …...

算法基础——栈

一、栈的概念 栈是⼀种只允许在⼀端进⾏数据插⼊和删除操作的线性表。 进⾏数据插⼊或删除的⼀端称为栈顶,另⼀端称为栈底。不含元素的栈称为空栈。进栈就是往栈中放⼊元素,出栈就是将元素弹出栈顶。 二、栈的模拟实现 1. 创建 本质还是线性表&#…...

开发语言漫谈-groovy

groovy是一门脚本语言,在前期的脚本语言中简单介绍了下。现在再深入介绍下,因为它是本平台上选用的脚本语言。所谓脚本语言就是不用编译,直接执行。这种特色非常适合做嵌入编程,即编即用。我们知道平台后台的业务开发语言是Java&a…...

ArkUI-List组件

列表是一个复杂的容器,当列表项达到一定数量,使得列表内容超出其范围的时候,就会自动变为可以滚动。列表适合用来展现同类数据类型。 List组件支持使用,条件渲染,循环渲染,懒加载等渲染控制方式生成子组件…...

数据仓库的 DWD 分层架构:构建高效数据平台的基石

在数据驱动的时代,数据仓库(Data Warehouse)作为企业数据分析的核心基础设施,扮演着至关重要的角色。而数据仓库的分层设计,则是确保数据高效流转、提升数据质量、支持复杂分析的关键。本文将深入探讨数据仓库的 DWD 分…...

山东大学数据结构课程设计

题目:全国交通咨询模拟系统 问题描述 处于不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能地短,出门旅游的旅客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编织一个全国城市间的交…...

动态规划-01背包

兜兜转转了半天,发现还是Carl写的好。 看过动态规划-基础的读者,大概都清楚。 动态规划是将大问题,分解成子问题。并将子问题的解储存下来,避免重复计算。 而背包问题,就是动态规划延申出来的一个大类。 而01背包&…...

【2025】基于node.js的中医药科普平台的设计与实现(源码、万字文档、图文修改、调试答疑)

项目完整功能以演示视频为准 基于Node.js的中医药科普平台的设计与实现功能结构图如下 课题背景 随着人们健康意识的提高,中医药作为传统医学的重要组成部分,越来越受到关注。然而,中医药知识专业性强,普通大众获取准确、全面的中…...

基于Flux模型的多模态可控图像生成工作流实践

一、技术框架与模型选型 当前图像生成领域对多模态控制与一致性保持的需求日益增强,本文将基于Black Forest Labs推出的Flux.1模型,结合ControlNet的循环一致性优化技术,构建一套融合Canny边缘检测与深度图(Depth)控制…...

缓存过期时间之逻辑过期

1. 物理不过期(Physical Non-Expiration) 定义:在Redis中不设置EXPIRE时间,缓存键永久存在(除非主动删除或内存淘汰)。目的:彻底规避因缓存自动过期导致的击穿(单热点失效&#xff…...

JVM类加载过程详解

文章目录 前言1.加载2.链接验证文件格式验证元数据验证字节码验证符号引用验证 准备解析 3.初始化4.类卸载 前言 类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期可以简单概括为 7 个阶段:加载(Loading)、验证&a…...

第三十二篇 深入解析Kimball维度建模:构建企业级数据仓库的完整框架

目录 一、维度建模设计原则深度剖析1.1 业务过程驱动设计1.2 星型模式VS雪花模式 二、维度建模五步法实战(附完整案例)2.1 业务需求映射2.2 模型详细设计2.3 缓慢变化维处理 三、高级建模技术解析3.1 渐变维度桥接表3.2 快照事实表设计 四、性能优化体系…...

WPF 布局中的共性尺寸组(Shared Size Group)

1. 什么是共性尺寸组? 在 WPF 的 Grid 布局中,SharedSizeGroup 允许多个 Grid 共享同一列或行的尺寸,即使它们属于不同的 Grid 也能保持大小一致。这样可以保证界面元素的对齐性,提高布局的一致性。 SharedSizeGroup 主要用于需…...

19 数码管的动态显示

1、八段数码管 八段数码管 是一个 “ 8 ” 字型数码管,分为八段,a b c d e f g dp,其中dp为小数点。每一段为一个发光二极管,这样的 8 段称为 段选信号 。 2、实验 1、实验目标:让六位数码管 从 0 开始记数&#xff0…...

pytorch 笔记:张量索引的维度扩展规则

1 基本原理 在PyTorch中,张量索引的维度扩展规则遵循以下原则: 索引操作的核心规则:​ 当使用索引数组访问张量时: 索引数组的每个元素对应选取原张量的一个子张量结果形状 索引数组形状 原张量剩余维度形状 这么说可能不清…...

课外活动:怎么理解可变成本?

可变成本深度解析 🧮 一、可变成本的本质 #mermaid-svg-qoqQaFxQBuZZfAD2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qoqQaFxQBuZZfAD2 .error-icon{fill:#552222;}#mermaid-svg-qoqQaFxQBuZZfAD2 …...

深入理解 JVM 的垃圾收集器:CMS、G1、ZGC

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...

IDEA 快捷键ctrl+shift+f 无法全局搜索内容的问题及解决办法

本篇文章主要讲解IDEA、phpStrom、webStrom、pyCharm等jetbrains系列编辑器无法进行全局搜索内容问题的主要原因及解决办法。 日期:2025年3月22日 作者:任聪聪 现象描述: 1.按下ctrlshiftf 输入法转为了繁体。 2.快捷键ctrlshiftr 可以全局检…...