تَشْكِيلُ النُّصُوصِ الْعَرَبِيَّةِ تِلْقَائِياً
This model is trained to add tashkeel (Arabic diacritics) to Arabic text, enhancing readability and pronunciation. It may be also helpful for data synthesis training models on other tasks, such as text-to-speech, language modeling, and more.
Model Details
The model is based on the Google's FLAN-T5 small model trained on Arabic Tashkeel Dataset.
The tokenizer is trained on a subset of the same dataset.
How to Use
You can use this model to add tashkeel to Arabic text by using the following code:
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import torch
model_path = "Abdou/arabic-tashkeel-flan-t5-small"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForSeq2SeqLM.from_pretrained(model_path)
def vocalize_text(text, model, tokenizer, max_length=256, num_beams=4, temperature=0.2, do_sample=False):
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
model.eval()
# Tokenize the input text
inputs = tokenizer(text, return_tensors="pt", max_length=max_length, truncation=True, padding="max_length")
inputs = {k: v.to(device) for k, v in inputs.items()}
with torch.no_grad():
if do_sample:
outputs = model.generate(
**inputs,
max_length=max_length,
do_sample=True,
temperature=temperature,
)
else:
outputs = model.generate(
**inputs,
max_length=max_length,
num_beams=num_beams,
early_stopping=True
)
return tokenizer.decode(outputs[0], skip_special_tokens=True)
# Quran texts
quran_texts = [
"قل هو نبأ عظيم أنتم عنه معرضون",
"إنما يخشى الله من عباده العلماء",
"والله غالب على أمره ولكن أكثر الناس لا يعلمون",
"وعلم ءادم الأسماء كلها ثم عرضهم على الملائكة فقال أنبؤوني بأسماء هؤلاء إن كنتم صادقين",
"وإذ قال موسى لقومه يا قوم لم تؤذونني وقد تعلمون أني رسول الله إليكم",
"ولله يسجد ما في السماوات وما في الارض من دابة والملاءكة وهم لا يستكبرون",
"الذي أحسن كل شيء خلقه وبدأ خلق الإنسان من طين",
]
# Hadith texts
hadith_texts = [
"إن الله لا ينظر إلى صوركم وأموالكم ولكن ينظر إلى قلوبكم وأعمالكم",
"عن أبي ذر جندب بن جنادة، وأبي عبدالرحمن معاذ بن جبل رضي الله عنهما، عن رسول الله ﷺ، قال: اتق الله حيثما كنت وأتبع السيئة الحسنة تمحها، وخالق الناس بخلق حسن . رواه الترمذي وقال: حديث حسن.",
"المسلم من سلم المسلمون من لسانه ويده",
"المؤمن القوي خير وأحب إلى الله من المؤمن الضعيف ، وفي كل خير.",
]
# some Arabic texts
arabic_texts = [
"إنما الأمم الأخلاق ما بقيت فإن هم ذهبت أخلاقهم ذهبوا",
"يعد من أكبر علماء الأندلس وأكبر علماء الإسلام تصنيفًا وتأليفًا بعد الطبري، وهو إمام حافظ. فقيه ظاهري، ومجدد القول به، بل محيي المذهب بعد زواله في الشرق. ومتكلم وأديب وشاعر ونسّابة وعالم برجال الحديث وناقد محلل بل وصفه البعض بالفيلسوف كما عد من أوائل من قال بكروية الأرض، كما كان وزير سياسي لبني أمية، سلك طريق نبذ التقليد وتحرير الأتباع، قامت عليه جماعة من المالكية وشـُرد عن وطنه. توفي لاحقاً في منزله في أرض أبويه منت ليشم المعروفة بمونتيخار حالياً، وهي عزبة قريبة من ولبة. وأصل جده يزيد فارسي، أسلم وأول من دخل منهم بلاد المغرب، وكانت بلدهم قرطبة فولد ابن حزم بها في سلخ نهاية رمضان من سنة أربع وثمانين وثلاثمائة."
]
texts = [
("Quran Texts", quran_texts),
("Hadith Texts", hadith_texts),
("Arabic Texts", arabic_texts)
]
for title, texts in texts:
print(f"=============== {title} ===============")
for text in texts:
vocalized_result = vocalize_text(text, model, tokenizer)
print(f"Input: \n{text}")
print("="*10)
print(f"Prediction: \n{vocalized_result}")
print("="*10)
Output:
=============== Quran Texts ===============
Input:
قل هو نبأ عظيم أنتم عنه معرضون
==========
Prediction:
قُلْ هُوَ نَبَأٌ عَظِيمٌ أَنْتُمْ عَنْهُ مُعْرِضُونَ
==========
Input:
إنما يخشى الله من عباده العلماء
==========
Prediction:
إِنَّمَا يَخْشَى ٱللَّهَ مِنْ عِبَادِهِ ٱلْعُلَمَآءُ
==========
Input:
والله غالب على أمره ولكن أكثر الناس لا يعلمون
==========
Prediction:
وَٱللَّهُ غَالِبٌ عَلَىٰٓ أَمْرِهِۦ وَلَٰكِنَّ أَكْثَرَ ٱلنَّاسِ لَا يَعْلَمُونَ
==========
Input:
وعلم ءادم الأسماء كلها ثم عرضهم على الملائكة فقال أنبؤوني بأسماء هؤلاء إن كنتم صادقين
==========
Prediction:
وَعَلِّمْ ءَادَمَ ٱلْأَسْمَآءَ كُلَّهَا ثُمَّ عَرَضَهُمْ عَلَى ٱلْمَلاَئِكَةِ فَقَالَ أَنبَؤُونِي بِأَسْمَاءِ هَٰٓؤُلَآءِ إِن كُنتُمْ صَادِقِينَ
==========
Input:
وإذ قال موسى لقومه يا قوم لم تؤذونني وقد تعلمون أني رسول الله إليكم
==========
Prediction:
وَإِذْ قَالَ مُوسَىٰ لِقَوْمِهِ يَا قَوْمِ لِمَ تُؤْذُونَنِي وَقَدْ تَعْلَمُونَ أَنِّي رَسُولُ اللَّهِ إِلَيْكُمْ
==========
Input:
ولله يسجد ما في السماوات وما في الارض من دابة والملاءكة وهم لا يستكبرون
==========
Prediction:
وَلِلَّهِ يَسْجُدُ مَا فِي السَّمَاوَاتِ وَمَا فِي الْارْضِ مِنْ دَابَّةٍ وَالْمَلَائِكَةُ وَهُمْ لَا يَسْتَكْبِرُونَ
==========
Input:
الذي أحسن كل شيء خلقه وبدأ خلق الإنسان من طين
==========
Prediction:
الَّذِي أَحْسَنَ كُلَّ شَيْءٍ خَلْقَهُ وَبَدَأَ خَلْقَ الْإِنْسَانِ مِنْ طِينٍ
==========
=============== Hadith Texts ===============
Input:
إن الله لا ينظر إلى صوركم وأموالكم ولكن ينظر إلى قلوبكم وأعمالكم
==========
Prediction:
إِنَّ اللَّهَ لَا يَنْظُرُ إِلَىٰ صُوَرِكُمْ وَأَمْوَالِكُمْ وَلَكِنْ يَنْظُرُ إِلَىٰ قُلُوبِكُمْ وَأَعْمَالِكُمْ
==========
Input:
عن أبي ذر جندب بن جنادة، وأبي عبدالرحمن معاذ بن جبل رضي الله عنهما، عن رسول الله ﷺ، قال: اتق الله حيثما كنت وأتبع السيئة الحسنة تمحها، وخالق الناس بخلق حسن . رواه الترمذي وقال: حديث حسن.
==========
Prediction:
عَنْ أَبِي ذَرٍّ جُنْدُبِ بْنِ جُنَادَةَ، وَأَبِي عَبْدِالرَّحْمَنِ مُعَاذِ بْنِ جَبَلٍ رَضِيَ اللَّهُ عَنْهُمَا، عَنْ رَسُولِ اللَّهِ صَلَّى اللَّهُ عَلَيْهِ وَسَلَّمَ، قَالَ: اتَّقِ اللَّهَ حَيْثُمَا كُنْتَ وَأَتْبِعِ السَّيِّئَةَ الْحَسَنَةَ تَمْحُهَا، وَخَالِقِ النَّاسَ بِخُلُقٍ حَسَنٍ . رَوَاهُ التِّرْمِذِيُّ وَقَالَ: حَدِيثٌ حَسَنٌ.
==========
Input:
المسلم من سلم المسلمون من لسانه ويده
==========
Prediction:
الْمُسْلِمُ مَنْ سَلِمَ الْمُسْلِمُونَ مِنْ لِسَانِهِ وَيَدِهِ
==========
Input:
المؤمن القوي خير وأحب إلى الله من المؤمن الضعيف ، وفي كل خير.
==========
Prediction:
الْمُؤْمِنُ الْقَوِيُّ خَيْرٌ وَأَحَبُّ إِلَى اللَّهِ مِنَ الْمُؤْمِنِ الضَّعِيفِ ، وَفِي كُلِّ خَيْرٍ.
==========
=============== Arabic Texts ===============
Input:
إنما الأمم الأخلاق ما بقيت فإن هم ذهبت أخلاقهم ذهبوا
==========
Prediction:
إِنَّمَا الأُمَمُ الأَخْلاقُ مَا بَقِيَتْ فَإِنْ هُمْ ذَهَبَتْ أَخْلاقُهُمْ ذَهَبُوا
==========
Input:
يعد من أكبر علماء الأندلس وأكبر علماء الإسلام تصنيفًا وتأليفًا بعد الطبري، وهو إمام حافظ. فقيه ظاهري، ومجدد القول به، بل محيي المذهب بعد زواله في الشرق. ومتكلم وأديب وشاعر ونسّابة وعالم برجال الحديث وناقد محلل بل وصفه البعض بالفيلسوف كما عد من أوائل من قال بكروية الأرض، كما كان وزير سياسي لبني أمية، سلك طريق نبذ التقليد وتحرير الأتباع، قامت عليه جماعة من المالكية وشـُرد عن وطنه. توفي لاحقاً في منزله في أرض أبويه منت ليشم المعروفة بمونتيخار حالياً، وهي عزبة قريبة من ولبة. وأصل جده يزيد فارسي، أسلم وأول من دخل منهم بلاد المغرب، وكانت بلدهم قرطبة فولد ابن حزم بها في سلخ نهاية رمضان من سنة أربع وثمانين وثلاثمائة.
==========
Prediction:
يُعَدُّ مِنْ أَكْبَرِ عُلَمَاءِ الْأَنْدَلُسِ وَأَكْبَرِ عُلَمَاءِ الْإِسْلَامِ تَصْنِيفًا وَتَأْلِيفًا بَعْدَ الطَّبَرِيِّ، وَهُوَ إِمَامٌ حَافِظٌ. فَقِيهٌ ظَاهِرِيٌّ، وَمُجَدِّدُ الْقَوْلِ بِهِ، بَلْ مُحْيِي الْمَذْهَبِ بَعْدَ زَوَالِهِ فِي الشَّرْقِ. وَمُتَكَلِّمٌ وَأَدِيبٌ وَشَاعِرٌ وَنَسَّابَةٌ وَعَالِمٌ بِرِجَالِ الْحَدِيثِ وَنَاقِدٌ مُحَلَّلٌ بَلْ وَصَفَهُ الْبَعْضُ بِالْفَيْلَسُوفِ كَمَا عُدَّ مِنْ أَوَائِلِ مَنْ قَالَ بِكُرَوِيَّةِ الْأَرْضِ، كَمَا كَانَ وَزِيرٌ سِيَاسِيٌّ لِبَنِي أُمَيَّةَ، سَلَكَ طَرِيقَ نَبْذِ التَّقْلِيدِ وَتَحْرِيرَ الْأَتْبَاعِ، قَامَتْ عَلَيْهِ جَمَاعَةٌ مِنَ الْمَالِكِيَّةِ وَشَـرُّدٌ عَنْ وَطَنِهِ. تُوُفِّيَ لَاحِقًا فِي مَنْزِلِهِ فِي أَرْضِ أَبَوَيْهِ مُنْتَ لِيَشُمَّ الْمَعْرُوفَةَ بِمُونتِيخَارٍ حَالِيًّا، وَهِيَ عَزْبَةٌ قَرِيبَةٌ مِنْ وَلُبَّةٍ. وَأَصْلُ جَدِّهِ يَزِيدُ فَارِسِيٌّ، أَسْلَمَ وَأَوَّلُ مَنْ دَخَلَ مِنْهُمْ بِلَادَ الْمَغْرِبِ، وَكَانَتْ بَلَدُهُمْ قُرْطُبَةَ فَوُلِدَ ابْنُ حَزْمٍ بِهَا فِي سَلْخِ نِهَايَةِ رَمَضَانَ مِنْ سَنَةِ أَرْبَعٍ وَثَمَانِينَ وَثَلَاثِمِائَةٍ.
==========
As you can see, the model is mostly accurate, but may make some mistakes, like وَعَلِّمْ
instead of وَعَلَّمَ
or وَفِي كُلِّ خَيْرٍ
instead of وَ فِي كُلٍّ خَيْرٌ
.
By default, the above vocalize_text()
function is using Beam Search decoding (num_beams=4
), you can use sampling by setting do_sample=True
and temperature
to a value between 0 and 1.
Limitations
As mentioned in the dataset card, the dataset is largely religious classical Arabic texts (~90%), so the model may not be perfect for Modern Standard Arabic or dialects.
- Downloads last month
- 28