🚀 BERTugues Base(又名 "BERTugues-base-portuguese-cased")
BERTugues是一個基於BERT架構的預訓練模型,專為葡萄牙語設計。它在多個自然語言處理任務中展現出了出色的性能,尤其在處理葡萄牙語文本時具有顯著優勢。
🚀 快速開始
BERTugues按照BERT原論文的步驟進行預訓練,目標是進行掩碼語言模型(Masked Language Modeling,MLM)和下一句預測(Next Sentence Prediction,NSP)。它經過100萬步的訓練,使用了超過20GB的文本數據。更多訓練細節請閱讀已發表的論文。與Bertimbau類似,BERTugues使用BrWAC數據集和葡萄牙語維基百科進行分詞器的預訓練,同時在訓練流程上進行了一些改進:
- 去除分詞器訓練中不常見的葡萄牙語字符:在Bertimbau中,29794個標記裡有超過7000個使用了東方字符或特殊字符,這些字符在葡萄牙語中幾乎從不使用。例如,存在標記 "##漫"、"##켝"、"##前"。而在BERTugues中,我們在訓練分詞器之前去除了這些字符。
- 😀 在分詞器中添加主要表情符號:維基百科文本中的表情符號較少,因此進入標記的表情符號數量也很少。正如文獻所證明的,表情符號在一系列任務中非常重要。
- 過濾BrWAC文本的質量:遵循谷歌Gopher模型論文提出的啟發式模型,我們從BrWAC中去除了低質量的文本。
✨ 主要特性
分詞器優化
通過替換葡萄牙語中不常用的標記,我們減少了被拆分為多個標記的單詞的平均數量。在使用assin2的測試中(這也是Bertimbau在碩士論文中使用的相同數據集),我們將每個文本中被拆分的單詞的平均數量從3.8減少到了3.0,而多語言BERT的這一數字為7.4。

性能卓越
為了比較性能,我們測試了一個文本分類問題,使用了IMDB的電影評論數據集,該數據集已被翻譯成葡萄牙語,質量較高。在這個問題中,我們使用BERTugues的句子表示,並將其輸入到隨機森林模型中進行分類。
我們還參考了論文JurisBERT: Transformer-based model for embedding legal texts的性能比較,該論文專門針對特定領域的文本預訓練了一個BERT模型,使用多語言BERT和Bertimbau作為基線。在這種情況下,我們使用了論文團隊提供的代碼並添加了BERTugues。該模型用於比較兩個文本是否屬於同一主題。
模型 |
IMDB (F1) |
STJ (F1) |
PJERJ (F1) |
TJMS (F1) |
F1平均值 |
多語言BERT |
72.0% |
30.4% |
63.8% |
65.0% |
57.8% |
Bertimbau-Base |
82.2% |
35.6% |
63.9% |
71.2% |
63.2% |
Bertimbau-Large |
85.3% |
43.0% |
63.8% |
74.0% |
66.5% |
BERTugues-Base |
84.0% |
45.2% |
67.5% |
70.0% |
66.7% |
與Bertimbau-base相比,BERTugues在4項任務中的3項上表現更優;與Bertimbau-Large(一個參數多3倍且計算成本更高的模型)相比,BERTugues在4項任務中的2項上表現更優。
💻 使用示例
基礎用法
掩碼語言模型預測
from transformers import BertTokenizer, BertForMaskedLM, pipeline
model = BertForMaskedLM.from_pretrained("ricardoz/BERTugues-base-portuguese-cased")
tokenizer = BertTokenizer.from_pretrained("ricardoz/BERTugues-base-portuguese-cased", do_lower_case=False)
pipe = pipeline('fill-mask', model=model, tokenizer=tokenizer, top_k = 3)
pipe('[CLS] Eduardo abriu os [MASK], mas não quis se levantar. Ficou deitado e viu que horas eram.')
句子嵌入創建
from transformers import BertTokenizer, BertModel, pipeline
import torch
model = BertModel.from_pretrained("ricardoz/BERTugues-base-portuguese-cased")
tokenizer = BertTokenizer.from_pretrained("ricardoz/BERTugues-base-portuguese-cased", do_lower_case=False)
input_ids = tokenizer.encode('[CLS] Eduardo abriu os olhos, mas não quis se levantar. Ficou deitado e viu que horas eram.', return_tensors='pt')
with torch.no_grad():
last_hidden_state = model(input_ids).last_hidden_state[:, 0]
last_hidden_state
📄 許可證
許可證類型:其他
📚 詳細文檔
更多信息請訪問我們的GitHub!
📚 引用
如果您在出版物中使用BERTugues,請務必引用它!這將有助於該模型在科學界獲得認可和重視。
@article{Zago2024bertugues,
title = {BERTugues: A Novel BERT Transformer Model Pre-trained for Brazilian Portuguese},
volume = {45},
url = {https://ojs.uel.br/revistas/uel/index.php/semexatas/article/view/50630},
DOI = {10.5433/1679-0375.2024.v45.50630},
journal = {Semina: Ciências Exatas e Tecnológicas},
author = {Mazza Zago, Ricardo and Agnoletti dos Santos Pedotti, Luciane},
year = {2024},
month = {Dec.},
pages = {e50630}
}