/ Модель

Характеристики

Лицензия
CC BY-NC-SA 4.0
Библиотека
pytorch
Опубликована
24 сен 2026

HAT-Tashkeel-803M

Разметка токеновТекст → label

HAT-Tashkeel-803M расставляет арабские диакритические знаки, включая падежные окончания, с учётом контекста всего фрагмента.

37скачиваний за 30 дней0лайковвеса обновлены24 сен 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

HAT-Tashkeel-803M — модель арабской диакритизации, разработанная независимым исследователем Nizar в Эр-Рияде. Она расставляет харакаты, включая окончания падежа (и‘раб), сохраняя исходные буквы. Модель создана с нуля без использования весов других моделей.

Это двунаправленная символьная модель на архитектуре Hierarchical Attention Transformer (HAT): символьный кодировщик формирует представления слов, 20-слойная двунаправленная основа учитывает контекст всего фрагмента, а классификатор выбирает диакритический знак для каждой буквы. Веса bf16 содержат около 803 млн параметров; репозиторий использует формат safetensors. Основной язык — арабский. Для длинных фрагментов рекомендуется обрабатывать окнами примерно по 180 слов.

На тестовом наборе WikiNews для современного литературного арабского заявлена частота ошибок диакритики 3,27% с учётом окончаний и 2,12% без них при обработке строк по отдельности. Модель лучше соответствует классическим нормам арабского языка, на которых основаны обучающие данные; ошибки чаще встречаются в окончаниях длинных или неоднозначных предложений, современной новостной лексике и иностранных именах. Диалекты и стихотворный размер не оценивались. Лицензия CC BY-NC-SA 4.0 разрешает использование с указанием авторства и на условиях той же лицензии, но некоммерчески.

Сценарии применения

  • Расстановка харакатов в арабском тексте
  • Восстановление падежных окончаний в арабских предложениях
  • Подготовка арабских учебных и справочных материалов с огласовками
  • Диакритизация арабских новостных текстов на литературном языке

Ограничения

Модель преимущественно следует классическим нормам арабского языка; ошибки чаще возникают в падежных окончаниях длинных и неоднозначных предложений, современной новостной лексике и иностранных именах. Диалектный арабский и поэтический размер не оценивались; существующие огласовки, dagger alif и коранические знаки разметки удаляются из входа.

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

English · العربية

Arabic Tashkeel Model (803M): in-house, trained from scratch

Author: Nizar, independent AI researcher, Riyadh, Saudi Arabia. Designed, pretrained and fine-tuned by one person; no team, no open-weight base model.

