语言:
- 阿拉伯语
许可证: apache-2.0
小部件:
- 文本: "生活的目标是[MASK]。"
CAMeLBERT:面向阿拉伯语NLP任务的预训练模型集
模型描述
CAMeLBERT 是一系列基于阿拉伯语文本预训练的不同规模和变体的BERT模型集合。我们发布了针对现代标准阿拉伯语(MSA)、方言阿拉伯语(DA)和古典阿拉伯语(CA)的预训练语言模型,以及一个混合三种变体的模型。此外,我们还提供了基于MSA变体缩减数据集(半量、四分之一、八分之一及十六分之一)预训练的额外模型。详细信息见论文《阿拉伯语预训练语言模型中变体、规模与任务类型的交互作用》。
本模型卡介绍的是CAMeLBERT-MSA (bert-base-arabic-camelbert-msa
),即在完整MSA数据集上预训练的模型。
|
模型 |
变体 |
规模 |
词数 |
|
bert-base-arabic-camelbert-mix |
CA,DA,MSA |
167GB |
173亿 |
|
bert-base-arabic-camelbert-ca |
CA |
6GB |
8.47亿 |
|
bert-base-arabic-camelbert-da |
DA |
54GB |
58亿 |
✔ |
bert-base-arabic-camelbert-msa |
MSA |
107GB |
126亿 |
|
bert-base-arabic-camelbert-msa-half |
MSA |
53GB |
63亿 |
|
bert-base-arabic-camelbert-msa-quarter |
MSA |
27GB |
31亿 |
|
bert-base-arabic-camelbert-msa-eighth |
MSA |
14GB |
16亿 |
|
bert-base-arabic-camelbert-msa-sixteenth |
MSA |
6GB |
7.46亿 |
预期用途
您可将发布的模型用于掩码语言建模或下一句预测任务。但主要设计目的是针对NER、词性标注、情感分析、方言识别和诗歌分类等NLP任务进行微调。微调代码发布于此处。
使用方法
可直接通过管道进行掩码语言建模:
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='CAMeL-Lab/bert-base-arabic-camelbert-msa')
>>> unmasker("生活的目标是[MASK]。")
[{'sequence': '[CLS] 生活的目标是工作。[SEP]',
'score': 0.08507660031318665,
'token': 2854,
'token_str': 'العمل'},
{'sequence': '[CLS] 生活的目标是生活。[SEP]',
'score': 0.058905381709337234,
'token': 3696, 'token_str': 'الحياة'},
{'sequence': '[CLS] 生活的目标是成功。[SEP]',
'score': 0.04660581797361374, 'token': 6232,
'token_str': 'النجاح'},
{'sequence': '[CLS] 生活的目标是盈利。[SEP]',
'score': 0.04156001657247543,
'token': 12413, 'token_str': 'الربح'},
{'sequence': '[CLS] 生活的目标是爱。[SEP]',
'score': 0.03534102067351341,
'token': 3088,
'token_str': 'الحب'}]
注意:下载模型需transformers>=3.5.0
,或手动下载。
PyTorch中获取文本特征的示例:
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained('CAMeL-Lab/bert-base-arabic-camelbert-msa')
model = AutoModel.from_pretrained('CAMeL-Lab/bert-base-arabic-camelbert-msa')
text = "你好世界。"
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
TensorFlow示例:
from transformers import AutoTokenizer, TFAutoModel
tokenizer = AutoTokenizer.from_pretrained('CAMeL-Lab/bert-base-arabic-camelbert-msa')
model = TFAutoModel.from_pretrained('CAMeL-Lab/bert-base-arabic-camelbert-msa')
text = "你好世界。"
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
训练数据
训练流程
采用Google原始实现进行预训练,除特别说明外,超参数设置与英文BERT原始模型一致。
预处理
预训练
- 在单块云端TPU(
v3-8
)上完成总计100万步训练
- 前90,000步批量大小为1,024,后续调整为256
- 90%步数的序列长度限制为128词元,剩余10%为512词元
- 采用全词掩码和10倍重复因子
- 128词元最大序列的每序列预测数设为20,512词元设为80
- 随机种子12345,掩码语言模型概率0.15,短序列概率0.1
- 使用Adam优化器(学习率1e-4,\(\beta_{1} = 0.9\),\(\beta_{2} = 0.999\)),权重衰减0.01,前10,000步学习率预热后线性衰减
评估结果
- 在NER、词性标注、情感分析、方言识别和诗歌分类五类任务上评估预训练模型
- 使用12个数据集进行微调和评估
- 采用Hugging Face transformers实现微调(v3.1.0 + PyTorch v1.5.1)
- 微调时在最后隐藏层添加全连接线性层
- 所有任务均采用\(F_{1}\)分数作为指标
- 微调代码见GitHub仓库
结果数据表
(此处保留原表格结构,仅翻译表头及注释)
任务 |
数据集 |
变体 |
混合 |
CA |
DA |
MSA |
MSA半量 |
MSA四分之一 |
MSA八分之一 |
MSA十六分之一 |
NER |
ANERcorp |
MSA |
80.8% |
67.9% |
74.1% |
82.4% |
82.0% |
82.1% |
82.6% |
80.8% |
词性标注 |
PATB (MSA) |
MSA |
98.1% |
97.8% |
97.7% |
98.3% |
98.2% |
98.3% |
98.2% |
98.2% |
|
ARZTB (埃及) |
DA |
93.6% |
92.3% |
92.7% |
93.6% |
93.6% |
93.7% |
93.6% |
93.6% |
|
Gumar (海湾) |
DA |
97.3% |
97.7% |
97.9% |
97.9% |
97.9% |
97.9% |
97.9% |
97.9% |
情感分析 |
ASTD |
MSA |
76.3% |
69.4% |
74.6% |
76.9% |
76.0% |
76.8% |
76.7% |
75.3% |
|
ArSAS |
MSA |
92.7% |
89.4% |
91.8% |
93.0% |
92.6% |
92.5% |
92.5% |
92.3% |
|
SemEval |
MSA |
69.0% |
58.5% |
68.4% |
72.1% |
70.7% |
72.8% |
71.6% |
71.2% |
方言识别 |
MADAR-26 |
DA |
62.9% |
61.9% |
61.8% |
62.6% |
62.0% |
62.8% |
62.0% |
62.2% |
|
MADAR-6 |
DA |
92.5% |
91.5% |
92.2% |
91.9% |
91.8% |
92.2% |
92.1% |
92.0% |
|
MADAR-Twitter-5 |
MSA |
75.7% |
71.4% |
74.2% |
77.6% |
78.5% |
77.3% |
77.7% |
76.2% |
|
NADI |
DA |
24.7% |
17.3% |
20.1% |
24.9% |
24.6% |
24.6% |
24.9% |
23.8% |
诗歌分类 |
APCD |
CA |
79.8% |
80.9% |
79.6% |
79.7% |
79.9% |
80.0% |
79.7% |
79.8% |
平均结果
|
变体 |
混合 |
CA |
DA |
MSA |
MSA半量 |
MSA四分之一 |
MSA八分之一 |
MSA十六分之一 |
变体加权平均[1] |
MSA |
82.1% |
75.7% |
80.1% |
83.4% |
83.0% |
83.3% |
83.2% |
82.3% |
|
DA |
74.4% |
72.1% |
72.9% |
74.2% |
74.0% |
74.3% |
74.1% |
73.9% |
|
CA |
79.8% |
80.9% |
79.6% |
79.7% |
79.9% |
80.0% |
79.7% |
79.8% |
宏观平均 |
全部 |
78.7% |
74.7% |
77.1% |
79.2% |
79.0% |
79.2% |
79.1% |
78.6% |
[1]: 变体加权平均指同语言变体任务组的平均值。
致谢
本研究由Google TensorFlow研究云(TFRC)提供的Cloud TPU支持。
引用
@inproceedings{