# BERTweet

## BERTweet

[BERTweet](https://huggingface.co/papers/2005.10200) comparte la misma arquitectura que [BERT-base](./bert), pero se preentrena como [RoBERTa](./roberta) en tweets en inglés. Rinde muy bien en tareas relacionadas con tweets, como la etiquetado de partes de la oración, el reconocimiento de entidades nombradas y la clasificación de texto.

Puedes encontrar todos los puntos de control originales de BERTweet bajo la organización [VinAI Research](https://huggingface.co/vinai?search_models=BERTweet).

> [!TIP]
> Consulte la documentación de [BERT](./bert) para más ejemplos de cómo aplicar BERTweet a diferentes tareas de lenguaje.

El siguiente ejemplo demuestra cómo predecir el token `<mask>` con [Pipeline](/docs/transformers/v5.23.0/es/main_classes/pipelines#transformers.Pipeline), [AutoModel](/docs/transformers/v5.23.0/es/model_doc/auto#transformers.AutoModel) y desde la línea de comandos.

```python
from transformers import pipeline

pipeline = pipeline(
    task="fill-mask",
    model="vinai/bertweet-base",
    device=0
)
pipeline("Plants create <mask> through a process known as photosynthesis.")
```

```python
import torch

from transformers import AutoModelForMaskedLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(
   "vinai/bertweet-base",
)
model = AutoModelForMaskedLM.from_pretrained(
    "vinai/bertweet-base",
    device_map="auto"
)
inputs = tokenizer("Plants create <mask> through a process known as photosynthesis.", return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs)
    predictions = outputs.logits

masked_index = torch.where(inputs['input_ids'] == tokenizer.mask_token_id)[1]
predicted_token_id = predictions[0, masked_index].argmax(dim=-1)
predicted_token = tokenizer.decode(predicted_token_id)

print(f"The predicted token is: {predicted_token}")
```

## Notas

- Utilice [AutoTokenizer](/docs/transformers/v5.23.0/es/model_doc/auto#transformers.AutoTokenizer) o [BertweetTokenizer](/docs/transformers/v5.23.0/es/model_doc/bertweet#transformers.BertweetTokenizer) porque viene precargado con un vocabulario personalizado adaptado a tokens específicos de tweets, como hashtags (#), menciones (@), emojis y abreviaturas comunes. Asegúrese de instalar también la biblioteca [emoji](https://pypi.org/project/emoji/).
- Las entradas deben rellenarse a la derecha (`padding="max_length"`) porque BERT utiliza incrustaciones de posición absoluta.

## BertweetTokenizer[[transformers.BertweetTokenizer]]

#### transformers.BertweetTokenizer[[transformers.BertweetTokenizer]]

```python
transformers.BertweetTokenizer(vocab_file, merges_file, normalization = False, bos_token = '<s>', eos_token = '</s>', sep_token = '</s>', cls_token = '<s>', unk_token = '<unk>', pad_token = '<pad>', mask_token = '<mask>', **kwargs)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/bertweet/tokenization_bertweet.py#L51)

**Parámetros:**

vocab_file (`str`) : Ruta al archivo de vocabulario.

merges_file (`str`) : Ruta al archivo de fusiones.

normalization (`bool`, *opcional*, valor predeterminado `False`) : Indica si se debe aplicar o no un preprocesamiento de normalización.

bos_token (`str`, *opcional*, valor predeterminado `"<s>"`) : El token de inicio de secuencia que se utilizó durante el preentrenamiento. Puede usarse como token de clasificador de secuencias. Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el inicio de la secuencia. El token que se utiliza es `cls_token`.

eos_token (`str`, *opcional*, valor predeterminado `"</s>"`) : El token de fin de secuencia. Al construir una secuencia con tokens especiales, este no es el token que se utiliza para el fin de secuencia. El token que se utiliza es `sep_token`.

sep_token (`str`, *opcional*, valor predeterminado `"</s>"`) : El token separador, que se utiliza al construir una secuencia a partir de varias secuencias, por ejemplo, dos secuencias para la clasificación de secuencias o un texto y una pregunta para la respuesta a preguntas. También se utiliza como el último token de una secuencia construida con tokens especiales.

cls_token (`str`, *opcional*, valor predeterminado `"<s>"`) : El token clasificador que se utiliza al realizar clasificación de secuencias (clasificación de la secuencia completa en lugar de clasificación por token). Es el primer token de la secuencia cuando se construye con tokens especiales.

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.

mask_token (`str`, *opcional*, valor predeterminado `"<mask>"`) : El token utilizado para enmascarar valores. Este es el token que se emplea al entrenar este modelo con modelado de lenguaje enmascarado. Es el token que el modelo intentará predecir.

Construye un tokenizador BERTweet, usando Byte-Pair-Encoding.

Este tokenizador hereda de [PreTrainedTokenizer](/docs/transformers/v5.23.0/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.

#### add_from_file[[transformers.BertweetTokenizer.add_from_file]]

```python
add_from_file(f)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/bertweet/tokenization_bertweet.py#L332)

Carga un diccionario existente desde un archivo de texto y añade sus símbolos a esta instancia.

#### convert_tokens_to_string[[transformers.BertweetTokenizer.convert_tokens_to_string]]

```python
convert_tokens_to_string(tokens)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/bertweet/tokenization_bertweet.py#L291)

Convierte una secuencia de tokens (cadena) en una sola cadena.

#### normalizeToken[[transformers.BertweetTokenizer.normalizeToken]]

```python
normalizeToken(token)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/bertweet/tokenization_bertweet.py#L264)

Normalizar tokens en un Tweet

#### normalizeTweet[[transformers.BertweetTokenizer.normalizeTweet]]

```python
normalizeTweet(tweet)
```

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/bertweet/tokenization_bertweet.py#L230)

Normalizar un Tweet sin procesar

#### save_vocabulary[[transformers.BertweetTokenizer.save_vocabulary]]

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

[Fuente](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/bertweet/tokenization_bertweet.py#L302)

Guarde los archivos de vocabulario y fusiones en un directorio.

