# BertJapanese

## 概述

在日语文本上训练的 BERT 模型。

存在采用两种不同分词方法的模型：

- 使用 MeCab 和 WordPiece 进行分词。这需要一些额外的依赖项，[fugashi](https://github.com/polm/fugashi) 是 [MeCab](https://taku910.github.io/mecab/) 的封装。
- 按字符进行分词。

若要使用 *MecabTokenizer*，您应安装依赖项，运行 `pip install transformers["ja"]`（若从源代码安装，则运行 `pip install -e .["ja"]`）。

请参阅 [cl-tohoku 仓库中的详细信息](https://github.com/cl-tohoku/bert-japanese)。

使用 MeCab 和 WordPiece 分词处理模型的示例：

```python
import torch
from transformers import AutoModel, AutoTokenizer

bertjapanese = AutoModel.from_pretrained("cl-tohoku/bert-base-japanese", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("cl-tohoku/bert-base-japanese")

## Input Japanese Text
line = "吾輩は猫である。"

inputs = tokenizer(line, return_tensors="pt").to(model.device)

print(tokenizer.decode(inputs["input_ids"][0]))
[CLS] 吾輩 は 猫 で ある 。 [SEP]

outputs = bertjapanese(**inputs)
```

使用 Character 分词模型的示例：

```python
bertjapanese = AutoModel.from_pretrained("cl-tohoku/bert-base-japanese-char", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("cl-tohoku/bert-base-japanese-char")

## Input Japanese Text
line = "吾輩は猫である。"

inputs = tokenizer(line, return_tensors="pt").to(model.device)

print(tokenizer.decode(inputs["input_ids"][0]))
[CLS] 吾 輩 は 猫 で あ る 。 [SEP]

outputs = bertjapanese(**inputs)
```

该模型由 [cl-tohoku](https://huggingface.co/cl-tohoku) 贡献。

此实现与 BERT 相同，区别仅在于分词方法。有关 API 参考信息，请参阅 [BERT 文档](bert)。

## BertJapaneseTokenizer[[transformers.BertJapaneseTokenizer]]

#### transformers.BertJapaneseTokenizer[[transformers.BertJapaneseTokenizer]]

```python
transformers.BertJapaneseTokenizer(vocab_file, spm_file = None, do_lower_case = False, do_word_tokenize = True, do_subword_tokenize = True, word_tokenizer_type = 'basic', subword_tokenizer_type = 'wordpiece', never_split = None, unk_token = '[UNK]', sep_token = '[SEP]', pad_token = '[PAD]', cls_token = '[CLS]', mask_token = '[MASK]', mecab_kwargs = None, sudachi_kwargs = None, jumanpp_kwargs = None, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bert_japanese/tokenization_bert_japanese.py#L58)

**参数：**

vocab_file (`str`) : 指向每行一个词片（wordpiece）的词汇表文件的路径。

spm_file (`str`, *可选*) : 包含词汇表的 [SentencePiece](https://github.com/google/sentencepiece) 文件的路径（通常具有 .spm 或 .model 扩展名）。

do_lower_case (`bool`，*可选*，默认为 `True`)：是否将输入转换为小写。仅在 do_basic_tokenize=True 时生效。

do_word_tokenize (`bool`，*可选*，默认为 `True`)：是否执行词元化。

do_subword_tokenize (`bool`，*可选*，默认为 `True`)：是否执行子词分词。

word_tokenizer_type (`str`，*可选*，默认为 `"basic"`)：词法分析器的类型。可选值包括 ["basic", "mecab", "sudachi", "jumanpp"]。

subword_tokenizer_type (`str`，*可选*，默认为 `"wordpiece"`)：子词分词器的类型。可选值包括 ["wordpiece", "character", "sentencepiece",]。

mecab_kwargs (`dict`, *可选*) : 传递给 `MecabTokenizer` 构造函数的字典。

sudachi_kwargs (`dict`, *可选*) : 传递给 `SudachiTokenizer` 构造函数的字典。

jumanpp_kwargs (`dict`, *可选*) : 传递给 `JumanppTokenizer` 构造函数的字典。

为日文文本构建一个 BERT 分词器。

该分词器继承自 [PreTrainedTokenizer](/docs/transformers/main/zh/main_classes/tokenizer#transformers.PythonBackend)，其中包含了大部分主要方法。用户应参考该父类以获取有关这些方法的更多信息。

#### convert_tokens_to_string[[transformers.BertJapaneseTokenizer.convert_tokens_to_string]]

```python
convert_tokens_to_string(tokens)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bert_japanese/tokenization_bert_japanese.py#L256)

将单个字符串中的标记序列（字符串）进行转换。

