# myt5

## 概述

myt5 模型由 Tomasz Limisiewicz、Terra Blevins、Hila Gonen、Orevaoghene Ahia 和 Luke Zettlemoyer 在 [MYTE: Morphology-Driven Byte Encoding for Better and Fairer Multilingual Language Modeling](https://huggingface.co/papers/2403.10691) 中提出。MyT5（**My**te **T5**）是一个基于 T5 架构的多语言语言模型。该模型使用我们论文中描述的由**m**orphology 驱动的**byte**（**MYTE**）表示。与 UTF-8 编码中使用的字符不同，**MYTE** 使用对应于词素的码点。作为前提条件，我们使用无监督形态学切分（[Morfessor](https://aclanthology.org/E14-2006.pdf)）来获取 99 种语言的词素清单。但是，当使用来自 hub 的预定义词素清单时（参见：[Tomli/myt5-base](https://huggingface.co/Tomlim/myt5-base)），不需要进行形态学切分步骤。

该论文的摘要如下：

*多语言语言建模中的一个关键考量是如何最佳地表示具有不同词汇和文字系统的语言。尽管当前的文本编码方法涵盖了世界上大多数书写系统，但它们对西方高资源语言存在偏见。因此，代表性不足的语言的文本往往被切分为由语言学上无意义的单元组成的长序列。为了解决这种不均衡，我们提出了一种新的范式，该范式使用跨不同语言大小一致的片段来编码相同的信息。我们的编码约定（MYTE）基于词素，因为与之前方法中使用的字符相比，词素的词表在不同语言之间更加均衡。我们证明，MYTE 为所有 99 种分析语言生成了更短的编码，其中非欧洲语言和非拉丁文字系统的改进最为显著。这进而提升了多语言语言模型的性能，并缩小了不同语言之间的困惑度差距。*

该模型由 [Tomasz Limisiewicz](https://huggingface.co/Tomlim) 贡献。原始代码可在[此处](https://github.com/tomlimi/MYTE)找到。

## MyT5Tokenizer[[transformers.MyT5Tokenizer]]

#### transformers.MyT5Tokenizer[[transformers.MyT5Tokenizer]]

```python
transformers.MyT5Tokenizer(vocab_file, eos_token = '</s>', unk_token = '<unk>', pad_token = '<pad>', extra_ids = 125, additional_special_tokens = None, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/myt5/tokenization_myt5.py#L133)

**参数：**

vocab_file (`str`) : 包含字节重写规则的文件。

eos_token (`str`，*可选*，默认为 `"</s>"`)：序列结束标记。

unk_token (`str`，*可选*，默认为 `"<unk>"`)：未知标记。不在词汇表中的标记无法转换为 ID，因此会被设置为该标记。

pad_token (`str`，*可选*，默认为 `"<pad>"`)：用于填充的标记，例如在对长度不同的序列进行批处理时。

extra_ids (`int`, *可选*，默认为 125)：在词汇表末尾添加的额外 ID 数量，用作哨兵。这些令牌可通过 "" 访问，其中 "{%d}" 是 0 到 extra_ids-1 之间的数字。额外令牌从词汇表的末尾索引到开头（"" 是词汇表中的最后一个令牌，类似于 ByT5 预处理，参见 [此处](https://github.com/google-research/text-to-text-transfer-transformer/blob/9fd7b14a769417be33bc6c850f9598764913c833/t5/data/preprocessors.py#L2117)）。

additional_special_tokens (`list[str]`, *可选*) : 分词器使用的额外特殊标记。

构建一个 MyT5 分词器。

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

#### build_inputs_with_special_tokens[[transformers.MyT5Tokenizer.build_inputs_with_special_tokens]]

```python
build_inputs_with_special_tokens(token_ids_0: list[int], token_ids_1: list[int] | None = None)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/myt5/tokenization_myt5.py#L282)

**参数：**

token_ids_0 (`list[int]`) : 将添加特殊标记的 ID 列表。

token_ids_1 (`list[int]`, *可选*) : 用于序列对的可选第二个 ID 列表。

**返回：** `list[int]`

包含相应特殊标记的[输入 ID](../glossary#input-ids)列表。

通过拼接并添加特殊标记，从单个序列或序列对构建用于序列分类任务的模型输入。序列的格式如下：

- 单条序列：`X </s>`
- 序列对：`A </s> B </s>`

#### get_special_tokens_mask[[transformers.MyT5Tokenizer.get_special_tokens_mask]]

```python
get_special_tokens_mask(token_ids_0: list[int], token_ids_1: list[int] | None = None, already_has_special_tokens: bool = False)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/myt5/tokenization_myt5.py#L220)

**参数：**

token_ids_0 (`list[int]`) : ID 列表。

token_ids_1 (`list[int]`, *可选*) : 用于序列对的可选第二个 ID 列表。

already_has_special_tokens (`bool`，*可选*，默认为 `False`)：标记列表是否已使用模型的特殊标记进行格式化。

**返回：** `list[int]`

一个整数列表，取值范围为 [0, 1]：1 表示特殊标记，0 表示序列标记。

从未添加特殊标记的标记列表中获取序列 ID。当使用分词器的 `prepare_for_model` 方法添加特殊标记时，会调用此方法。

#### create_token_type_ids_from_sequences[[transformers.MyT5Tokenizer.create_token_type_ids_from_sequences]]

```python
create_token_type_ids_from_sequences(token_ids_0: list[int], token_ids_1: list[int] | None = None)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/myt5/tokenization_myt5.py#L259)

**参数：**

token_ids_0 (`list[int]`) : ID 列表。

token_ids_1 (`list[int]`, *可选*) : 用于序列对的可选第二个 ID 列表。

**返回：** `list[int]`

零列表。

根据传入的两个序列创建掩码，用于序列对分类任务。MyT5 不使用 token type ids，因此返回一个全零列表。

#### save_vocabulary[[transformers.MyT5Tokenizer.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/myt5/tokenization_myt5.py#L366)

