英文

bart-base-japanese-news(基准大小模型)

本存储库提供了一个日本语BART模型。该模型由 Stockmark Inc. 进行训练。

可在以下网址找到该模型的介绍文章。

https://tech.stockmark.co.jp/blog/bart-japanese-base-news/

模型描述

BART是一个具有双向(类似BERT)编码器和自回归(类似GPT)解码器的transformer编码器-解码器(seq2seq)模型。 BART通过(1)使用任意的噪声函数破坏文本,以及(2)学习重构原始文本的模型进行预训练。

BART在文本生成(例如摘要,翻译)进行精细调整时特别有效,但也对理解任务(例如文本分类,问题回答)有效。

预期用途和限制

您可以使用原始模型进行文本填充。但是,该模型主要用于在受监督数据集上进行精细调整。

如何使用模型

注意:由于我们使用了自定义分词器,请使用 trust_remote_code=True 初始化分词器。

简单用法

from transformers import AutoTokenizer, BartModel

model_name = "stockmark/bart-base-japanese-news"

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = BartModel.from_pretrained(model_name)

inputs = tokenizer("今日は良い天気です。", return_tensors="pt")
outputs = model(**inputs)

last_hidden_states = outputs.last_hidden_state

句子置换

import torch
from transformers import AutoTokenizer, BartForConditionalGeneration

model_name = "stockmark/bart-base-japanese-news"

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = BartForConditionalGeneration.from_pretrained(model_name)

if torch.cuda.is_available():
    model = model.to("cuda")

# correct order text is "明日は大雨です。電車は止まる可能性があります。ですから、自宅から働きます。"
text = "電車は止まる可能性があります。ですから、自宅から働きます。明日は大雨です。"

inputs = tokenizer([text], max_length=128, return_tensors="pt", truncation=True)
text_ids = model.generate(inputs["input_ids"].to(model.device), num_beams=3, max_length=128)
output = tokenizer.batch_decode(text_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]

print(output)
# sample output: 明日は大雨です。電車は止まる可能性があります。ですから、自宅から働きます。

掩码填充

import torch
from transformers import AutoTokenizer, BartForConditionalGeneration

model_name = "stockmark/bart-base-japanese-news"

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = BartForConditionalGeneration.from_pretrained(model_name)

if torch.cuda.is_available():
    model = model.to("cuda")

text = "今日の天気は<mask>のため、傘が必要でしょう。"

inputs = tokenizer([text], max_length=128, return_tensors="pt", truncation=True)
text_ids = model.generate(inputs["input_ids"].to(model.device), num_beams=3, max_length=128)
output = tokenizer.batch_decode(text_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]

print(output)
# sample output: 今日の天気は、雨のため、傘が必要でしょう。

文本生成

注意:您可以使用原始模型进行文本生成。但是,该模型主要用于在受监督数据集上进行精细调整。

import torch
from transformers import AutoTokenizer, BartForConditionalGeneration

model_name = "stockmark/bart-base-japanese-news"

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = BartForConditionalGeneration.from_pretrained(model_name)

if torch.cuda.is_available():
   model = model.to("cuda")

text = "自然言語処理(しぜんげんごしょり、略称:NLP)は、人間が日常的に使っている自然言語をコンピュータに処理させる一連の技術であり、人工知能と言語学の一分野である。「計算言語学」(computational linguistics)との類似もあるが、自然言語処理は工学的な視点からの言語処理をさすのに対して、計算言語学は言語学的視点を重視する手法をさす事が多い。"

inputs = tokenizer([text], max_length=512, return_tensors="pt", truncation=True)
text_ids = model.generate(inputs["input_ids"].to(model.device), num_beams=3, min_length=0, max_length=40)
output = tokenizer.batch_decode(text_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]

print(output)
# sample output: 自然言語処理(しぜんげんごしょり、略称:NLP)は、人間が日常的に使っている自然言語をコンピュータに処理させる一連の技術であり、言語学の一分野である。

训练

该模型在日本新闻文章上进行了训练。

分词

该模型使用了基于 sentencepiece 的分词器。词汇表首先使用官方的sentencepiece训练脚本在训练数据的选定子集上进行了训练。

许可证

预训练模型依据 MIT License 的条款进行分发。

注意:只有tokenization_bart_japanese_news.py是 Apache License, Version 2.0 的。有关许可证详情,请参阅tokenization_bart_japanese_news.py。

联系方式

如果您有任何问题,请使用 our contact form 进行联系。

致谢

该比较研究得到了来自Google TensorFlow Research Cloud(TFRC)的Cloud TPU的支持。