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