# HerBERT

## نظرة عامة

قُدِّم نموذج HerBERT في [KLEJ: Comprehensive Benchmark for Polish Language Understanding](https://huggingface.co/papers/2005.00630) من قِبل Piotr Rybak وRobert Mroczkowski وJanusz Tracz وIreneusz Gawlik. وهو نموذج لغوي مبني على BERT تم تدريبه على مجموعات بيانات بولندية باستخدام هدف MLM فقط مع إخفاء ديناميكي للكلمات الكاملة.

المستخلص من الورقة البحثية هو كالتالي:

*في السنوات الأخيرة، أتاحَ سِلسِلة من النماذج القائمة على Transformer تحسيناتٍ كبيرة في مهام فهم اللغة الطبيعية العامة (NLU). ولَن يكونَ هذا الوتيرة البحثية السريعة ممكنةً لولا معايير تقييم عامة لمهام NLU، التي تُمكّن من مقارنة عادلة بين المقترحات. ومع ذلك، فإن هذه المعايير متاحة فقط لعددٍ قليل من اللغات. للتخفيف من هذه المشكلة، نُقدّم معيارًا شاملًا متعدد المهام لفهم اللغة البولندية، مرفقًا بلوحة صدارة عبر الإنترنت. يتكوّن هذا المعيار من مجموعة متنوعة من المهام، مستمدة من مجموعات بيانات موجودة لتعرّف الكيانات المسمّاة، والإجابة على الأسئلة، والاستلزام النصي، وغيرها. كما نُقدّم مهمة جديدة لتحليل المشاعر في مجال التجارة الإلكترونية، تُسمّى Allegro Reviews (AR). ولضمان مخطط تقييم موحّد وتشجيع النماذج التي تتعمّم على مهام NLU مختلفة، يشمل المعيار مجموعات بيانات من مجالات وتطبيقات متنوعة. بالإضافة إلى ذلك، نُطلق HerBERT، وهو نموذج قائم على Transformer مُدرَّب خصيصًا للغة البولندية، والذي يحقق أفضل أداء متوسط ويحصل على أفضل النتائج في ثلاث من أصل تسع مهام. أخيرًا، نوفر تقييمًا موسّعًا، يشمل عدة خطوط أساس قياسية ونماذج متعددة اللغات حديثة الاقتراح والقائمة على Transformer.*

تمت مساهمة هذا النموذج من قِبل [rmroczkowski](https://huggingface.co/rmroczkowski). يمكن العثور على الكود الأصلي [هنا](https://github.com/allegro/HerBERT).

## مثال على الاستخدام

```python
from transformers import HerbertTokenizer, RobertaModel

tokenizer = HerbertTokenizer.from_pretrained("allegro/herbert-klej-cased-tokenizer-v1")
model = RobertaModel.from_pretrained("allegro/herbert-klej-cased-v1", device_map="auto")

encoded_input = tokenizer.encode("Kto ma lepszą sztukę, ma lepszy rząd – to jasne.", return_tensors="pt").to(model.device)
outputs = model(encoded_input)

# HerBERT can also be loaded using AutoTokenizer and AutoModel:
from transformers import AutoModel, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("allegro/herbert-klej-cased-tokenizer-v1")
model = AutoModel.from_pretrained("allegro/herbert-klej-cased-v1", device_map="auto")
```

تنفيذ Herbert هو نفسه `BERT` باستثناء طريقة الترميز. راجع [توثيق BERT](bert) للاطلاع على مرجع واجهة برمجة التطبيقات والأمثلة.

## HerbertTokenizer[[transformers.HerbertTokenizer]]

#### transformers.HerbertTokenizer[[transformers.HerbertTokenizer]]

```python
transformers.HerbertTokenizer(vocab: str | dict[str, int] | None = None, merges: str | list[str] | None = None, cls_token: str = '<s>', unk_token: str = '<unk>', pad_token: str = '<pad>', mask_token: str = '<mask>', sep_token: str = '</s>', vocab_file: str | None = None, merges_file: str | None = None, **kwargs)
```

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

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

vocab_file (`str`) : مسار ملف المفردات.

merges_file (`str`) : مسار ملف الدمج.

cls_token (`str`، *اختياري*، القيمة الافتراضية `"<s>"`) : رمز التصنيف.

unk_token (`str`، *اختياري*، القيمة الافتراضية `"<unk>"`) : الرمز المجهول.

pad_token (`str`، *اختياري*، القيمة الافتراضية `"<pad>"`) : رمز التعبئة.

mask_token (`str`، *اختياري*، القيمة الافتراضية `"<mask>"`) : رمز القناع.

sep_token (`str`، *اختياري*، القيمة الافتراضية `"</s>"`) : رمز الفاصل.

vocab (`str` أو `dict` أو `list`، *اختياري*) : قاموس مفردات مخصص.

merges (`str` أو `list[str]`، *اختياري*) : قائمة دمج مخصصة.

أنشئ مُجزِّئ BPE لنموذج HerBERT (المعتمد على مكتبة tokenizers من HuggingFace).

الخصائص المميزة:

- يستخدم مقسّم الرموز المسبق الخاص بـ BERT: يقسم BertPreTokenizer الرموز على المسافات، وكذلك على علامات الترقيم. سيتم التعامل مع كل ظهور لعلامة ترقيم بشكل منفصل.

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

