
罗伯特是最先进的荷兰伯特模式。这是一个大型的荷兰语通用语言模型,可以在给定数据集上进行微调,以执行任何文本分类,回归或标记任务。因此,许多研究人员和从业人员成功使用了它来实现各种荷兰自然语言处理任务的最先进绩效,包括:
并且还取得了出色的,近距离的结果:
*请注意,几项评估使用Robbert-V1,第二个和改进的Robbert-V2在我们测试的所有内容上都优于第一个模型
(还请注意,此列表并不详尽。如果您将Robbert用于您的应用程序,我们很乐意知道它!请发送一封邮件,或通过发送编辑的拉请请求将其添加到此列表中!)
要使用HuggingFace Transformers使用Robbert模型,请使用pdelobelle/robbert-v2-dutch-base名称。
有关Robbert的更多深度信息可以在我们的博客文章和论文中找到。
罗伯特(Robbert)使用罗伯塔(Roberta)的建筑和预培训,但使用了荷兰令牌和培训数据。罗伯塔(Roberta)是强大的优化英语BERT模型,使其比原始BERT模型更强大。鉴于相同的体系结构,可以轻松地使用fineTune Roberta模型的代码和BERT模型的大多数代码来轻松地进行修正和推断,例如HuggingFace Transformers Library提供的代码。
罗伯特可以以两种不同的方式轻松使用,即使用Fairseq Roberta代码或使用HuggingFace Transformer
默认情况下,罗伯特(Robbert)具有用于培训的蒙版语言模型。这可以用作填充句子中掩码的零弹方法。可以在Robbert的Huggingface的推理API上免费测试它。您还可以通过使用Huggingface的Roberta-Runners,通过将模型名称更改为pdelobelle/robbert-v2-dutch-base ,或使用原始的Fairseq Roberta培训方案来为自己的任务创建一个新的预测头。
您可以轻松地使用Robbert V2使用?变压器。使用以下代码下载基本模型并自行登录,或使用我们的Finetundundode型号(在我们的项目站点上记录)。
from transformers import RobertaTokenizer , RobertaForSequenceClassification
tokenizer = RobertaTokenizer . from_pretrained ( "pdelobelle/robbert-v2-dutch-base" )
model = RobertaForSequenceClassification . from_pretrained ( "pdelobelle/robbert-v2-dutch-base" )从transformers v2.4.0 (或从源安装)开始,您可以使用自动口号和汽车模型。然后,您可以将大多数基于BERT的笔记本电脑使用Robbert fineTuning Robbert,以便在您类型的荷兰语言数据集上。
另外,您也可以使用Roberta Architecte代码使用Robbert。您可以在此处下载Robbert V2的Fairseq模型:( Robbert-Base,1.5 GB)。使用Robbert的model.pt ,此方法允许您使用Roberta的所有其他功能。
所有实验在我们的论文中更详细地描述了我们的GitHub存储库中的代码。
使用荷兰书评数据集预测评论是正面还是负面。
| 模型 | 准确性 [%] |
|---|---|
| Ulmfit | 93.8 |
| Bertje | 93.0 |
| 罗伯特V2 | 95.1 |
我们通过预测是否应将“ Die”或“ DAT”填充到句子中来衡量模型能够完成核心分辨率的能力。为此,我们使用了Europarl语料库。
| 模型 | 准确性 [%] | F1 [%] |
|---|---|---|
| 基线(LSTM) | 75.03 | |
| 姆伯特 | 98.285 | 98.033 |
| Bertje | 98.268 | 98.014 |
| 罗伯特V2 | 99.232 | 99.121 |
我们还仅使用10K训练示例来测量性能。该实验清楚地表明,当很少有数据可用时,罗伯特的表现要优于其他模型。
| 模型 | 准确性 [%] | F1 [%] |
|---|---|---|
| 姆伯特 | 92.157 | 90.898 |
| Bertje | 93.096 | 91.279 |
| 罗伯特V2 | 97.816 | 97.514 |
由于BERT模型是使用屏蔽任务进行预训练的,因此我们可以使用它来预测“ Die”还是“ DAT”是否可能更有可能。该实验表明,罗伯特(Robbert)与其他模型有关荷兰人的更多信息。
| 模型 | 准确性 [%] |
|---|---|
| Zeror | 66.70 |
| 姆伯特 | 90.21 |
| Bertje | 94.94 |
| 罗伯特V2 | 98.75 |
使用矮小的UD数据集。
| 模型 | 准确性 [%] |
|---|---|
| 青蛙 | 91.7 |
| 姆伯特 | 96.5 |
| Bertje | 96.3 |
| 罗伯特V2 | 96.4 |
有趣的是,我们发现,在处理小型数据集时,Robbert V2显着优于其他模型。

