🚀 日语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许可证