Adds full diacritics (tashkeel) to Arabic text, including case endings (i'rab).

  • Built in-house from scratch, in Riyadh. The underlying language model was designed and pretrained by us from random initialization. No open-weight model, and no weights from any other model, were used at any stage.
  • Bidirectional by design. Diacritization changes nothing in the text except the marks: the same letters go in and come out. The model reads the whole passage in both directions and labels every letter in a single pass, with no text generation.
  • Weights: 803.3M parameters, bf16, model.safetensors (1.6 GB).

The Arabic version of this card (below) was diacritized by this model with no human intervention (only the opening note and the data-source thanks are left undiacritized).

Why a bidirectional model fits this task

Our base model is a character-level Hierarchical Attention Transformer (HAT). It has three parts: a character encoder turns each word's letters into one word vector, a word-level backbone processes the sequence of words, and a character decoder writes out the next word letter by letter. As a language model it is autoregressive: it only looks left and generates new text.

Diacritization is a different kind of problem. The output unit is the same as the input unit: a word goes in, and the same word comes out with marks. Nothing new has to be generated, but the right mark often depends on words that come after it (a case ending depends on the rest of the sentence). So we converted the language model:

  1. Removed the character decoder. No text is generated, so the output can never add, drop or change a letter.
  2. Kept the first 20 of the 26 backbone layers and made attention bidirectional, so every word sees the whole passage on both sides.
  3. Added a small per-letter head. Each letter's state from the character encoder attends to its word's backbone state, passes through two character-level layers, and is classified into one of 15 diacritic choices: no mark, the 3 short vowels, sukun, the 3 tanween, shadda, and shadda combined with each vowel or tanween.

The whole passage is labelled in one forward pass, which is why it is fast (see Speed).

PartSize
Character encoder5 layers, width 512, 8 learned pooling queries → word vector of 1792
Word backbone (bidirectional)20 layers, width 1792, 14 heads, RoPE
Diacritic headcross-attention to the word state + 2 character layers → 16 outputs
Contextup to 220 word slots per window (180 words used by default, see below)

Usage

# pip install torch huggingface_hub safetensors
from modeling_tashkeel import TashkeelModel   # file included in this repo

model = TashkeelModel.from_pretrained("nizarun/HAT-Tashkeel-803M").to("cuda").eval()   # bf16
print(model.diacritize("كتب الطالب درسا جديدا وقرأ كتابا مفيدا"))
# كَتَبَ الطَّالِبُ دَرْسًا جَدِيدًا وَقَرَأَ كِتَابًا مُفِيدًا

outputs = model.diacritize(list_of_texts, batch_size=16)   # batched
  • Any existing marks in the input are removed first. Punctuation, digits, Latin text and spacing are returned unchanged; only Arabic letters receive marks.
  • On CPU, use model.float().
  • Long texts are split into windows of 180 words (window_units= to change it).

Recommended settings

SettingRecommendationWhy (measured)
Words per window (chunk)180 (the default)Best on both test sets. 100–200 words is fine; below 50 words accuracy drops (10 words: DER 4.68% on WikiNews), and filling all 220 slots raises DER from 3.01% to 4.03%.
Overlapping windowsOffOverlap (stride 90) gave 2.99% vs 3.01% for twice the compute.
Decoding passesOne passWe tested multi-pass iterative refinement (4 passes, where confident marks are fed back as input). It was worse than a single pass on both test sets we ran it on (unseen Fadel lines: DER 2.55% vs 2.47%; our validation sample: 6.60% vs 6.34%) and about twice as slow, so it is not recommended and not included.
InputPlain text, hamzas writtenExisting marks are removed anyway; missing hamzas (اله instead of إله) cause errors.
Batch size (GPU)8–32Throughput stops increasing above 8.
Precisionbf16 on GPU; fp32 or int8 on CPUSee Speed.

Evaluation

We report DER (diacritic error rate): the share of letters whose diacritic differs from the reference. It is given with the case ending (last letter of each word) and without it. Letters that should carry no mark are included. Scoring uses the official script of the Fadel et al. (2019) benchmark.

WikiNews (main result, never seen in training)

The WikiNews test set (Darwish et al., 2017): 428 lines, 17,001 words of Modern Standard Arabic news. None of its lines share even 10% of their 8-word spans with our training data.

DERWith case endingWithout case ending
Each line decoded on its own (standard protocol)3.27%2.12%
Whole articles decoded as continuous text3.01%—

Style differences are not errors. Our training text is mostly Classical Arabic, while WikiNews is news-style Modern Standard Arabic, and some differences from the reference are two correct ways of writing the same word:

  • R1: a long vowel (و after damma, ي after kasra) written with or without sukun. 159 letters.
  • R2: the last letter before a word starting with hamzat wasl written with sukun or with the connecting vowel (أَعْلَنَتْ الْ… vs أَعْلَنَتِ الْ…). 281 letters.
  • R3: sentence-final pause forms with sukun are left unscored. 25 letters.

Counting these (symmetric, fixed rules) as correct gives DER 2.68% with case endings. Many of the remaining differences are foreign names (ويكيبيديا, ستيفن, ليدز), which have no single correct vocalization.

Fadel et al. (2019) test set: contamination warning

This benchmark is built from Tashkeela, which is also part of our training data, and 84% of its test lines appear almost word for word in our training data. A full-test-set score would therefore overstate accuracy, so we report only the 156 lines (1,833 words) not found in training. It is a small sample; treat it as approximate.

DER, unseen lines onlyWith case endingWithout case ending
2.47%1.98%

Context length

The model was trained on 220-word windows, but on unseen text it is most accurate when about 180 words of text are used and the remaining slots are left as padding. DER with passages decoded as continuous text:

Words per window50100150180200220
WikiNews3.44%3.14%3.09%3.01%3.05%4.03%
Fadel unseen lines (stacked)—2.41%2.38%2.02%2.14%2.24%

180 is the default (DEFAULT_WINDOW_WORDS in modeling_tashkeel.py).

Speed

GPU (RTX 4090, bf16, PyTorch 2.9, no torch.compile):

Latency, one request of 10–200 words~30 ms
Throughput, batched short texts~5,800 words/s
Throughput, long documents~10,000+ words/s
GPU memory1.7 GB (batch 1), 2.4 GB (batch 8), 4.8 GB (batch 32)

CPU (Intel i9-10850K, 10 threads):

fp32int8 dynamic quantization
Latency, one request1.45 s0.86 s
Throughput, long document125 words/s195 words/s
DER on 60 WikiNews lines (GPU bf16: 2.90%)2.87%2.97%

int8: torch.ao.quantization.quantize_dynamic(model.float(), {torch.nn.Linear}, dtype=torch.qint8). Avoid bf16 on CPUs without native bf16 support (4× slower than fp32 on the CPU above).

Training

  • Base model: our own HAT Arabic language model, pretrained from scratch to predict the next word.
  • Conversion: first 20 of 26 backbone layers kept, attention made bidirectional, character decoder removed, diacritic head added.
  • Fine-tuning data: fully diacritized Classical Arabic, including Tashkeela-derived text and in-house diacritized text, plus partially diacritized sets. In partially diacritized text, letters without a mark are left out of the loss.
  • Label normalization:
    • tanween fath is always placed on the letter before a final alif (كتابًا, not كتاباً);
    • the vowel of the لا ligature is placed on the lam (لَا, not لاَ);
    • a non-initial alif never carries a mark.

License

CC BY-NC-SA 4.0 (Attribution, NonCommercial, ShareAlike):

  • Non-commercial use only. Commercial use requires separate permission from the author.
  • Derivatives must stay free and open under the same license. Any fine-tuned, quantized or otherwise modified version must be shared under CC BY-NC-SA 4.0 as well, so it also stays non-commercial.
  • Attribution to this model is required.

Limitations

  • Output follows the Classical Arabic conventions of the training data (see the WikiNews notes).
  • Missing hamzas cause mistakes: "اله" is read as starting with the article (الْهَ instead of إِلَهَ). Writing أ and إ correctly helps.
  • Case endings in long or ambiguous sentences, Modern Standard Arabic news vocabulary and foreign names are the main remaining error sources.
  • Dialectal Arabic and poetry meter were not evaluated.
  • Existing diacritics, the dagger alif and Quranic annotation marks are removed from the input and do not appear in the output.

Acknowledgements

Built in Riyadh, Saudi Arabia, for the Arabic language.


English

بِالْعَرَبِيَّةِ

أضيف التشكيل إلى النص أدناه بواسطة النموذج دون أي تدخل بشري.

السَّلَامُ عَلَيْكُمْ وَرَحْمَةُ اللَّهِ وَبَرَكَاتُهُ،

نَمُوذَجٌ لِلتَّشْكِيلِ الْعَرَبِيِّ بَنَيْنَاهُ بِأَنْفُسِنَا مِنَ الْبِدَايَةِ

صَاحِبُ النَّمُوذَجِ: نِزَار، بَاحِثٌ مُسْتَقِلٌّ فِي الذَّكَاءِ الِاصْطِنَاعِيِّ، الرِّيَاضُ، الْمَمْلَكَةُ الْعَرَبِيَّةُ السُّعُودِيَّةُ. صَمَّمَهُ وَدَرَّبَهُ شَخْصٌ وَاحِدٌ.

نَمُوذَجٌ يَضَعُ التَّشْكِيلَ الْكَامِلَ عَلَى النَّصِّ الْعَرَبِيِّ، وَمَعَهُ الْإِعْرَابَ فِي أَوَاخِرِ الْكَلِمَاتِ.

  • بَنَيْنَاهُ بِأَنْفُسِنَا فِي الرِّيَاضِ: صَمَّمْنَا النَّمُوذَجَ اللُّغَوِيَّ الَّذِي قَامَ عَلَيْهِ وَدَرَّبْنَاهُ بِأَنْفُسِنَا، وَلَمْ نَأْخُذْ أَيَّ نَمُوذَجٍ مَفْتُوحٍ، وَلَا أَيَّ أَوْزَانٍ مِنْ نَمُوذَجٍ آخَرَ، فِي أَيِّ مَرْحَلَةٍ.
  • الْقِرَاءَةُ فِي الِاتِّجَاهَيْنِ: التَّشْكِيلُ لَا يُغَيِّرُ فِي النَّصِّ شَيْئًا سِوَى الْحَرَكَاتِ، فَالْحُرُوفُ نَفْسُهَا تَدْخُلُ وَتَعُودُ. لِذَلِكَ يَقْرَأُ النَّمُوذَجُ النَّصَّ كَامِلًا مِنَ الْجِهَتَيْنِ، وَيَضَعُ الْحَرَكَاتِ عَلَى الْحُرُوفِ كُلِّهَا فِي خُطْوَةٍ وَاحِدَةٍ، دُونَ أَنْ يَكْتُبَ نَصًّا جَدِيدًا.
  • الْحَجْمُ: 803 مَلَايِينَ مِنَ الْأَوْزَانِ، وَيَبْلُغُ حَجْمُهَا 1.6 غِيْغَابَايْت.

لِمَاذَا نَقْرَأُ النَّصَّ فِي الِاتِّجَاهَيْنِ؟

بَنَيْنَا النَّمُوذَجَ الْأَسَاسِيَّ عَلَى طَرِيقَةٍ هَرَمِيَّةٍ تَبْدَأُ مِنَ الْحُرُوفِ، وَفِيهِ ثَلَاثَةُ أَجْزَاءٍ:

  1. قَارِئُ الْحُرُوفِ: يَقْرَأُ حُرُوفَ كُلِّ كَلِمَةٍ، وَيَجْعَلُهَا صُورَةً وَاحِدَةً تُمَثِّلُ الْكَلِمَةَ.
  2. الْعَمُودُ الْفِقْرِيُّ: يُعَالِجُ الْكَلِمَاتِ بِالتَّرْتِيبِ، وَيَفْهَمُ السِّيَاقَ.
  3. كَاتِبُ الْحُرُوفِ: يَكْتُبُ الْكَلِمَةَ التَّالِيَةَ حَرْفًا بَعْدَ حَرْفٍ.

وَهَذَا النَّمُوذَجُ اللُّغَوِيُّ لَا يَرَى إِلَّا مَا قَبْلَ الْكَلِمَةِ، وَيَكْتُبُ نَصًّا جَدِيدًا كَلِمَةً بَعْدَ كَلِمَةٍ.

أَمَّا التَّشْكِيلُ فَأَمْرٌ آخَرُ: الْكَلِمَةُ الَّتِي تَدْخُلُ هِيَ الْكَلِمَةُ الَّتِي تَعُودُ، وَلَكِنْ بِحَرَكَاتِهَا. فَلَا حَاجَةَ إِلَى كِتَابَةِ شَيْءٍ جَدِيدٍ. غَيْرَ أَنَّ الْحَرَكَةَ الصَّحِيحَةَ تَعْتَمِدُ كَثِيرًا عَلَى كَلِمَاتٍ تَأْتِي بَعْدَ الْكَلِمَةِ، فَالْإِعْرَابُ مَثَلًا يَتَحَدَّدُ بِبَاقِي الْجُمْلَةِ. وَلِهَذَا غَيَّرْنَا النَّمُوذَجَ اللُّغَوِيَّ عَلَى هَذَا النَّحْوِ:

  1. حَذَفْنَا كَاتِبَ الْحُرُوفِ. فَالنَّمُوذَجُ لَا يَكْتُبُ شَيْئًا، وَلَا يُمْكِنُ أَنْ يَزِيدَ حَرْفًا أَوْ يَنْقُصَ حَرْفًا. وَالنَّصُّ يَعُودُ بِحُرُوفِهِ كَمَا هِيَ.
  2. أَبْقَيْنَا أَوَّلَ عِشْرِينَ طَبَقَةً مِنْ سِتٍّ وَعِشْرِينَ، وَجَعَلْنَا كُلَّ كَلِمَةٍ تَرَى مَا قَبْلَهَا وَمَا بَعْدَهَا.
  3. أَضَفْنَا جُزْءًا صَغِيرًا يَخْتَارُ الْحَرَكَةَ لِكُلِّ حَرْفٍ. يَنْظُرُ كُلُّ حَرْفٍ إِلَى كَلِمَتِهِ فِي الْعَمُودِ الْفِقْرِيِّ، ثُمَّ يَخْتَارُ وَاحِدًا مِنْ خَمْسَةَ عَشَرَ خِيَارًا: السُّكُونُ، وَالْفَتْحَةُ، وَالضَّمَّةُ، وَالْكَسْرَةُ، وَتَنْوِينُ الْفَتْحِ، وَتَنْوِينُ الضَّمِّ، وَتَنْوِينُ الْكَسْرِ، وَالتَّشْدِيدُ وَحْدَهُ، وَالتَّشْدِيدُ مَعَ كُلِّ حَرَكَةٍ أَوْ تَنْوِينٍ، أَوْ أَنْ يَتْرُكَ الْحَرْفَ بِلَا حَرَكَةٍ.

وَيَعُودُ النَّصُّ كُلُّهُ مَشْكُولًا فِي خُطْوَةٍ وَاحِدَةٍ، وَهَذَا سِرُّ سُرْعَتِهِ.

الْجُزْءُالْحَجْمُ
قَارِئُ الْحُرُوفِفِيهِ خَمْسُ طَبَقَاتٍ بِعَرْضِ 512، وَيُعْطِي صُورَةً لِلْكَلِمَةِ بِعَرْضِ 1792
الْعَمُودُ الْفِقْرِيُّفِيهِ عِشْرُونَ طَبَقَةً بِعَرْضِ 1792، فِي كُلِّ طَبَقَةٍ 14 رَأْسًا
جُزْءُ التَّشْكِيلِفِيهِ طَبَقَتَانِ عَلَى الْحُرُوفِ، ثُمَّ يَخْتَارُ وَاحِدًا مِنْ 16
طُولُ النَّصِّحَتَّى 220 كَلِمَةً فِي كُلِّ مَرَّةٍ، وَالأَفْضَلُ 180 كَلِمَةً

كَيْفَ تَسْتَخْدِمُ النَّمُوذَجَ؟

from modeling_tashkeel import TashkeelModel

model = TashkeelModel.from_pretrained("nizarun/HAT-Tashkeel-803M").to("cuda").eval()
print(model.diacritize("كتب الطالب درسا جديدا وقرأ كتابا مفيدا"))

outputs = model.diacritize(list_of_texts, batch_size=16)

وَهَذِهِ نَتِيجَةُ الْمِثَالِ:

كَتَبَ الطَّالِبُ دَرْسًا جَدِيدًا وَقَرَأَ كِتَابًا مُفِيدًا

  • نَحْذِفُ أَيَّ تَشْكِيلٍ فِي النَّصِّ أَوَّلًا، ثُمَّ نُشَكِّلُهُ مِنْ جَدِيدٍ.
  • تَبْقَى عَلَامَاتُ التَّرْقِيمِ كَمَا هِيَ، وَكَذَلِكَ الْأَرْقَامُ وَالْكَلِمَاتُ الْأَجْنَبِيَّةُ وَالْمَسَافَاتُ، فَالْحَرَكَاتُ تُوضَعُ عَلَى الْحُرُوفِ الْعَرَبِيَّةِ وَحْدَهَا.
  • نُقْسِمُ النَّصَّ الطَّوِيلَ إِلَى أَجْزَاءٍ فِي كُلِّ جُزْءٍ 180 كَلِمَةً، وَيُمْكِنُ تَغْيِيرُ ذَلِكَ بِهَذَا الْخِيَارِ:

window_units

وَعَلَى الْمُعَالِجِ الْمَرْكَزِيِّ نَسْتَخْدِمُ الدِّقَّةَ الْكَامِلَةَ بِهَذَا الْأَمْرِ:

model.float()


الْإِعْدَادَاتُ الَّتِي نَنْصَحُ بِهَا

مَا نَضْبِطُهُمَا نَنْصَحُ بِهِلِمَاذَا
عَدَدُ الْكَلِمَاتِ فِي كُلِّ جُزْءٍ180 كَلِمَةًأَفْضَلُ نَتِيجَةٍ فِي الِاخْتِبَارَيْنِ. وَكُلُّ عَدَدٍ بَيْنَ 100 وَ200 مَقْبُولٌ، أَمَّا عَشْرُ كَلِمَاتٍ فَتَزِيدُ الخَطَأَ إِلَى 4.68%. وَإِذَا مَلَأْنَا الْأَمَاكِنَ كُلَّهَا زَادَ الْخَطَأُ مِنْ 3.01% إِلَى 4.03%.
أَجْزَاءٌ مُتَدَاخِلَةٌلَاالتَّدَاخُلُ أَعْطَى 2.99% بَدَلًا مِنْ 3.01%، وَالْحِسَابُ صَارَ ضِعْفَيْنِ.
عَدَدُ مَرَّاتِ الْقِرَاءَةِمَرَّةً وَاحِدَةًجَرَّبْنَا أَنْ يَقْرَأَ النَّمُوذَجُ النَّصَّ أَرْبَعَ مَرَّاتٍ، وَيَسْتَفِيدَ فِي كُلِّ مَرَّةٍ مِنَ الْحَرَكَاتِ الَّتِي وَثِقَ بِهَا فِي الْمَرَّةِ السَّابِقَةِ، فَكَانَتِ النَّتِيجَةُ أَسْوَأَ مِنَ الْقِرَاءَةِ الْوَاحِدَةِ: 2.55% بَدَلًا مِنْ 2.47% فِي اخْتِبَارٍ، وَ6.60% بَدَلًا مِنْ 6.34% فِي اخْتِبَارٍ آخَرَ، مَعَ بُطْءٍ بِنَحْوِ الضِّعْفِ. لِذَلِكَ لَا نَنْصَحُ بِهِ، وَلَمْ نَضَعْهُ فِي الْبَرْنَامَجِ.
النَّصُّنَصٌّ عَادِيٌّ بِهَمَزَاتٍ صَحِيحَةٍنَحْذِفُ التَّشْكِيلَ القَدِيمَ عَلَى كُلِّ حَالٍ، أَمَّا الْهَمْزَةُ النَّاقِصَةُ فَتُسَبِّبُ الخَطَأَ.
عَدَدُ النُّصُوصِ مَعًا عَلَى الْمُعَالِجِ الرُّسُومِيِّمِنْ 8 إِلَى 32السُّرْعَةُ لَا تَزِيدُ بَعْدَ 8.

مَا النَّتَائِجُ؟

نَقِيسُ نِسْبَةَ الْحُرُوفِ الَّتِي أَخْطَأَ النَّمُوذَجُ فِي حَرَكَتِهَا، مُقَارَنَةً بِنَصٍّ مَشْكُولٍ بِأَيْدِي الْمُخْتَصِّينَ. وَنَحْسُبُهَا مَرَّةً مَعَ حَرَكَةِ آخِرِ الْكَلِمَةِ، وَمَرَّةً بِدُونِهَا، وَتَدْخُلُ فِي الْحِسَابِ الْحُرُوفُ الَّتِي يَجِبُ أَنْ تَبْقَى بِلَا حَرَكَةٍ. وَاسْتَخْدَمْنَا فِي الْحِسَابِ الْبَرْنَامَجَ الَّذِي نَشَرَهُ الْبَاحِثُ عَلِيُّ فَاضِل وَزُمَلَاؤُهُ سَنَةَ 2019، وَهَذَا رَابِطُهُ.

اِخْتِبَارُ الْأَخْبَارِ: النَّتِيجَةُ الرَّئِيسِيَّةُ، وَنَصُّهُ جَدِيدٌ عَلَى النَّمُوذَجِ تَمَامًا

نَشَرَ الْبَاحِثُ كَرِيم دَرْوِيش وَزُمَلَاؤُهُ اخْتِبَارَ الْأَخْبَارِ سَنَةَ 2017، وَهَذَا رَابِطُهُ. وَفِيهِ 428 سَطْرًا وَ17,001 كَلِمَةً مِنَ الْأَخْبَارِ بِالعَرَبِيَّةِ الْفُصْحَى الْمُعَاصِرَةِ. وَقَدْ بَحَثْنَا فِي كُلِّ بَيَانَاتِ التَّدْرِيبِ، فَلَمْ نَجِدْ سَطْرًا وَاحِدًا يَشْتَرِكُ مَعَهَا حَتَّى فِي عَشَرَةٍ بِالْمِئَةِ مِنْ عِبَارَاتِهِ.

طَرِيقَةُ الْقِرَاءَةِمَعَ حَرَكَةِ آخِرِ الْكَلِمَةِبِدُونِهَا
نُشَكِّلُ كُلَّ سَطْرٍ وَحْدَهُ، كَمَا فِي أَكْثَرِ الْأَبْحَاثِ3.27%2.12%
نُشَكِّلُ الْمَقَالَةَ كُلَّهَا نَصًّا وَاحِدًا3.01%—

اخْتِلَافُ الْأُسْلُوبِ لَيْسَ خَطَأً. النَّمُوذَجُ تَعَلَّمَ مِنْ كُتُبِ التُّرَاثِ فِي أَكْثَرِ تَدْرِيبِهِ، أَمَّا الْأَخْبَارُ فَأُسْلُوبُهَا صَحَفِيٌّ مُعَاصِرٌ. وَبَعْضُ الْفُرُوقِ بَيْنَ النَّمُوذَجِ وَالنَّصِّ الْمَشْكُولِ هِيَ طَرِيقَتَانِ صَحِيحَتَانِ لِكِتَابَةِ الْكَلِمَةِ نَفْسِهَا:

  • حُرُوفُ الْمَدِّ: الْوَاوُ بَعْدَ الضَّمَّةِ وَالْيَاءُ بَعْدَ الْكَسْرَةِ، تُكْتَبُ بِسُكُونٍ وَبِدُونِهِ (159 حَرْفًا).
  • الْتِقَاءُ السَّاكِنَيْنِ: قَبْلَ هَمْزَةِ الْوَصْلِ يَأْتِي آخِرُ الْكَلِمَةِ مَرَّةً بِالسُّكُونِ وَمَرَّةً بِالْكَسْرِ (281 حَرْفًا).
  • الْوَقْفُ: السُّكُونُ فِي آخِرِ الْجُمْلَةِ نَتْرُكُهُ خَارِجَ الْحِسَابِ (25 حَرْفًا).

وَإِذَا عَدَدْنَا هَذِهِ الْحَالَاتِ صَحِيحَةً، بِقَوَاعِدَ ثَابِتَةٍ لَا تَمِيلُ إِلَى النَّمُوذَجِ وَلَا إِلَى النَّصِّ الْمَشْكُولِ، صَارَ الْخَطَأُ 2.68% مَعَ حَرَكَةِ آخِرِ الْكَلِمَةِ.

وَمِنَ الْفُرُوقِ الْبَاقِيَةِ أَسْمَاءٌ أَجْنَبِيَّةٌ كَثِيرَةٌ، مِثْلَ أَسْمَاءِ الْمُدُنِ وَالْأَشْخَاصِ، وَهَذِهِ لَيْسَ لَهَا تَشْكِيلٌ وَاحِدٌ صَحِيحٌ.

تَنْبِيهٌ مُهِمٌّ عَنِ الِاخْتِبَارِ الثَّانِي

أَمَّا الِاخْتِبَارُ الثَّانِي فَنَشَرَهُ الْبَاحِثُ عَلِيُّ فَاضِلٍ وَزُمَلَاؤُهُ، وَهُوَ مَأْخُوذٌ مِنْ مُدَوَّنَةِ تَشْكِيلَةٍ، وَهِيَ أَيْضًا مِنْ مَصَادِرِ بَيَانَاتِ تَدْرِيبِنَا. كَمَا أَنَّ أَكْثَرَ مِنْ ثَمَانِينَ بِالْمِئَةِ مِنْ أَسْطُرِهِ مَوْجُودَةٌ فِي بَيَانَاتِ التَّدْرِيبِ تَقْرِيبًا بِحُرُوفِهَا. فَنَتِيجَةُ الِاخْتِبَارِ كَامِلًا سَتَكُونُ أَحْسَنَ مِنَ الْوَاقِعِ، وَلِذَلِكَ لَا نَنْشُرُهَا. وَنَنْشُرُ فَقَطْ نَتِيجَةَ 156 سَطْرًا (1,833 كَلِمَةً) لَمْ نَجِدْهَا فِي التَّدْرِيبِ. وَالْعَدَدُ صَغِيرٌ، فَالرَّقْمُ تَقْرِيبِيٌّ.

الْأَسْطُرُ الَّتِي لَمْ يَرَهَا النَّمُوذَجُمَعَ حَرَكَةِ آخِرِ الْكَلِمَةِبِدُونِهَا
نِسْبَةُ الخَطَأِ2.47%1.98%

عَدَدُ الْكَلِمَاتِ فِي كُلِّ مَرَّةٍ

كَانَ التَّدْرِيبُ عَلَى 220 كَلِمَةً فِي كُلِّ مَرَّةٍ، لَكِنَّ أَفْضَلَ نَتِيجَةٍ عَلَى النُّصُوصِ الْجَدِيدَةِ كَانَتْ عِنْدَ 180 كَلِمَةً، وَتَبْقَى الْأَمَاكِنُ الْأُخْرَى فَارِغَةً. وَهَذِهِ نِسَبُ الْخَطَأِ حِينَ نُشَكِّلُ النُّصُوصَ نَصًّا مُتَّصِلًا:

عَدَدُ الْكَلِمَاتِ فِي كُلِّ مَرَّةٍ50100150180200220
اِخْتِبَارُ الأَخْبَارِ3.44%3.14%3.09%3.01%3.05%4.03%
الِاخْتِبَارُ الثَّانِي، الْأَسْطُرُ الَّتِي لَمْ يَرَهَا النَّمُوذَجُ—2.41%2.38%2.02%2.14%2.24%
  • النَّتِيجَةُ أَضْعَفُ مَعَ الْأَجْزَاءِ الْقَصِيرَةِ، لِأَنَّ النَّمُوذَجَ يَرَى سِيَاقًا أَقَلَّ، فَمَعَ عَشْرِ كَلِمَاتٍ يَصِلُ الْخَطَأُ إِلَى 4.68% فِي اخْتِبَارِ الْأَخْبَارِ.
  • إِذَا مَلَأْنَا الْأَمَاكِنَ كُلَّهَا زَادَ الْخَطَأُ، وَالزِّيَادَةُ فِي كُلِّ مَكَانٍ مِنَ الْجُزْءِ، لَا فِي أَطْرَافِهِ وَحْدَهَا.
  • الْأَجْزَاءُ الْمُتَدَاخِلَةُ أَعْطَتْ 2.99% بَدَلًا مِنْ 3.01%، وَالْفَرْقُ لَا يَسْتَحِقُّ مُضَاعَفَةَ الْحِسَابِ، فَلَمْ نَسْتَعْمِلْهَا.
  • الْعَدَدُ 180 هُوَ الْأَصْلُ، وَيُمْكِنُ تَغْيِيرُهُ مِنْ هَذَا الِاسْمِ فِي الْبَرْنَامَجِ:

DEFAULT_WINDOW_WORDS


السُّرْعَةُ

عَلَى الْمُعَالِجِ الرُّسُومِيِّ بِالدِّقَّةِ النِّصْفِيَّةِ، وَاسْتَخْدَمْنَا هَذَا الْجِهَازَ:

RTX 4090

الْقِيَاسُالنَّتِيجَةُ
وَقْتُ الطَّلَبِ الْوَاحِدِ، مِنْ عَشْرِ كَلِمَاتٍ إِلَى مِئَتَيْ كَلِمَةٍ0.03 ثَانِيَةٍ تَقْرِيبًا
السُّرْعَةُ مَعَ نُصُوصٍ قَصِيرَةٍ كَثِيرَةٍ مَعًا5,800 كَلِمَةً فِي الثَّانِيَةِ تَقْرِيبًا
السُّرْعَةُ مَعَ نُصُوصٍ طَوِيلَةٍتَزِيدُ عَلَى 10,000 كَلِمَةٍ فِي الثَّانِيَةِ
الذَّاكِرَةُ1.7 غِيغَابَايْت لِنَصٍّ وَاحِدٍ، وَ2.4 لِثَمَانِيَةِ نُصُوصٍ، وَ4.8 لِاثْنَيْنِ وَثَلَاثِينَ نَصًّا

عَلَى الْمُعَالِجِ الْمَرْكَزِيِّ مَعَ 10 خُيُوطٍ، وَاسْتَخْدَمْنَا هَذَا الْجِهَازَ:

Intel i9-10850K

الْقِيَاسُالدِّقَّةُ الْكَامِلَةُالدِّقَّةُ الْمُنْخَفِضَةُ
وَقْتُ طَلَبٍ وَاحِدٍ1.45 ثَانِيَةٍ0.86 ثَانِيَةٍ
السُّرْعَةُ مَعَ نَصٍّ طَوِيلٍ125 كَلِمَةً فِي الثَّانِيَةِ195 كَلِمَةً فِي الثَّانِيَةِ
نِسْبَةُ الخَطَأِ عَلَى سِتِّينَ سَطْرًا مِنَ الأَخْبَارِ، وَكَانَتْ عَلَى المُعَالِجِ الرُّسُومِيِّ 2.90%2.87%2.97%
  • الطَّلَبُ الْقَصِيرُ يَأْخُذُ وَقْتَ الطَّلَبِ الطَّوِيلِ تَقْرِيبًا، لِأَنَّنَا نُكْمِلُ كُلَّ جُزْءٍ إِلَى 220 مَكَانًا كَمَا فِي التَّدْرِيبِ. وَجَرَّبْنَا أَنْ نُقَلِّلَ ذَلِكَ فَسَاءَتِ النَّتِيجَةُ، فَتَرَكْنَاهُ.
  • الْأَفْضَلُ أَلَّا تُسْتَعْمَلَ الدِّقَّةُ النِّصْفِيَّةُ عَلَى مُعَالِجٍ مَرْكَزِيٍّ لَا يَدْعَمُهَا، فَقَدْ كَانَتْ عَلَى الْجِهَازِ الْمَذْكُورِ أَبْطَأَ بِأَرْبَعِ مَرَّاتٍ مِنَ الدِّقَّةِ الْكَامِلَةِ.
  • وَهَذَا الْأَمْرُ يَنْقُلُ النَّمُوذَجَ إِلَى الدِّقَّةِ الْمُنْخَفِضَةِ:

torch.ao.quantization.quantize_dynamic(model.float(), {torch.nn.Linear}, dtype=torch.qint8)


كَيْفَ دَرَّبْنَا النَّمُوذَجَ؟

  • نُقْطَةُ الْبِدَايَةِ: نَمُوذَجُنَا اللُّغَوِيُّ الْعَرَبِيُّ، دَرَّبْنَاهُ بِأَنْفُسِنَا مِنَ الْبِدَايَةِ عَلَى تَوَقُّعِ الْكَلِمَةِ التَّالِيَةِ.
  • مَا غَيَّرْنَاهُ فِيهِ: أَبْقَيْنَا أَوَّلَ عِشْرِينَ طَبَقَةً مِنْ سِتٍّ وَعِشْرِينَ، وَجَعَلْنَا كُلَّ كَلِمَةٍ تَرَى مَا قَبْلَهَا وَمَا بَعْدَهَا، وَحَذَفْنَا كَاتِبَ الْحُرُوفِ، وَأَضَفْنَا جُزْءَ التَّشْكِيلِ.
  • نُصُوصُ التَّدْرِيبِ:
    • نُصُوصٌ مِنْ كُتُبِ التُّرَاثِ مَشْكُولَةٌ كُلُّهَا، مِنْهَا نُصُوصٌ أَخَذْنَاهَا مِنْ تَشْكِيلَةٍ، وَمِنْهَا نُصُوصٌ شَكَّلْنَاهَا بِأَنْفُسِنَا.
    • وَمَعَهَا نُصُوصٌ مَشْكُولَةٌ فِي بَعْضِهَا. وَفِي هَذِهِ النُّصُوصِ لَا نُحَاسِبُ النَّمُوذَجَ عَلَى الْحَرْفِ الَّذِي لَا حَرَكَةَ عَلَيْهِ، لِأَنَّنَا لَا نَعْرِفُ هَلْ تَرَكَهُ الْكَاتِبُ عَمْدًا أَمْ نَسِيَ تَشْكِيلَهُ.
  • جَعَلْنَا طَرِيقَةَ كِتَابَةِ التَّشْكِيلِ وَاحِدَةً قَبْلَ التَّدْرِيبِ، لِأَنَّ الْكُتُبَ تَخْتَلِفُ فِي ذَلِكَ:
    • تَنْوِينُ الْفَتْحِ نَضَعُهُ دَائِمًا عَلَى الْحَرْفِ الَّذِي قَبْلَ الْأَلِفِ. وَكَانَ اخْتِلَافُ الْكُتُبِ فِي هَذَا يَجْعَلُ النُّسْخَةَ الْأُولَى مِنَ النَّمُوذَجِ تَضَعُ التَّنْوِينَ عَلَى الْحَرْفَيْنِ مَعًا، فَلَمَّا صَارَتِ الطَّرِيقَةُ وَاحِدَةً زَالَتِ الْمُشْكِلَةُ مِنْ أَصْلِهَا، وَلَمْ نَحْتَجْ إِلَى أَيِّ عِلَاجٍ عِنْدَ الِاسْتِعْمَالِ.
    • حَرَكَةُ اللَّامِ فِي لَا نَضَعُهَا عَلَى اللَّامِ.
    • الْأَلِفُ فِي وَسَطِ الْكَلِمَةِ وَآخِرِهَا لَا نَضَعُ عَلَيْهَا حَرَكَةً أَبَدًا.

الرُّخْصَةُ

النَّمُوذَجُ مَنْشُورٌ بِرُخْصَةِ الْمُشَاعِ الْإِبْدَاعِيِّ، وَلَهَا ثَلَاثَةُ شُرُوطٍ:

CC BY-NC-SA 4.0

  • لَا يُسْتَعْمَلُ فِي التِّجَارَةِ. وَمَنْ أَرَادَ ذَلِكَ فَعَلَيْهِ أَنْ يَطْلُبَ الْإِذْنَ مِنْ صَاحِبِ النَّمُوذَجِ.
  • كُلُّ نُسْخَةٍ مُعَدَّلَةٍ تَبْقَى حُرَّةً وَمَفْتُوحَةً بِالرُّخْصَةِ نَفْسِهَا، سَوَاءٌ كَانَتْ تَدْرِيبًا إِضَافِيًّا أَوْ تَصْغِيرًا أَوْ أَيَّ تَعْدِيلٍ آخَرَ، فَتَبْقَى هِيَ أَيْضًا لِغَيْرِ التِّجَارَةِ.
  • يُذْكَرُ اسْمُ هَذَا النَّمُوذَجِ عِنْدَ اسْتِعْمَالِهِ.

حُدُودُ النَّمُوذَجِ

  • يَكْتُبُ بِأُسْلُوبِ الْفُصْحَى الْقَدِيمَةِ لِأَنَّهُ تَعَلَّمَ مِنْهَا، كَمَا ذَكَرْنَا فِي نَتَائِجِ الْأَخْبَارِ.
  • الْهَمْزَةُ النَّاقِصَةُ تُسَبِّبُ الْخَطَأَ: فَكَلِمَةُ إِلَهٍ إِذَا كُتِبَتْ بِلَا هَمْزَةٍ قَدْ يَقْرَؤُهَا النَّمُوذَجُ كَأَنَّهَا تَبْدَأُ بِأَلِ التَّعْرِيفِ. وَالْأَفْضَلُ كِتَابَةُ الْهَمَزَاتِ كِتَابَةً صَحِيحَةً.
  • أَهَمُّ أَسْبَابِ الْخَطَأِ الْبَاقِيَةِ:
    • الْإِعْرَابُ فِي الْجُمَلِ الطَّوِيلَةِ، أَوْ فِي الْجُمَلِ الَّتِي تَحْتَمِلُ أَكْثَرَ مِنْ وَجْهٍ.
    • كَلِمَاتُ الْأَخْبَارِ الْحَدِيثَةِ.
    • الْأَسْمَاءُ الْأَجْنَبِيَّةُ.
  • لَمْ نُجَرِّبِ النَّمُوذَجَ عَلَى اللَّهَجَاتِ، وَلَا عَلَى أَوْزَانِ الشِّعْرِ.
  • يُحْذَفُ مِنَ النَّصِّ قَبْلَ التَّشْكِيلِ كُلُّ تَشْكِيلٍ قَدِيمٍ، وَالْأَلِفُ الصَّغِيرَةُ، وَعَلَامَاتُ ضَبْطِ الْمُصْحَفِ، فَلَا تَظْهَرُ فِي النَّتِيجَةِ.

شُكْرٌ

جاء جزء من بيانات التدريب من نسخة معالجة لمدونة تشكيلة، وهذا رابطها. فنشكر من أعدها:

Hamza Abbad

ونشكر الجامع الأصلي لمدونة تشكيلة:

Taha Zerrouki

كما تدرب النموذج أيضا على نصوص شكلناها بأنفسنا.

وَنَشْكُرُ الْبَاحِثَ عَلِيَّ فَاضِلٍ وَزُمَلَاءَهُ، وَالْبَاحِثَ كَرِيمَ دَرْوِيش وَزُمَلَاءَهُ، فَقَدْ قَامَتْ عَلَى أَعْمَالِهِمْ بَيَانَاتُ الِاخْتِبَارِ. وَنَشْكُرُ كُلَّ مَنْ شَارَكَ فِي الْمَصَادِرِ الْمَفْتُوحَةِ لِلُّغَةِ الْعَرَبِيَّةِ.


بَنَيْنَا هَذَا النَّمُوذَجَ فِي الرِّيَاضِ بِالْمَمْلَكَةِ الْعَرَبِيَّةِ السُّعُودِيَّةِ، خِدْمَةً لِلُّغَةِ الْعَرَبِيَّةِ.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · pytorch · token-classification

Нельзя запустить

Архитектура ? неизвестна transformers в образе рантайма.

Ревизия весов
1ee09b3

0 моделей