# PhoBERT

## Ikhtisar

Model PhoBERT diusulkan dalam [PhoBERT: Pre-trained language models for Vietnamese](https://huggingface.co/papers/2003.00744) oleh Dat Quoc Nguyen, Anh Tuan Nguyen.

Abstrak dari makalah tersebut adalah sebagai berikut:

*Kami memperkenalkan PhoBERT dalam dua versi, PhoBERT-base dan PhoBERT-large, model bahasa monolingual berskala besar pertama yang tersedia secara publik dan telah dilatih sebelumnya (pre-trained) untuk bahasa Vietnam. Hasil eksperimen menunjukkan bahwa PhoBERT secara konsisten melampaui model multibahasa pre-trained terbaik terbaru, yaitu XLM-R (Conneau et al., 2020), serta meningkatkan state-of-the-art pada berbagai tugas NLP yang spesifik untuk bahasa Vietnam, termasuk Part-of-speech tagging, Dependency parsing, Named-entity recognition, dan Natural language inference.*

Model ini disumbangkan oleh [dqnguyen](https://huggingface.co/dqnguyen). Kode aslinya dapat ditemukan [di sini](https://github.com/VinAIResearch/PhoBERT).

## Contoh penggunaan

```python
import torch

from transformers import AutoModel, AutoTokenizer

phobert = AutoModel.from_pretrained("vinai/phobert-base", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("vinai/phobert-base")

# INPUT TEXT MUST BE ALREADY WORD-SEGMENTED!
line = "Tôi là sinh_viên trường đại_học Công_nghệ ."

input_ids = torch.tensor([tokenizer.encode(line)])

with torch.no_grad():
    features = phobert(input_ids)  # Models outputs are now tuples
```

Implementasi PhoBERT sama dengan BERT, kecuali untuk tokenisasi. Lihat [dokumentasi BERT](bert) untuk informasi tentang kelas konfigurasi dan parameternya. Tokenizer khusus PhoBERT didokumentasikan di bawah.

## PhobertTokenizer[[transformers.PhobertTokenizer]]

#### transformers.PhobertTokenizer[[transformers.PhobertTokenizer]]

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

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/phobert/tokenization_phobert.py#L49)

**Parameter:**

vocab_file (`str`) : Path ke file kosakata.

merges_file (`str`) : Path ke file merges.

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.

Konstruksi tokenizer PhoBERT. Berbasis Byte-Pair-Encoding.

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.

#### add_from_file[[transformers.PhobertTokenizer.add_from_file]]

```python
add_from_file(f)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/phobert/tokenization_phobert.py#L325)

Memuat kamus yang sudah ada dari file teks dan menambahkan simbolnya ke instance ini.

#### build_inputs_with_special_tokens[[transformers.PhobertTokenizer.build_inputs_with_special_tokens]]

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

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/phobert/tokenization_phobert.py#L144)

**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 PhoBERT memiliki format berikut:

- satu urutan: `<s> X </s>`
- pasangan sekuens: `<s> A </s></s> B </s>`

#### convert_tokens_to_string[[transformers.PhobertTokenizer.convert_tokens_to_string]]

```python
convert_tokens_to_string(tokens)
```

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/phobert/tokenization_phobert.py#L291)

Mengonversi urutan token (string) dalam satu string.

#### create_token_type_ids_from_sequences[[transformers.PhobertTokenizer.create_token_type_ids_from_sequences]]

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

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/phobert/tokenization_phobert.py#L198)

**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. PhoBERT tidak menggunakan id tipe token, oleh karena itu daftar nol dikembalikan.

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

[Sumber](https://github.com/huggingface/transformers/blob/main/src/transformers/models/phobert/tokenization_phobert.py#L170)

**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.

