Bert Base Polish Uncased V1
模型简介
Polbert是基于BERT架构的波兰语预训练语言模型,支持多种下游NLP任务,如文本分类、命名实体识别等。
模型特点
波兰语优化
专门针对波兰语特性优化,正确处理波兰语特殊字符和重音符号
全词掩码技术
区分大小写版本采用全词掩码技术,提升模型理解能力
语料优化
移除重复内容,使用更均衡的波兰语语料库训练
模型能力
文本分类
命名实体识别
文本填充
语义理解
使用案例
文本理解
诗歌作者识别
识别波兰著名诗人作品片段
正确识别Adam Mickiewicz为'pisarzem'(作家)
学术研究
波兰语语言学分析
用于研究波兰语语法和语义特征
🚀 Polbert - 波兰语BERT模型
Polbert是BERT语言模型的波兰语版本,现已推出!它有大小写敏感(cased)和大小写不敏感(uncased)两种变体,均可通过HuggingFace的transformers库下载和使用。我推荐使用大小写敏感的模型,关于两种模型的差异和基准测试结果,下面会有详细介绍。
✨ 主要特性
大小写敏感和大小写不敏感变体
- 大小写不敏感模型:最初训练的是大小写不敏感模型,下面会提及语料库和训练细节。发布该模型后,我发现了一些问题:
- 应用小写转换时,BERT分词器无法正确对一些波兰语字符和重音进行分词。这对序列分类任务影响不大,但可能会显著影响标记分类任务。
- 我注意到Open Subtitles数据集中存在大量重复内容,而该数据集在训练语料库中占主导地位。
- 未使用全词掩码(Whole Word Masking)。
- 大小写敏感模型:在大小写不敏感模型的基础上进行了改进:
- 现在所有波兰语字符和重音都能被正确分词。
- 从Open Subtitles数据集中移除了重复内容。语料库规模变小,但更加均衡。
- 模型使用全词掩码进行训练。
📦 安装指南
Polbert通过HuggingFace Transformers库发布。
💻 使用示例
基础用法
大小写不敏感模型
from transformers import *
model = BertForMaskedLM.from_pretrained("dkleczek/bert-base-polish-uncased-v1")
tokenizer = BertTokenizer.from_pretrained("dkleczek/bert-base-polish-uncased-v1")
nlp = pipeline('fill-mask', model=model, tokenizer=tokenizer)
for pred in nlp(f"Adam Mickiewicz wielkim polskim {nlp.tokenizer.mask_token} był."):
print(pred)
# Output:
# {'sequence': '[CLS] adam mickiewicz wielkim polskim poeta był. [SEP]', 'score': 0.47196975350379944, 'token': 26596}
# {'sequence': '[CLS] adam mickiewicz wielkim polskim bohaterem był. [SEP]', 'score': 0.09127858281135559, 'token': 10953}
# {'sequence': '[CLS] adam mickiewicz wielkim polskim człowiekiem był. [SEP]', 'score': 0.0647173821926117, 'token': 5182}
# {'sequence': '[CLS] adam mickiewicz wielkim polskim pisarzem był. [SEP]', 'score': 0.05232388526201248, 'token': 24293}
# {'sequence': '[CLS] adam mickiewicz wielkim polskim politykiem był. [SEP]', 'score': 0.04554257541894913, 'token': 44095}
大小写敏感模型
model = BertForMaskedLM.from_pretrained("dkleczek/bert-base-polish-cased-v1")
tokenizer = BertTokenizer.from_pretrained("dkleczek/bert-base-polish-cased-v1")
nlp = pipeline('fill-mask', model=model, tokenizer=tokenizer)
for pred in nlp(f"Adam Mickiewicz wielkim polskim {nlp.tokenizer.mask_token} był."):
print(pred)
# Output:
# {'sequence': '[CLS] Adam Mickiewicz wielkim polskim pisarzem był. [SEP]', 'score': 0.5391148328781128, 'token': 37120}
# {'sequence': '[CLS] Adam Mickiewicz wielkim polskim człowiekiem był. [SEP]', 'score': 0.11683262139558792, 'token': 6810}
# {'sequence': '[CLS] Adam Mickiewicz wielkim polskim bohaterem był. [SEP]', 'score': 0.06021466106176376, 'token': 17709}
# {'sequence': '[CLS] Adam Mickiewicz wielkim polskim mistrzem był. [SEP]', 'score': 0.051870670169591904, 'token': 14652}
# {'sequence': '[CLS] Adam Mickiewicz wielkim polskim artystą był. [SEP]', 'score': 0.031787533313035965, 'token': 35680}
下游任务使用示例
可参考下一节中Polbert在下游任务中的使用示例。
📚 详细文档
预训练语料库
以下是使用的语料库列表以及wc
命令的输出(统计行数、单词数和字符数)。这些语料库使用srxsegmenter(见参考文献)分割成句子,连接后使用HuggingFace BERT分词器进行分词。
大小写不敏感模型
语料库 | 行数 | 单词数 | 字符数 |
---|---|---|---|
Open Subtitles波兰语子集 | 236635408 | 1431199601 | 7628097730 |
ParaCrawl波兰语子集 | 8470950 | 176670885 | 1163505275 |
波兰议会语料库 | 9799859 | 121154785 | 938896963 |
2020年2月波兰语维基百科 | 8014206 | 132067986 | 1015849191 |
总计 | 262920423 | 1861093257 | 10746349159 |
大小写敏感模型
语料库 | 行数 | 单词数 | 字符数 |
---|---|---|---|
Open Subtitles波兰语子集(去重后) | 41998942 | 213590656 | 1424873235 |
ParaCrawl波兰语子集 | 8470950 | 176670885 | 1163505275 |
波兰议会语料库 | 9799859 | 121154785 | 938896963 |
2020年2月波兰语维基百科 | 8014206 | 132067986 | 1015849191 |
总计 | 68283960 | 646479197 | 4543124667 |
预训练细节
大小写不敏感模型
- Polbert使用Google BERT的GitHub仓库(https://github.com/google-research/bert)中提供的代码进行训练。
- 当前发布的模型遵循bert-base-uncased模型架构(12层,768隐藏层,12头,1.1亿参数)。
- 训练设置:总共100万训练步骤:
- 100,000步 - 序列长度128,批量大小512,学习率1e-4(10,000步热身)
- 800,000步 - 序列长度128,批量大小512,学习率5e-5
- 100,000步 - 序列长度512,批量大小256,学习率2e-5
- 模型在单个Google Cloud TPU v3-8上进行训练。
大小写敏感模型
- 与大小写不敏感模型采用相同的方法,但有以下差异:
- 使用全词掩码。
- 训练设置:
- 100,000步 - 序列长度128,批量大小2048,学习率1e-4(10,000步热身)
- 100,000步 - 序列长度128,批量大小2048,学习率5e-5
- 100,000步 - 序列长度512,批量大小256,学习率2e-5
评估
感谢Allegro,我们现在有了KLEJ基准测试,这是一组针对波兰语理解的九个评估任务。以下是使用Polbert的大小写敏感和大小写不敏感变体运行标准评估脚本(无技巧!)所取得的结果。
模型 | 平均得分 | NKJP-NER | CDSC-E | CDSC-R | CBD | PolEmo2.0-IN | PolEmo2.0-OUT | DYK | PSC | AR |
---|---|---|---|---|---|---|---|---|---|---|
Polbert大小写敏感 | 81.7 | 93.6 | 93.4 | 93.8 | 52.7 | 87.4 | 71.1 | 59.1 | 98.6 | 85.2 |
Polbert大小写不敏感 | 81.4 | 90.1 | 93.9 | 93.5 | 55.0 | 88.1 | 68.8 | 59.4 | 98.8 | 85.4 |
注意到大小写不敏感模型在某些任务上的表现优于大小写敏感模型了吗?我猜测这是因为Open Subtitles数据集的过采样以及它与某些任务数据的相似性。所有这些基准测试任务都是序列分类任务,因此大小写敏感模型的相对优势在此处不太明显。
偏差
用于训练模型的数据存在偏差。它可能反映出与性别、种族等相关的刻板印象。在将模型用于下游任务时,请谨慎考虑这些偏差并采取措施加以缓解。
🔧 技术细节
引用
- https://github.com/google-research/bert
- https://github.com/narusemotoki/srx_segmenter
- 由Marcin Miłkowski编写的用于波兰语句子分割的SRX规则文件:https://raw.githubusercontent.com/languagetool-org/languagetool/master/languagetool-core/src/main/resources/org/languagetool/resource/segment.srx
- KLEJ基准测试
📄 许可证
文档中未提及相关许可证信息。
致谢
- 感谢Google TensorFlow Research Cloud (TFRC)提供免费的TPU信用额度!
- 感谢deepset的Timo Möller分享基于他们训练德语BERT模型经验的技巧和脚本。
- 非常感谢Allegro发布KLEJ基准测试,特别感谢Piotr Rybak在评估方面提供的帮助以及指出分词方面的一些问题。
- 最后,感谢fastai的Rachel Thomas、Jeremy Howard和Sylvain Gugger提供的自然语言处理和深度学习课程!
作者
Darek Kłeczek - 在Twitter上@dk21联系我。
Phi 2 GGUF
其他
Phi-2是微软开发的一个小型但强大的语言模型,具有27亿参数,专注于高效推理和高质量文本生成。
大型语言模型 支持多种语言
P
TheBloke
41.5M
205
Roberta Large
MIT
基于掩码语言建模目标预训练的大型英语语言模型,采用改进的BERT训练方法
大型语言模型 英语
R
FacebookAI
19.4M
212
Distilbert Base Uncased
Apache-2.0
DistilBERT是BERT基础模型的蒸馏版本,在保持相近性能的同时更轻量高效,适用于序列分类、标记分类等自然语言处理任务。
大型语言模型 英语
D
distilbert
11.1M
669
Llama 3.1 8B Instruct GGUF
Meta Llama 3.1 8B Instruct 是一个多语言大语言模型,针对多语言对话用例进行了优化,在常见的行业基准测试中表现优异。
大型语言模型 英语
L
modularai
9.7M
4
Xlm Roberta Base
MIT
XLM-RoBERTa是基于100种语言的2.5TB过滤CommonCrawl数据预训练的多语言模型,采用掩码语言建模目标进行训练。
大型语言模型 支持多种语言
X
FacebookAI
9.6M
664
Roberta Base
MIT
基于Transformer架构的英语预训练模型,通过掩码语言建模目标在海量文本上训练,支持文本特征提取和下游任务微调
大型语言模型 英语
R
FacebookAI
9.3M
488
Opt 125m
其他
OPT是由Meta AI发布的开放预训练Transformer语言模型套件,参数量从1.25亿到1750亿,旨在对标GPT-3系列性能,同时促进大规模语言模型的开放研究。
大型语言模型 英语
O
facebook
6.3M
198
1
基于transformers库的预训练模型,适用于多种NLP任务
大型语言模型
Transformers

1
unslothai
6.2M
1
Llama 3.1 8B Instruct
Llama 3.1是Meta推出的多语言大语言模型系列,包含8B、70B和405B参数规模,支持8种语言和代码生成,优化了多语言对话场景。
大型语言模型
Transformers 支持多种语言

L
meta-llama
5.7M
3,898
T5 Base
Apache-2.0
T5基础版是由Google开发的文本到文本转换Transformer模型,参数规模2.2亿,支持多语言NLP任务。
大型语言模型 支持多种语言
T
google-t5
5.4M
702
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98