# BARTpho

[BARTpho](https://huggingface.co/papers/2109.09701), büyük ölçekli bir Vietnamlı sıra-dan-sıraya (sequence-to-sequence) modelidir. Hem kelime tabanlı hem de hece tabanlı bir sürümü mevcuttur. Bu model, gürültü azaltma ön eğitimiyle birlikte [BART](./bart) büyük mimarisi üzerine inşa edilmiştir.

Tüm orijinal kontrol noktalarını [VinAI](https://huggingface.co/vinai/models?search=bartpho) kuruluşu altında bulabilirsiniz.

> [!TIP]
> Bu model [dqnguyen](https://huggingface.co/dqnguyen) tarafından katkıda bulunmuştur. BARTpho'nun farklı dil görevlerine nasıl uygulanacağına dair örnekler için sağ kenar çubuğuna göz atın.

Aşağıdaki örnek, metni [Pipeline](/docs/transformers/main/tr/main_classes/pipelines#transformers.Pipeline) veya [AutoModel](/docs/transformers/main/tr/model_doc/auto#transformers.AutoModel) sınıfı ile özetlemenin nasıl yapılacağını göstermektedir.

```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]
```

## Notlar

- BARTpho, BART'ın büyük mimarisini, kodlayıcı ve çözücünün üzerine eklenen bir katman normalizasyonu katmanı ile kullanır. BART'a özgü sınıflar, mBART'a özgü sınıflarla değiştirilmelidir.
- Bu uygulama, yalnızca `monolingual_vocab_file` dosyası üzerinden tokenizasyonu işler. Bu, çok dilli sözlükten alınan, Vietnamlaca'ya özgü bir token türü alt kümesidir. Bu tokenizer'ı başka bir dilde kullanmak istiyorsanız, `monolingual_vocab_file`'i hedef dilinize özel olanıyla değiştirin.

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

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

**Parametreler:**

vocab_file (`str`) : Sözlük dosyasının yolu. Bu sözlük, mBART'ta da kullanılan, 250K türden oluşan, çok dilli XLM-RoBERTa'dan elde edilebilen önceden eğitilmiş SentencePiece modelidir.

monolingual_vocab_file (`str`) : Tek dilli sözlük dosyasının yolu. Bu tek dilli sözlük, 250K türden oluşan çok dilli vocab_file sözlüğünden çıkarılan Vietnamlaca'ya özgü türlerden oluşur.

bos_token (`str`, *isteğe bağlı*, varsayılan `"<s>"`) : Ön eğitim sırasında kullanılan dizinin başlangıç jetonu. Bir dizi sınıflandırıcı jetonu olarak kullanılabilir. Özel jetonlar kullanılarak bir dizi oluşturulduğunda, dizinin başlangıcı için kullanılan jeton bu değildir. Kullanılan jeton `cls_token`'dur.

eos_token (`str`, *isteğe bağlı*, varsayılan `"</s>"`) : Sıra sonu belirteci. Özel belirteçler kullanılarak bir sıra oluşturulduğunda, sıra sonu için kullanılan belirteç bu değildir. Kullanılan belirteç `sep_token`'tur.

sep_token (`str`, *isteğe bağlı*, varsayılan `"</s>"`) : Birden fazla diziden bir dizi oluşturulurken kullanılan ayraç belirteci, örneğin dizi sınıflandırması için iki dizi veya soru cevaplamada bir metin ve bir soru için. Özel belirteçlerle oluşturulan bir dizinin son belirteci olarak da kullanılır.

cls_token (`str`, *isteğe bağlı*, varsayılan `"<s>"`) : Sıralı sınıflandırma (token başına sınıflandırma yerine tüm sıranın sınıflandırılması) yapılırken kullanılan sınıflandırıcı jetonu. Özel jetonlarla oluşturulduğunda sıranın ilk jetonudur.

unk_token (`str`, *isteğe bağlı*, varsayılan `"<unk>"`) : Bilinmeyen token. Sözlükte yer almayan bir token, bir kimliğe dönüştürülemez ve bunun yerine bu token olarak ayarlanır.

pad_token (`str`, *isteğe bağlı*, varsayılan `"<pad>"`) : Dolgu için kullanılan jeton, örneğin farklı uzunluklardaki dizileri toplu işleme (batching) sırasında.

mask_token (`str`, *isteğe bağlı*, varsayılan `"<mask>"`) : Değerleri maskelemek için kullanılan belirteç. Bu, modelin maskeli dil modelleme ile eğitildiğinde kullanılan belirteçtir. Modelin tahmin etmeye çalışacağı belirteç budur.

sp_model_kwargs (`dict`, *isteğe bağlı*) : `SentencePieceProcessor.__init__()` yöntemine aktarılacaktır. [SentencePiece'in Python sarmalayıcısı](https://github.com/google/sentencepiece/tree/master/python), aşağıdakiler de dahil olmak üzere çeşitli ayarları yapmak için kullanılabilir: - `enable_sampling`: Alt kelime düzenlemesini (subword regularization) etkinleştirir. - `nbest_size`: Unigram için örneklem parametreleri. BPE-Dropout için geçersizdir. - `nbest_size = {0,1}`: Örneklem yapılmaz. - `nbest_size > 1`: nbest_size sonuçlarından örneklem yapılır. - `nbest_size < 0`: nbest_size'ın sonsuz olduğu varsayılır ve forward-filtering-and-backward-sampling algoritması kullanılarak tüm hipotezlerden (lattice) örneklem yapılır. - `alpha`: Unigram örneklemesi için yumuşatma parametresi ve BPE-dropout için birleştirme işlemlerinin atılma (dropout) olasılığı.

sp_model (`SentencePieceProcessor`) : Her dönüştürme (dize, jeton ve kimlikler) için kullanılan *SentencePiece* işleyicisi.

[XLMRobertaTokenizer](/docs/transformers/main/tr/model_doc/xlm-roberta#transformers.XLMRobertaTokenizer)'dan uyarlanmıştır. [SentencePiece](https://github.com/google/sentencepiece) tabanlıdır.

Bu tokenizer, ana yöntemlerin çoğunu içeren [PreTrainedTokenizer](/docs/transformers/main/tr/main_classes/tokenizer#transformers.PythonBackend) sınıfından devralır. Kullanıcıların bu yöntemler hakkında daha fazla bilgi için bu üst sınıfa başvurması gerekir.

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

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

**Parametreler:**

token_ids_0 (`list[int]`) : Özel jetonların ekleneceği kimliklerin listesi.

token_ids_1 (`list[int]`, *isteğe bağlı*) : Sıralı çiftler için isteğe bağlı ikinci kimlik listesi.

**Dönüş:** `list[int]`

Uygun özel jetonlarla [girdi kimlikleri](../glossary#input-ids) listesi.

Sınıflandırma görevleri için bir dizi veya dizi çiftinden model girdilerini birleştirerek ve özel jetonlar ekleyerek oluşturun. BARTPho dizisi aşağıdaki biçime sahiptir:

- tek dizi: `<s> X </s>`
- dizi çifti: `<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)
```

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

**Parametreler:**

token_ids_0 (`list[int]`) : Kimlik listesi.

token_ids_1 (`list[int]`, *isteğe bağlı*) : Sıralı çiftler için isteğe bağlı ikinci kimlik listesi.

**Dönüş:** `list[int]`

Sıfırlar listesi.

Sıralama çifti sınıflandırma görevinde kullanılacak şekilde, iletilen iki diziden bir maske oluşturun. BARTPho, token türü kimliklerini kullanmadığından, sıfırlardan oluşan bir liste döndürülür.

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

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

**Parametreler:**

token_ids_0 (`list[int]`) : Kimlik listesi.

token_ids_1 (`list[int]`, *isteğe bağlı*) : Sıralı çiftler için isteğe bağlı ikinci kimlik listesi.

already_has_special_tokens (`bool`, *isteğe bağlı*, varsayılan `False`) : Token listesinin, model için özel token'larla zaten biçimlendirilmiş olup olmadığı.

**Dönüş:** `list[int]`

[0, 1] aralığında tamsayıların bir listesi: özel bir jeton için 1, bir dizi jetonu için 0.

Özel token eklenmemiş bir token listesinden dizi kimliklerini alır. Bu yöntem, tokenizer'ın `prepare_for_model` yöntemi kullanılarak özel token eklenirken çağrılır.

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

```python
get_vocab()
```

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

fairseq sözlüğünü kullanmak için geçersiz kıl

