# myt5

## Resumen

El modelo myt5 se propuso en [MYTE: Morphology-Driven Byte Encoding for Better and Fairer Multilingual Language Modeling](https://huggingface.co/papers/2403.10691) de Tomasz Limisiewicz, Terra Blevins, Hila Gonen, Orevaoghene Ahia y Luke Zettlemoyer. MyT5 (**My**te **T5**) es un modelo de lenguaje multilingüe basado en la arquitectura T5. El modelo utiliza una representación **m**orfológicamente dirigida de **byte** (**MYTE**) descrita en nuestro artículo. **MYTE** utiliza puntos de código correspondientes a morfemas, en contraste con los caracteres utilizados en la codificación UTF-8. Como requisito previo, utilizamos segmentación morfológica no supervisada ([Morfessor](https://aclanthology.org/E14-2006.pdf)) para obtener inventarios de morfemas para 99 idiomas. Sin embargo, el paso de segmentación morfológica no es necesario al utilizar el inventario de morfemas predefinido del hub (ver: [Tomli/myt5-base](https://huggingface.co/Tomlim/myt5-base)).

El resumen del artículo es el siguiente:

*Una consideración fundamental en el modelado de lenguaje multilingüe es cómo representar de la mejor manera los idiomas con vocabularios y sistemas de escritura diversos. Aunque los métodos de codificación de texto contemporáneos cubren la mayoría de los sistemas de escritura del mundo, presentan un sesgo hacia los idiomas de alto recurso del Occidente global. Como resultado, los textos de idiomas subrepresentados tienden a segmentarse en secuencias largas de unidades lingüísticamente sin sentido. Para abordar estas disparidades, introducimos un nuevo paradigma que codifica la misma información con segmentos de tamaño consistente a través de diversos idiomas. Nuestra convención de codificación (MYTE) se basa en morfemas, ya que sus inventarios están más equilibrados entre idiomas que los caracteres, que se utilizan en métodos anteriores. Demostramos que MYTE produce codificaciones más cortas para los 99 idiomas analizados, con las mejoras más notables para idiomas no europeos y sistemas de escritura no latinos. Esto, a su vez, mejora el rendimiento de los LM multilingües y reduce la brecha de perplexidad a través de diversos idiomas.*

Este modelo fue aportado por [Tomasz Limisiewicz](https://huggingface.co/Tomlim). El código original se puede encontrar [aquí](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)
```

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

**Parámetros:**

vocab_file (`str`) : El archivo que contiene las reglas de reescritura de bytes.

eos_token (`str`, *opcional*, valor predeterminado `"</s>"`) : El token de fin de secuencia.

unk_token (`str`, *opcional*, valor predeterminado `"<unk>"`) : El token desconocido. Un token que no está en el vocabulario no se puede convertir en un ID y se establece como este token en su lugar.

pad_token (`str`, *opcional*, valor predeterminado `"<pad>"`) : El token utilizado para el relleno, por ejemplo, al agrupar secuencias de diferentes longitudes.

extra_ids (`int`, *opcional*, valor predeterminado 125) : Agrega un número de ids adicionales al final del vocabulario para usarlos como centinelas. Estos tokens son accesibles como "" donde "{%d}" es un número entre 0 y extra_ids-1. Los tokens adicionales se indexan desde el final del vocabulario hasta el principio ("" es el último token del vocabulario, como en el preprocesamiento de ByT5, ver [aquí](https://github.com/google-research/text-to-text-transfer-transformer/blob/9fd7b14a769417be33bc6c850f9598764913c833/t5/data/preprocessors.py#L2117)).

additional_special_tokens (`list[str]`, *opcional*) : Tokens especiales adicionales utilizados por el tokenizador.

Construya un tokenizador MyT5.

Este tokenizador hereda de [PreTrainedTokenizer](/docs/transformers/main/es/main_classes/tokenizer#transformers.PythonBackend), que contiene la mayoría de los métodos principales. Los usuarios deben consultar esta superclase para obtener más información sobre dichos métodos.

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

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

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

**Parámetros:**

token_ids_0 (`list[int]`) : Lista de IDs a los que se les añadirán los tokens especiales.

token_ids_1 (`list[int]`, *opcional*) : Lista opcional de IDs para pares de secuencias.

**Devuelve:** `list[int]`

Lista de [ID de entrada](../glossary#input-ids) con los tokens especiales apropiados.

Construye las entradas del modelo a partir de una secuencia o de un par de secuencias para tareas de clasificación de secuencias, concatenándolas y añadiendo tokens especiales. Una secuencia tiene el siguiente formato:

- secuencia única: `X </s>`
- par de secuencias: `A </s> B </s>`

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

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

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

**Parámetros:**

token_ids_0 (`list[int]`) : Lista de IDs.

token_ids_1 (`list[int]`, *opcional*) : Lista opcional de IDs para pares de secuencias.

already_has_special_tokens (`bool`, *opcional*, valor predeterminado `False`) : Indica si la lista de tokens ya está formateada con tokens especiales para el modelo.

**Devuelve:** `list[int]`

Una lista de enteros en el rango [0, 1]: 1 para un token especial, 0 para un token de secuencia.

Obtiene los ids de secuencia de una lista de tokens a la que no se le han añadido tokens especiales. Este método se llama al añadir tokens especiales mediante el método `prepare_for_model` del tokenizer.

#### 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, token_ids_1: list[int] | None = None)
```

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

**Parámetros:**

token_ids_0 (`list[int]`) : Lista de IDs.

token_ids_1 (`list[int]`, *opcional*) : Lista opcional de IDs para pares de secuencias.

**Devuelve:** `list[int]`

Lista de ceros.

Crea una máscara a partir de las dos secuencias pasadas para su uso en una tarea de clasificación de pares de secuencias. MyT5 no utiliza ids de tipo de token, por lo que se devuelve una lista de ceros.

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

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

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

