语言:
- 阿拉伯语
许可证: apache-2.0
小部件:
- 文本: "生活的目标是[MASK]。"
CAMeLBERT:面向阿拉伯语NLP任务的预训练模型集
模型描述
CAMeLBERT 是一系列基于不同规模与变体的阿拉伯语文本预训练的BERT模型集合。我们发布了涵盖现代标准阿拉伯语(MSA)、方言阿拉伯语(DA)及古典阿拉伯语(CA)的预训练语言模型,以及一个混合三种变体的综合模型。此外,我们还提供了基于MSA变体缩减数据集(半量、四分之一、八分之一及十六分之一规模)预训练的附加模型。详情参见论文《阿拉伯语预训练语言模型中变体、规模与任务类型的交互作用》。
本模型卡介绍的是CAMeLBERT-DA(bert-base-arabic-camelbert-da
),该模型基于DA(方言阿拉伯语)数据集预训练。
|
模型 |
变体 |
规模 |
词量 |
|
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-da')
>>> unmasker("生活的目标是 [MASK] 。")
[{'sequence': '[CLS] 生活的目标是.. [SEP]',
'score': 0.062508225440979,
'token': 18,
'token_str': '.'},
{'sequence': '[CLS] 生活的目标是死亡。 [SEP]',
'score': 0.033172328025102615,
'token': 4295,
'token_str': '死亡'},
{'sequence': '[CLS] 生活的目标是生活。 [SEP]',
'score': 0.029575437307357788,
'token': 3696,
'token_str': '生活'},
{'sequence': '[CLS] 生活的目标是离开。 [SEP]',
'score': 0.02724040113389492,
'token': 11449,
'token_str': '离开'},
{'sequence': '[CLS] 生活的目标是爱。 [SEP]',
'score': 0.01564178802073002,
'token': 3088,
'token_str': '爱'}]
注意:下载模型需transformers>=3.5.0
,否则需手动下载。
PyTorch中获取文本特征的用法:
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained('CAMeL-Lab/bert-base-arabic-camelbert-da')
model = AutoModel.from_pretrained('CAMeL-Lab/bert-base-arabic-camelbert-da')
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-da')
model = TFAutoModel.from_pretrained('CAMeL-Lab/bert-base-arabic-camelbert-da')
text = "你好世界。"
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
训练数据
训练流程
采用Google发布的原始实现进行预训练,除特殊说明外均遵循原始英文BERT的超参数设置。
预处理
- 从各语料库提取原始文本后,应用以下预处理步骤:
- 基于全部数据集(167GB文本)训练词汇量30,000的WordPiece分词器(使用HuggingFace分词器库)
- 保留字母大小写及重音符号
预训练
- 在单个云TPU(
v3-8
)上完成总计100万步训练
- 前90,000步批量大小为1,024,后续调整为256
- 90%步数的序列长度限制为128词元,剩余10%为512词元
- 采用全词掩码和10倍重复因子
- 128词元序列的最大预测数为20,512词元序列为80
- 设定随机种子12345,掩码概率15%,短序列概率10%
- 使用Adam优化器(学习率1e-4,β₁=0.9,β₂=0.999),权重衰减0.01,前10,000步学习率预热后线性衰减
评估结果
- 在NER、词性标注、情感分析、方言识别和诗歌分类五个NLP任务上评估模型
- 使用12个数据集进行微调和评估
- 采用Hugging Face的transformers(v3.1.0 + PyTorch v1.5.1)进行微调
- 通过添加全连接线性层至最后隐藏状态实现微调
- 所有任务均采用F₁分数作为指标
- 微调代码参见GitHub仓库
结果表格
(此处保留原表格结构,内容已翻译为中文)
致谢
本研究由Google TensorFlow研究云(TFRC)提供的Cloud TPU支持。
引用
(保留原BibTeX格式)