# BARTpho

[BARTpho](https://huggingface.co/papers/2109.09701) adalah model sequence-to-sequence berskala besar untuk bahasa Vietnam. Model ini menyediakan versi berbasis kata dan versi berbasis suku kata. Model ini dibangun di atas arsitektur besar [BART](./bart) dengan pra-pelatihan denoising-nya.

Anda dapat menemukan semua checkpoint asli di bawah organisasi [VinAI](https://huggingface.co/vinai/models?search=bartpho).

> [!TIP]
> Model ini disumbangkan oleh [dqnguyen](https://huggingface.co/dqnguyen). Lihat bilah sisi kanan untuk contoh cara menerapkan BARTpho ke berbagai tugas bahasa.

Contoh di bawah ini menunjukkan cara merangkum teks dengan [Pipeline](/docs/transformers/main/id/main_classes/pipelines#transformers.Pipeline) atau kelas [AutoModel](/docs/transformers/main/id/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]
```

## Catatan

- BARTpho menggunakan arsitektur besar BART dengan lapisan normalisasi tambahan di atas encoder dan decoder. Kelas-kelas spesifik BART harus diganti dengan kelas-kelas spesifik mBART.
- Implementasi ini hanya menangani tokenisasi melalui file `monolingual_vocab_file`. Ini adalah subset tipe token khusus bahasa Vietnam yang diambil dari kosakata multibahasa tersebut. Jika Anda ingin menggunakan tokenizer ini untuk bahasa lain, ganti `monolingual_vocab_file` dengan file yang khusus untuk bahasa target Anda.

## 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)
```

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

**Parameter:**

vocab_file (`str`) : Path ke file vocabulary. Vocabulary ini adalah model SentencePiece yang telah dilatih sebelumnya, tersedia dari multilingual XLM-RoBERTa, dan juga digunakan dalam mBART, yang terdiri dari 250K tipe.

monolingual_vocab_file (`str`) : Path ke file kosakata monolingual. Kosakata monolingual ini terdiri dari tipe-tipe yang dikhususkan untuk bahasa Vietnam, yang diekstrak dari kosakata multibahasa vocab_file yang berisi 250K tipe.

bos_token (`str`, *opsional*, defaultnya `"<s>"`) : Token awal urutan yang digunakan selama pra-pelatihan. Dapat digunakan sebagai token klasifikator urutan. Saat membangun urutan menggunakan token khusus, ini bukan token yang digunakan untuk awal urutan. Token yang digunakan adalah `cls_token`.

eos_token (`str`, *opsional*, defaultnya `"</s>"`) : Token akhir urutan. Saat membangun urutan menggunakan token khusus, ini bukan token yang digunakan untuk akhir urutan. Token yang digunakan adalah `sep_token`.

sep_token (`str`, *opsional*, defaultnya `"</s>"`) : Token pemisah, yang digunakan saat membangun urutan dari beberapa urutan, misalnya dua urutan untuk klasifikasi urutan atau untuk teks dan pertanyaan untuk penjawaban pertanyaan. Token ini juga digunakan sebagai token terakhir dari urutan yang dibangun dengan token khusus.

cls_token (`str`, *opsional*, defaultnya `"<s>"`) : Token klasifikator yang digunakan saat melakukan klasifikasi urutan (klasifikasi seluruh urutan, bukan klasifikasi per-token). Ini adalah token pertama dari urutan saat dibangun dengan token khusus.

unk_token (`str`, *opsional*, defaultnya `"<unk>"`) : Token yang tidak diketahui. Token yang tidak ada dalam kosakata tidak dapat dikonversi menjadi ID dan akan diset sebagai token ini.

pad_token (`str`, *opsional*, defaultnya `"<pad>"`) : Token yang digunakan untuk padding, misalnya saat membatching urutan dengan panjang yang berbeda.

mask_token (`str`, *opsional*, defaultnya `"<mask>"`) : Token yang digunakan untuk memask nilai. Ini adalah token yang digunakan saat melatih model ini dengan pemodelan bahasa ter-mask. Ini adalah token yang akan coba diprediksi oleh model.

sp_model_kwargs (`dict`, *opsional*) : Akan diteruskan ke metode `SentencePieceProcessor.__init__()`. [Python wrapper for SentencePiece](https://github.com/google/sentencepiece/tree/master/python) dapat digunakan, antara lain, untuk mengatur:  - `enable_sampling`: Mengaktifkan regularisasi subword. - `nbest_size`: Parameter sampling untuk unigram. Tidak valid untuk BPE-Dropout.  - `nbest_size = {0,1}`: Tidak ada sampling yang dilakukan. - `nbest_size > 1`: mengambil sampel dari hasil nbest_size. - `nbest_size < 0`: mengasumsikan bahwa nbest_size tak hingga dan mengambil sampel dari semua hipotesis (lattice) menggunakan algoritma forward-filtering-and-backward-sampling.  - `alpha`: Parameter penghalusan untuk sampling unigram, dan probabilitas dropout dari operasi merge untuk BPE-dropout.

sp_model (`SentencePieceProcessor`) : Pemroses *SentencePiece* yang digunakan untuk setiap konversi (string, token, dan ID).

Diadaptasi dari [XLMRobertaTokenizer](/docs/transformers/main/id/model_doc/xlm-roberta#transformers.XLMRobertaTokenizer). Berbasis pada [SentencePiece](https://github.com/google/sentencepiece).

Tokenizer ini mewarisi dari [PreTrainedTokenizer](/docs/transformers/main/id/main_classes/tokenizer#transformers.PythonBackend) yang berisi sebagian besar metode utama. Pengguna harus merujuk ke superclass ini untuk informasi lebih lanjut mengenai metode-metode tersebut.

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

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

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

**Parameter:**

token_ids_0 (`list[int]`) : Daftar ID tempat token khusus akan ditambahkan.

token_ids_1 (`list[int]`, *opsional*) : Daftar ID kedua opsional untuk pasangan sekuens.

**Mengembalikan:** `list[int]`

Daftar [ID input](../glossary#input-ids) dengan token khusus yang sesuai.

Bangun input model dari satu urutan atau sepasang urutan untuk tugas klasifikasi urutan dengan menggabungkan dan menambahkan token khusus. Urutan BARTPho memiliki format berikut:

- satu urutan: `<s> X </s>`
- pasangan sekuens: `<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[int], token_ids_1: list[int] | None = None)
```

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

**Parameter:**

token_ids_0 (`list[int]`) : Daftar ID.

token_ids_1 (`list[int]`, *opsional*) : Daftar ID kedua opsional untuk pasangan sekuens.

**Mengembalikan:** `list[int]`

Daftar nol.

Buat mask dari dua urutan yang diteruskan untuk digunakan dalam tugas klasifikasi pasangan urutan. BARTPho tidak menggunakan id tipe token, oleh karena itu daftar nol dikembalikan.

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

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

**Parameter:**

token_ids_0 (`list[int]`) : Daftar ID.

token_ids_1 (`list[int]`, *opsional*) : Daftar ID kedua opsional untuk pasangan sekuens.

already_has_special_tokens (`bool`, *opsional*, defaultnya `False`) : Apakah daftar token sudah diformat dengan token khusus untuk model.

**Mengembalikan:** `list[int]`

Daftar bilangan bulat dalam rentang [0, 1]: 1 untuk token khusus, 0 untuk token urutan.

Ambil id urutan dari daftar token yang tidak memiliki token khusus yang ditambahkan. Metode ini dipanggil saat menambahkan token khusus menggunakan metode `prepare_for_model` tokenizer.

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

```python
get_vocab()
```

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

Override untuk menggunakan kosakata fairseq