使用Conll 2002评估脚本。
| 模型 | 准确性 [%] |
|---|---|
| 青蛙 | 57.31 |
| 姆伯特 | 90.94 |
| Bert-NL | 89.7 |
| Bertje | 88.3 |
| 罗伯特V2 | 89.08 |
我们使用罗伯塔培训制度预先培训罗伯特。我们在奥斯卡语料库的“荷兰”部分上预先培训了我们的模型,这是一种大型多语种语料库,是通过普通爬网语料库中语言分类获得的。该荷兰语料库的大量为39GB,有66亿个单词分布超过1.26亿行文本,其中每条线可能包含多个句子,因此使用比同时开发的荷兰BERT模型的数据更多。
罗伯特(Robbert)与罗伯塔(Roberta)的基本模型分享了其建筑,这本身就是对伯特(Bert)的复制和改进。像伯特一样,它的架构包括12个自我发挥作用层,其中12个头,可训练的参数为1.17亿。与原始BERT模型的区别是,仅使用MLM任务而不是NSP任务,由Roberta指定的不同的预训练任务。因此,在预训练期间,它仅预测在给定句子的某些位置掩盖了哪些单词。训练过程使用ADAM优化器与学习率L_R = 10^-6的多项式衰减,并且升高期为1000迭代,而超参数beta_1 = 0.9和Roberta的默认beta_2 = 0.98。此外,重量衰减为0.1,少量辍学有助于防止模型过度拟合。
罗伯特(Robbert)在每个节点上具有4个NVIDIA P100 GPU的计算群集上训练,其中节点的数量在保持固定批次大小为8192句子的同时,进行了动态调整。最多使用20个节点(即80 GPU),中位数为5个节点。通过使用梯度积累,可以独立于可用的GPU数量设置批量大小,以最大程度地利用群集。使用Fairseq库,对两个时期进行了训练的模型,该模型总计超过16K批量,在计算集群上花费了大约三天的时间。在计算集群上的培训工作之间,2 NVIDIA 1080 TI还涵盖了Robbert V2的一些参数更新。
在罗伯特论文中,我们还研究了罗伯特的潜在偏见来源。
我们发现,Zeroshot模型估计HIJ (HE)的可能性高于Zij (SHE),对于大多数职业,在漂白模板句子中,无论其实际性别性别比率如何。

通过以审查作者的陈述性别来增强DBRB荷兰书籍情绪分析数据集,我们发现,女性所写的高度正面评论通常被罗伯特(Robbert)更准确地检测到比男性所写的正面评论。

您可以通过遵循以下步骤来复制论文中完成的实验。您可以安装所需的依赖项。txt或pipenv:
pip install -r requirements.txt从unignts.txt文件中安装依赖项。txtpip install pipenv PIPENV pipenv install )。在本节中,我们描述了如何使用我们提供的脚本进行微调模型,该脚本应该足够通用,可以重复使用其他所需的文本分类任务。
data/raw/DBRDsrc/preprocess_dbrd.py来准备数据集。src/split_dbrd_training.sh 。notebooks/finetune_dbrd.ipynb进行填充模型。 我们对荷兰欧洲语料库进行微调。您可以首先下载以下方式:
cd dataraweuroparl
wget -N 'http://www.statmt.org/europarl/v7/nl-en.tgz'
tar zxvf nl-en.tgz
作为理智检查,现在您应该在data/raw/europarl文件夹中拥有以下文件:
europarl-v7.nl-en.en
europarl-v7.nl-en.nl
nl-en.tgz
然后,您可以使用以下脚本运行预处理,该脚本填充了Europarl语料库的第一个过程,以删除句子而无需任何死亡或DAT 。之后,它将翻转代词,并将两个句子与<sep>令牌一起加入。
python src/preprocess_diedat.py
. src/preprocess_diedat.sh
注意:您可以使用watch -n 2 wc -l data/europarl-v7.nl-en.nl.sentences监视第一个预处理步骤的进度。这将需要一段时间,但是当然不需要使用所有输入。毕竟,这就是为什么您要使用预训练的语言模型的原因。您可以随时终止Python脚本,第二步只会使用这些脚本。
大多数伯特(Bert)的模特都以其名称伯特(Bert)一词(例如罗伯塔(Roberta),阿尔伯特(Albert),卡梅蒙德(Camembert)以及许多其他许多人)。因此,我们使用蒙版语言模型查询了新训练的模型,以使用各种提示来命名<mask> bert ,并一直称为Robbert。鉴于罗伯特是一个非常荷兰语的名字(因此显然是荷兰语模型) ,我们认为这确实很合适,而且与罗伯塔(Roberta)的根架构(即其根源建筑)具有很高的相似性。
由于“ Rob”是表示印章的荷兰语单词,因此我们决定画一封印章,并像从芝麻街的贝特(Bert)打扮成罗伯特(Robbert)徽标一样。
该项目由Pieter Delobelle,Thomas Winters和Bettina Berendt创建。
我们感谢Liesbeth Allein,因为她在Die-Dat Disampuation上的工作,为他们的Transformer Package,Facebook的Facebeel for Fairseq套餐以及我们可以使用的所有工作的所有人。
我们在MIT下发布模型和此代码。
如果您想引用我们的论文或模型,则可以使用以下Bibtex代码:
@inproceedings{delobelle2020robbert,
title = "{R}ob{BERT}: a {D}utch {R}o{BERT}a-based {L}anguage {M}odel",
author = "Delobelle, Pieter and
Winters, Thomas and
Berendt, Bettina",
booktitle = "Findings of the Association for Computational Linguistics: EMNLP 2020",
month = nov,
year = "2020",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/2020.findings-emnlp.292",
doi = "10.18653/v1/2020.findings-emnlp.292",
pages = "3255--3265"
}