🚀 日語RoBERTa基礎模型
本項目提供了一個基礎規模的日語RoBERTa模型。該模型由rinna株式會社使用GitHub倉庫rinnakk/japanese-pretrained-models中的代碼進行訓練。
🚀 快速開始
加載模型
from transformers import AutoTokenizer, AutoModelForMaskedLM
tokenizer = AutoTokenizer.from_pretrained("rinna/japanese-roberta-base", use_fast=False)
tokenizer.do_lower_case = True
model = AutoModelForMaskedLM.from_pretrained("rinna/japanese-roberta-base")
使用模型進行掩碼標記預測
⚠️ 重要提示
- 使用
[CLS]
:為了讓模型正確編碼句子以預測掩碼標記,務必在句子前添加[CLS]
標記,因為模型訓練時使用了該標記。
- 分詞後使用
[MASK]
:A) 直接在輸入字符串中輸入[MASK]
和B) 分詞後用[MASK]
替換標記會產生不同的標記序列,從而導致不同的預測結果。分詞後使用[MASK]
更合適(因為這與模型預訓練的方式一致)。不過,Huggingface推理API僅支持在輸入字符串中輸入[MASK]
,且預測效果不太穩定。
- 顯式提供
position_ids
作為參數:當沒有為Roberta*
模型提供position_ids
時,Huggingface的transformers
會自動構造它,但會從padding_idx
而不是0
開始(參見問題和Huggingface 實現中的create_position_ids_from_input_ids()
函數)。不幸的是,對於rinna/japanese-roberta-base
,由於相應分詞器的padding_idx
不是0
,這樣做無法達到預期效果。因此,請務必自己構造position_ids
,並使其從位置ID 0
開始。
示例
以下示例展示了我們的模型作為掩碼語言模型的工作方式。注意運行以下代碼示例與運行Huggingface推理API的區別。
text = "4年に1度オリンピックは開かれる。"
text = "[CLS]" + text
tokens = tokenizer.tokenize(text)
print(tokens)
masked_idx = 5
tokens[masked_idx] = tokenizer.mask_token
print(tokens)
token_ids = tokenizer.convert_tokens_to_ids(tokens)
print(token_ids)
import torch
token_tensor = torch.LongTensor([token_ids])
position_ids = list(range(0, token_tensor.size(1)))
print(position_ids)
position_id_tensor = torch.LongTensor([position_ids])
with torch.no_grad():
outputs = model(input_ids=token_tensor, position_ids=position_id_tensor)
predictions = outputs[0][0, masked_idx].topk(10)
for i, index_t in enumerate(predictions.indices):
index = index_t.item()
token = tokenizer.convert_ids_to_tokens([index])[0]
print(i, token)
"""
0 総會
1 サミット
2 ワールドカップ
3 フェスティバル
4 大會
5 オリンピック
6 全國大會
7 黨大會
8 イベント
9 世界選手権
"""
✨ 主要特性
- 模型架構:這是一個基於Transformer的12層、768隱藏層大小的掩碼語言模型。
- 訓練數據:模型在日語CC - 100和日語維基百科上進行訓練,以優化掩碼語言建模目標。在8 * V100 GPU上訓練了約15天,在從CC - 100中採樣的開發集上達到了約3.9的困惑度。
- 分詞方式:模型使用基於sentencepiece的分詞器,詞彙表是使用官方sentencepiece訓練腳本在日語維基百科上訓練得到的。
📚 詳細文檔
模型架構
一個12層、768隱藏層大小的基於Transformer的掩碼語言模型。
訓練
該模型在日語CC - 100和日語維基百科上進行訓練,以優化掩碼語言建模目標。在8 * V100 GPU上訓練了約15天,在從CC - 100中採樣的開發集上達到了約3.9的困惑度。
分詞
模型使用基於sentencepiece的分詞器,詞彙表是使用官方sentencepiece訓練腳本在日語維基百科上訓練得到的。
發佈日期
2021年8月25日
引用方式
@misc{rinna-japanese-roberta-base,
title = {rinna/japanese-roberta-base},
author = {Zhao, Tianyu and Sawada, Kei},
url = {https://huggingface.co/rinna/japanese-roberta-base}
}
@inproceedings{sawada2024release,
title = {Release of Pre-Trained Models for the {J}apanese Language},
author = {Sawada, Kei and Zhao, Tianyu and Shing, Makoto and Mitsui, Kentaro and Kaga, Akio and Hono, Yukiya and Wakatsuki, Toshiaki and Mitsuda, Koh},
booktitle = {Proceedings of the 2024 Joint International Conference on Computational Linguistics, Language Resources and Evaluation (LREC-COLING 2024)},
month = {5},
year = {2024},
pages = {13898--13905},
url = {https://aclanthology.org/2024.lrec-main.1213},
note = {\url{https://arxiv.org/abs/2404.01657}}
}
📄 許可證
MIT許可證