# BARTpho

[BARTpho](https://huggingface.co/papers/2109.09701) هو نموذج تسلسل إلى تسلسل كبير الحجم باللغة الفيتنامية. يتوفر منه إصداران: واحد مبني على الكلمات وآخر مبني على المقاطع الصوتية. بُني هذا النموذج على البنية الكبيرة [BART](./bart) مع تدريبه المسبق على إزالة الضوضاء.

يمكنك العثور على جميع نقاط التفتيش الأصلية تحت منظمة [VinAI](https://huggingface.co/vinai/models?search=bartpho).

> [!TIP]
> ساهم [dqnguyen](https://huggingface.co/dqnguyen) في هذا النموذج. اطّلع على الشريط الجانبي الأيمن لمعرفة أمثلة على كيفية تطبيق BARTpho على مهام لغوية مختلفة.

يُظهر المثال أدناه كيفية تلخيص النص باستخدام [Pipeline](/docs/transformers/main/ar/main_classes/pipelines#transformers.Pipeline) أو فئة [AutoModel](/docs/transformers/main/ar/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]
```

## ملاحظات

- يستخدم BARTpho البنية الكبيرة لـ BART مع طبقة تطبيع إضافية فوق المُشفِّر والمُفكِّك. يجب استبدال الفئات الخاصة بـ BART بالفئات الخاصة بـ mBART.
- تعتمد هذه النسخة من التنفيذ على معالجة الترميز (Tokenization) عبر ملف `monolingual_vocab_file` فقط. وهو عبارة عن مجموعة فرعية خاصة باللغة الفيتنامية من أنواع الرموز المستمدة من ذلك المعجم متعدد اللغات. إذا كنت ترغب في استخدام هذا المرمِّز (Tokenizer) للغة أخرى، فاستبدل `monolingual_vocab_file` بملف مخصص للغة الهدف لديك.

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

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bartpho/tokenization_bartpho.py#L32)

**المعاملات:**

vocab_file (`str`) : مسار ملف المفردات. هذا المفردات هو نموذج SentencePiece المُدرَّب مسبقًا المتاح من XLM-RoBERTa متعددة اللغات، والمستخدم أيضًا في mBART، ويتكوّن من 250 ألف نوع.

monolingual_vocab_file (`str`) : مسار ملف المفردات أحادي اللغة. يتكوّن هذا المفردات أحادي اللغة من أنواع متخصصة باللغة الفيتنامية مستخرجة من ملف المفردات متعددة اللغات vocab_file المكوّن من 250 ألف نوع.

bos_token (`str`، *اختياري*، القيمة الافتراضية `"<s>"`) : رمز بداية التسلسل الذي تم استخدامه أثناء التدريب المسبق. يمكن استخدامه كرمز مصنف التسلسل. عند بناء تسلسل باستخدام الرموز الخاصة، هذا ليس الرمز المستخدم لبداية التسلسل. الرمز المستخدم هو `cls_token`.

eos_token (`str`، *اختياري*، القيمة الافتراضية `"</s>"`) : رمز نهاية التسلسل. عند بناء تسلسل باستخدام الرموز الخاصة، هذا ليس الرمز المستخدم لنهاية التسلسل. الرمز المستخدم هو `sep_token`.

sep_token (`str`، *اختياري*، الافتراضي هو `"</s>"`) : رمز الفاصل، الذي يُستخدم عند بناء تسلسل من عدة تسلسلات، مثل تسلسلين لتصنيف التسلسلات، أو نص وسؤال للإجابة على الأسئلة. كما يُستخدم كآخر رمز في تسلسل مبني برموز خاصة.

cls_token (`str`، *اختياري*، القيمة الافتراضية `"<s>"`) : رمز التصنيف الذي يُستخدم عند إجراء تصنيف التسلسل (تصنيف التسلسل بأكمله بدلاً من تصنيف كل رمز على حدة). وهو الرمز الأول في التسلسل عند بناؤه باستخدام الرموز الخاصة.

unk_token (`str`، *اختياري*، القيمة الافتراضية `"<unk>"`) : رمز المجهول. الرمز غير الموجود في قاموس الكلمات لا يمكن تحويله إلى معرّف، لذا يُعيَّن هذا الرمز بدلاً منه.

pad_token (`str`، *اختياري*، القيمة الافتراضية هي `"<pad>"`) : الرمز المستخدم للتعبئة، على سبيل المثال عند تجميع تسلسلات ذات أطوال مختلفة.

mask_token (`str`، *اختياري*، القيمة الافتراضية `"<mask>"`) : الرمز المستخدم لإخفاء القيم. هذا هو الرمز المستخدم عند تدريب هذا النموذج باستخدام نمذجة اللغة المقنّعة. وهو الرمز الذي سيحاول النموذج التنبؤ به.

sp_model_kwargs (`dict`، *اختياري*) : سيتم تمريرها إلى طريقة `SentencePieceProcessor.__init__()`. يمكن استخدام [غلاف Python لـ SentencePiece](https://github.com/google/sentencepiece/tree/master/python)، من بين أمور أخرى، لضبط:  - `enable_sampling`: تفعيل تنسيق تحت الكلمة. - `nbest_size`: معاملات العينة للوحدة الأحادية. غير صالح لـ BPE-Dropout.  - `nbest_size = {0,1}`: لا يتم إجراء أي عينة. - `nbest_size > 1`: يأخذ عينات من نتائج nbest_size. - `nbest_size < 0`: بافتراض أن nbest_size لا نهائي، ويأخذ عينات من جميع الفرضيات (الشبكة) باستخدام خوارزمية التصفية الأمامية والعينة الخلفية.  - `alpha`: معامل التنعيم لعينة الوحدة الأحادية، واحتمالية dropout لعمليات الدمج في BPE-dropout.

sp_model (`SentencePieceProcessor`) : معالج *SentencePiece* المستخدم لكل عملية تحويل (النص، الرموز، والمعرّفات).

مُعدَّل من [XLMRobertaTokenizer](/docs/transformers/main/ar/model_doc/xlm-roberta#transformers.XLMRobertaTokenizer). مبني على [SentencePiece](https://github.com/google/sentencepiece).

يرث هذا المُجزِّئ من [PreTrainedTokenizer](/docs/transformers/main/ar/main_classes/tokenizer#transformers.PythonBackend) التي تحتوي على معظم الطرق الرئيسية. ينبغي للمستخدمين الرجوع إلى هذه الفئة الأصلية لمزيد من المعلومات حول تلك الطرق.

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

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bartpho/tokenization_bartpho.py#L160)

**المعاملات:**

token_ids_0 (`list[int]`) : قائمة بالمعرّفات التي ستُضاف إليها الرموز الخاصة.

token_ids_1 (`list[int]`، *اختياري*) : قائمة ثانية اختيارية من المعرّفات لأزواج التسلسلات.

**يعيد:** `list[int]`

قائمة [معرفات الإدخال](../glossary#input-ids) مع الرموز الخاصة المناسبة.

إنشاء مدخلات النموذج من تسلسل أو زوج من التسلسلات لمهام تصنيف التسلسل عن طريق الربط وإضافة الرموز الخاصة. يتبع تسلسل BARTPho التنسيق التالي:

- تسلسل واحد: `<s> X </s>`
- زوج من التسلسلات: `<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)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bartpho/tokenization_bartpho.py#L214)

**المعاملات:**

token_ids_0 (`list[int]`) : قائمة من المعرّفات.

token_ids_1 (`list[int]`، *اختياري*) : قائمة ثانية اختيارية من المعرّفات لأزواج التسلسلات.

**يعيد:** `list[int]`

قائمة من الأصفار.

إنشاء قناع من التسلسلين المُمرَّرين ليُستخدم في مهمة تصنيف أزواج التسلسلات. لا يستخدم BARTPho معرّفات أنواع الرموز token type ids، لذلك تُعاد قائمة من الأصفار.

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

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bartpho/tokenization_bartpho.py#L186)

**المعاملات:**

token_ids_0 (`list[int]`) : قائمة من المعرّفات.

token_ids_1 (`list[int]`، *اختياري*) : قائمة ثانية اختيارية من المعرّفات لأزواج التسلسلات.

already_has_special_tokens (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كانت قائمة الرموز مُنسّقة مسبقًا برموز خاصة للنموذج أم لا.

**يعيد:** `list[int]`

قائمة من الأعداد الصحيحة في المدى [0, 1]: 1 للرمز الخاص، و0 لرمز التسلسل.

استرجاع معرّفات التسلسل من قائمة رموز لم تُضف إليها رموز خاصة. يُستدعى هذا الأسلوب عند إضافة رموز خاصة باستخدام أسلوب `prepare_for_model` في tokenizer.

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

```python
get_vocab()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bartpho/tokenization_bartpho.py#L244)

التجاوز لاستخدام مفردات fairseq

