# BARTpho

[BARTpho](https://huggingface.co/papers/2109.09701) é um modelo de sequência-para-sequência em grande escala para o vietnamita. Ele oferece uma versão baseada em palavras e uma baseada em sílabas. Este modelo é construído sobre a grande arquitetura [BART](./bart) com seu pré-treinamento de desruido.

Você pode encontrar todos os checkpoints originais na organização [VinAI](https://huggingface.co/vinai/models?search=bartpho).

> [!TIP]
> Este modelo foi contribuído por [dqnguyen](https://huggingface.co/dqnguyen). Consulte a barra lateral à direita para ver exemplos de como aplicar o BARTpho a diferentes tarefas de linguagem.

O exemplo abaixo demonstra como resumir texto com [Pipeline](/docs/transformers/main/pt/main_classes/pipelines#transformers.Pipeline) ou a classe [AutoModel](/docs/transformers/main/pt/model_doc/auto#transformers.AutoModel).

```python
from transformers import AutoTokenizer, BartForConditionalGeneration

tokenizer = AutoTokenizer.from_pretrained(
    "vinai/bartpho-word",
)
model = BartForConditionalGeneration.from_pretrained(
    "vinai/bartpho-word",
    device_map="auto",
)

text = """
Quang tổng hợp hay gọi tắt là quang hợp là quá trình thu nhận và chuyển hóa năng lượng ánh sáng Mặt trời của thực vật,
tảo và một số vi khuẩn để tạo ra hợp chất hữu cơ phục vụ bản thân cũng như làm nguồn thức ăn cho hầu hết các sinh vật
trên Trái Đất. Quang hợp trong thực vật thường liên quan đến chất tố diệp lục màu xanh lá cây và tạo ra oxy như một sản phẩm phụ
"""
inputs = tokenizer(text, return_tensors="pt").to(model.device)

outputs = model.generate(inputs["input_ids"], num_beams=2, min_length=0, max_length=20)
tokenizer.batch_decode(outputs, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
```

## Observações

- BARTpho usa a grande arquitetura do BART com uma camada adicional de normalização de camada no topo do codificador e do decodificador. As classes específicas do BART devem ser substituídas pelas classes específicas do mBART.
- Esta implementação trata apenas a tokenização por meio do arquivo `monolingual_vocab_file`. Trata-se de um subconjunto específico do vietnamita dos tipos de tokens extraídos desse vocabulário multilíngue. Se você deseja usar este tokenizador para outro idioma, substitua o `monolingual_vocab_file` por um especializado no seu idioma de destino.

## BartphoTokenizer[[transformers.BartphoTokenizer]]

#### transformers.BartphoTokenizer[[transformers.BartphoTokenizer]]

```python
transformers.BartphoTokenizer(vocab_file, monolingual_vocab_file, bos_token = '<s>', eos_token = '</s>', sep_token = '</s>', cls_token = '<s>', unk_token = '<unk>', pad_token = '<pad>', mask_token = '<mask>', sp_model_kwargs: dict[str, typing.Any] | None = None, **kwargs)
```

[Origem](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bartpho/tokenization_bartpho.py#L32)

**Parâmetros:**

vocab_file (`str`) : Caminho para o arquivo de vocabulário. Este vocabulário é o modelo SentencePiece pré-treinado disponível no XLM-RoBERTa multilíngue, também utilizado no mBART, composto por 250 mil tipos.

monolingual_vocab_file (`str`) : Path to the monolingual vocabulary file. This monolingual vocabulary consists of Vietnamese-specialized types extracted from the multilingual vocabulary vocab_file of 250K types.

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.

sp_model_kwargs (`dict`, *opcional*) : Será passado para o método `SentencePieceProcessor.__init__()`. O [Python wrapper for SentencePiece](https://github.com/google/sentencepiece/tree/master/python) pode ser usado, entre outras coisas, para definir:  - `enable_sampling`: Habilita a regularização de subpalavras. - `nbest_size`: Parâmetros de amostragem para unigramas. Inválido para BPE-Dropout.  - `nbest_size = {0,1}`: Nenhuma amostragem é realizada. - `nbest_size > 1`: amostra dos resultados de nbest_size. - `nbest_size < 0`: assume que nbest_size é infinito e amostra de todas as hipóteses (lattice) usando o algoritmo forward-filtering-and-backward-sampling.  - `alpha`: Parâmetro de suavização para amostragem de unigramas e probabilidade de dropout para operações de mesclagem no BPE-dropout.

sp_model (`SentencePieceProcessor`) : o processador *SentencePiece* utilizado em todas as conversões (string, tokens e IDs).

Adaptado de [XLMRobertaTokenizer](/docs/transformers/main/pt/model_doc/xlm-roberta#transformers.XLMRobertaTokenizer). Baseado em [SentencePiece](https://github.com/google/sentencepiece).

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.

#### build_inputs_with_special_tokens[[transformers.BartphoTokenizer.build_inputs_with_special_tokens]]

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

[Origem](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bartpho/tokenization_bartpho.py#L160)

**Parâmetros:**

token_ids_0 (`list[int]`) : Lista de IDs aos quais os tokens especiais serão adicionados.

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

**Retorna:** `list[int]`

Lista de [IDs de entrada](../glossary#input-ids) com os tokens especiais apropriados.

Construa as entradas do modelo a partir de uma sequência ou de um par de sequências para tarefas de classificação de sequência, concatenando e adicionando tokens especiais. Uma sequência BARTPho tem o seguinte formato:

- sequência única: `<s> X </s>`
- par de sequências: `<s> A </s></s> B </s>`

#### create_token_type_ids_from_sequences[[transformers.BartphoTokenizer.create_token_type_ids_from_sequences]]

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

[Origem](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bartpho/tokenization_bartpho.py#L214)

**Parâmetros:**

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

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

**Retorna:** `list[int]`

Lista de zeros.

Cria uma máscara a partir das duas sequências passadas para ser usada em uma tarefa de classificação de par de sequências. O BARTPho não faz uso de ids de tipo de token, portanto, uma lista de zeros é retornada.

#### get_special_tokens_mask[[transformers.BartphoTokenizer.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)
```

[Origem](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bartpho/tokenization_bartpho.py#L186)

**Parâmetros:**

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

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

already_has_special_tokens (`bool`, *opcional*, padrão `False`) : Indica se a lista de tokens já está formatada com tokens especiais para o modelo.

**Retorna:** `list[int]`

Uma lista de inteiros no intervalo [0, 1]: 1 para um token especial, 0 para um token de sequência.

Recupera os ids de sequência de uma lista de tokens que não possui tokens especiais adicionados. Este método é chamado ao adicionar tokens especiais usando o método `prepare_for_model` do tokenizer.

#### get_vocab[[transformers.BartphoTokenizer.get_vocab]]

```python
get_vocab()
```

[Origem](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bartpho/tokenization_bartpho.py#L244)

Substituir para usar o vocabulário do fairseq

