# BERTweet

## BERTweet

[BERTweet](https://huggingface.co/papers/2005.10200) compartilha a mesma arquitetura do [BERT-base](./bert), mas é pré-treinado como o [RoBERTa](./roberta) em tweets em inglês. Ele apresenta excelente desempenho em tarefas relacionadas a tweets, como marcação de partes do discurso, reconhecimento de entidades nomeadas e classificação de texto.

Você pode encontrar todos os checkpoints originais do BERTweet na organização [VinAI Research](https://huggingface.co/vinai?search_models=BERTweet).

> [!TIP]
> Consulte a documentação do [BERT](./bert) para mais exemplos de como aplicar o BERTweet a diferentes tarefas de linguagem.

O exemplo abaixo demonstra como prever o token `<mask>` com [Pipeline](/docs/transformers/main/pt/main_classes/pipelines#transformers.Pipeline), [AutoModel](/docs/transformers/main/pt/model_doc/auto#transformers.AutoModel) e pela linha de comando.

```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}")
```

## Observações

- Use o [AutoTokenizer](/docs/transformers/main/pt/model_doc/auto#transformers.AutoTokenizer) ou o [BertweetTokenizer](/docs/transformers/main/pt/model_doc/bertweet#transformers.BertweetTokenizer), pois ele vem pré-carregado com um vocabulário personalizado adaptado a tokens específicos de tweets, como hashtags (#), menções (@), emojis e abreviações comuns. Certifique-se também de instalar a biblioteca [emoji](https://pypi.org/project/emoji/).
- As entradas devem ser preenchidas à direita (`padding="max_length"`), pois o BERT usa embeddings de posição 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)
```

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

**Parâmetros:**

vocab_file (`str`) : Caminho para o arquivo de vocabulário.

merges_file (`str`) : Caminho para o arquivo de mesclagens.

normalization (`bool`, *opcional*, padrão `False`) : Se deve ou não aplicar um pré-processamento de normalização.

bos_token (`str`, *opcional*, padrão `"<s>"`) : O token de início de sequência usado durante o pré-treinamento. Pode ser usado como token de classificador de sequência.    Ao construir uma sequência usando tokens especiais, este não é o token utilizado para o início da sequência. O token utilizado é o `cls_token`.

eos_token (`str`, *opcional*, padrão `"</s>"`) : O token de fim de sequência. Ao construir uma sequência usando tokens especiais, este não é o token utilizado para o fim da sequência. O token utilizado é o `sep_token`.

sep_token (`str`, *opcional*, padrão `"</s>"`) : O token separador, usado ao montar uma sequência a partir de múltiplas sequências, por exemplo, duas sequências para classificação de sequência ou um texto e uma pergunta para resposta a perguntas. Também é usado como o último token de uma sequência montada com tokens especiais.

cls_token (`str`, *opcional*, padrão `"<s>"`) : O token de classificador usado na classificação de sequência (classificação da sequência inteira, em vez da classificação por token). É o primeiro token da sequência quando esta é construída com tokens especiais.

unk_token (`str`, *opcional*, padrão `"<unk>"`) : O token desconhecido. Um token que não está no vocabulário não pode ser convertido em um ID e é definido como este token em vez disso.

pad_token (`str`, *opcional*, padrão `"<pad>"`) : O token usado para preenchimento, por exemplo, ao agrupar sequências de comprimentos diferentes.

mask_token (`str`, *opcional*, padrão `"<mask>"`) : O token usado para mascarar valores. Este é o token utilizado ao treinar este modelo com modelagem de linguagem mascarada. É o token que o modelo tentará prever.

Constrói um tokenizador BERTweet, usando Byte-Pair-Encoding.

Este tokenizer herda de [PreTrainedTokenizer](/docs/transformers/main/pt/main_classes/tokenizer#transformers.PythonBackend), que contém a maioria dos métodos principais. Os usuários devem consultar essa superclasse para obter mais informações sobre esses métodos.

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

```python
add_from_file(f)
```

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

Carrega um dicionário existente de um arquivo de texto e adiciona seus símbolos a esta instância.

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

```python
convert_tokens_to_string(tokens)
```

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

Converte uma sequência de tokens (string) em uma única string.

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

```python
normalizeToken(token)
```

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

Normalizar tokens em um Tweet

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

```python
normalizeTweet(tweet)
```

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

Normalizar um Tweet bruto

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

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

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

Salve os arquivos de vocabulário e mesclagens em um diretório.

