عربي. بايثون

مجموعة من الأدوات الأساسية والتي تم تحويلها من الجافا وتطويرها إلى لغة البايثون بالإضافة لبعض الأدوات الجديدة ، تتضمن مكتبة البايثون أدوات خاصة في استرجاع كيانات ذات علاقة وتصاحب مع مصطلح ، تحليل صرفي للأفعال ، استخراج الأصل المعجمي، استخراج اقسام الكلام، استخراج اقسام الكلام مع الأصل المعجمي، استخراج المترادفات، استخراج تشكيلات الفعل المتنوعة، استخراج أوزان الفعل المتنوعة.

هذه الأدوات تأتي على شكل مكتبة برمجية مستقلة (تحتوي على قواعد بيانات معرفية مرافقة لها ومدمجة بداخلها).

ملاحظة: لتثبيت الأدوات يتم إستعمال الأمر التالي لمرة واحدة:
						!git clone https://github.com/asalhi/arabitools/
تحتوي هذه الحُزمة على عدة أدوات برمجية و فيما يلي وصف كل أداة و طريقة إستعمالها:

أولاً: استرجاع كيانات ذات علاقة وتصاحب مع مصطلح معين مثلا : اللغة العربية

						from arabitools import arabitools as arabi
import pandas as pd
phrase = 'اللغة العربية'
depth = 20 # مقدار التعمق في البحث عن كيانات ذات علاقة - the depth of the search for related phrases

#استرجاع كلمات و كيانات ذات علاقة وتصاحب مع اللغة العربية
res = arabi.getRelatedPhrases(phrase,depth, output="pandas")

display(res)
النتيجة:

ثانياً: أداة التحليل الصرفي

تعمل هذه الأداة على ايجاد جدول التحليل الصرفي للفعل المدخل بغض النظر عن التصريف الذي يتم إدخال الفعل به ، تعيد الأداة التصريف مهيكل بشكل يستطيع أي مبرج أن يستخرج أي جزئية به، مع توفير ايضا عمليات برمجية لإستخراج اي جزئية من التصريف .
						from arabitools import arabitools as arabi
import pandas as pd
word = 'يدرسون'
res = arabi.getVerbsConjugation(word)
print(res) #json output for all results.
print(res['result'][0]['present_tense']['howa']) # يطبع يَدْرُسُ
النتيجة:
						{'result': [{'present_tense': {'howa': 'يَدْرُسُ', 'hum': 'يَدْرُسُونَ', 'hunna': 'يَدْرُسْنَ', 'huma_female': 'تَدْرُسَانِ', 'antoma_female': 'تَدْرُسَانِ', 'antoma_male': 'تَدْرُسَانِ', 'nahno': 'نَدْرُسُ', 'anti': 'تَدْرُسِينَ', 'antom': 'تَدْرُسُونَ', 'antona': 'تَدْرُسْنَ', 'ana': 'أَدْرُسُ', 'heya': 'تَدْرُسُ', 'anta': 'تَدْرُسُ', 'arabic_name': 'الفعل المضارع', 'huma_male': 'يَدْرُسَانِ'}, 'passive_present_tense_jussive': {'howa': 'يُدْرَسْ', 'hum': 'يُدْرَسُوا', 'hunna': 'يُدْرَسْنَ', 'huma_female': 'تُدْرَسَا', 'antoma_female': 'تُدْرَسَا', 'antoma_male': 'تُدْرَسَا', 'nahno': 'نُدْرَسْ', 'anti': 'تُدْرَسِي', 'antom': 'تُدْرَسُوا', 'antona': 'تُدْرَسْنَ', 'ana': 'أُدْرَسْ', 'heya': 'تُدْرَسْ', 'anta': 'تُدْرَسْ', 'arabic_name': 'الفعل المضارع المجزوم المبني للمجهول', 'huma_male': 'يُدْرَسَا'}, 'src': {'arabic_name': 'المصدر', 'value': 'دَرْس/دِرَاس/دِرَاسَة'}, 'verb': 'دَرَس', 'passive_past_tense': {'howa': 'دُرِسَ', 'hum': 'دُرِسُوا', 'hunna': 'دُرِسْنَ', 'huma_female': 'دُرِسَتَا', 'antoma_female': 'دُرِسْتُمَا', 'antoma_male': 'دُرِسْتُمَا', 'nahno': 'دُرِسْنَا', 'anti': 'دُرِسْتِ', 'antom': 'دُرِسْتُم', 'antona': 'دُرِسْتُنَّ', 'ana': 'دُرِسْتُ', 'heya': 'دُرِسَتْ', 'anta': 'دُرِسْتَ', 'arabic_name': 'الفعل الماضي المبني للمجهول', 'huma_male': 'دُرِسَا'}, 'passive_present_tense_confirmed_heavy': {'howa': 'يُدْرَسَنَّ', 'hum': 'يُدْرَسُنَّ', 'hunna': 'يُدْرَسْنَانِّ', 'huma_female': 'تُدْرَسَانِّ', 'antoma_female': 'تُدْرَسَانِّ', 'antoma_male': 'تُدْرَسَانِّ', 'nahno': 'نُدْرَسَنَّ', 'anti': 'تُدْرَسِنَّ', 'antom': 'تُدْرَسُنَّ', 'antona': 'تُدْرَسْنَانِّ', 'ana': 'أُدْرَسَنَّ', 'heya': 'تُدْرَسَنَّ', 'anta': 'تُدْرَسَنَّ', 'arabic_name': 'الفعل المضارع المؤكد الثقيل المبني للمجهول', 'huma_male': 'يُدْرَسَانِّ'}, 'present_tense_jussive': {'howa': 'يَدْرُسْ', 'hum': 'يَدْرُسُوا', 'hunna': 'يَدْرُسْنَ', 'huma_female': 'تَدْرُسَا', 'antoma_female': 'تَدْرُسَا', 'antoma_male': 'تَدْرُسَا', 'nahno': 'نَدْرُسْ', 'anti': 'تَدْرُسِي', 'antom': 'تَدْرُسُوا', 'antona': 'تَدْرُسْنَ', 'ana': 'أَدْرُسْ', 'heya': 'تَدْرُسْ', 'anta': 'تَدْرُسْ', 'arabic_name': 'الفعل المضارع المجزوم', 'huma_male': 'يَدْرُسَا'}, 'passive_present_tense_indicative': {'howa': 'يُدْرَسَ', 'hum': 'يُدْرَسُوا', 'hunna': 'يُدْرَسْنَ', 'huma_female': 'تُدْرَسَا', 'antoma_female': 'تُدْرَسَا', 'antoma_male': 'تُدْرَسَا', 'nahno': 'نُدْرَسَ', 'anti': 'تُدْرَسِي', 'antom': 'تُدْرَسُوا', 'antona': 'تُدْرَسْنَ', 'ana': 'أُدْرَسَ', 'heya': 'تُدْرَسَ', 'anta': 'تُدْرَسَ', 'arabic_name': 'الفعل المضارع المنصوب المبني للمجهول', 'huma_male': 'يُدْرَسَا'}, 'passive_present_tense': {'howa': 'يُدْرَسُ', 'hum': 'يُدْرَسُونَ', 'hunna': 'يُدْرَسْنَ', 'huma_female': 'تُدْرَسَانِ', 'antoma_female': 'تُدْرَسَانِ', 'antoma_male': 'تُدْرَسَانِ', 'nahno': 'نُدْرَسُ', 'anti': 'تُدْرَسِينَ', 'antom': 'تُدْرَسُونَ', 'antona': 'تُدْرَسْنَ', 'ana': 'أُدْرَسُ', 'heya': 'تُدْرَسُ', 'anta': 'تُدْرَسُ', 'arabic_name': 'الفعل المضارع المبني للمجهول', 'huma_male': 'يُدْرَسَانِ'}, 'imperative_tense': {'howa': '', 'hum': '', 'hunna': '', 'huma_female': '', 'antoma_female': 'اُدْرُسَا', 'antoma_male': 'اُدْرُسَا', 'nahno': '', 'anti': 'اُدْرُسِي', 'antom': 'اُدْرُسُوا', 'antona': 'اُدْرُسْنَ', 'ana': '', 'heya': '', 'anta': 'اُدْرُسْ', 'arabic_name': 'فعل الأمر', 'huma_male': ''}, 'imperative_tense_confirmed': {'howa': '', 'hum': '', 'hunna': '', 'huma_female': '', 'antoma_female': 'اُدْرُسَانِّ', 'antoma_male': 'اُدْرُسَانِّ', 'nahno': '', 'anti': 'اُدْرُسِنَّ', 'antom': 'اُدْرُسُنَّ', 'antona': 'اُدْرُسْنَانِّ', 'ana': '', 'heya': '', 'anta': 'اُدْرُسَنَّ', 'arabic_name': 'فعل الأمر المؤكد', 'huma_male': ''}, 'past_tense': {'howa': 'دَرَسَ', 'hum': 'دَرَسُوا', 'hunna': 'دَرَسْنَ', 'huma_female': 'دَرَسَتَا', 'antoma_female': 'دَرَسْتُمَا', 'antoma_male': 'دَرَسْتُمَا', 'nahno': 'دَرَسْنَا', 'anti': 'دَرَسْتِ', 'antom': 'دَرَسْتُم', 'antona': 'دَرَسْتُنَّ', 'ana': 'دَرَسْتُ', 'heya': 'دَرَسَتْ', 'anta': 'دَرَسْتَ', 'arabic_name': 'الفعل الماضي', 'huma_male': 'دَرَسَا'}, 'participles_passive': {'arabic_name': 'اسم المفعول', 'value': 'مَدْرُوس'}, 'present_tense_confirmed_heavy': {'howa': 'يَدْرُسَنَّ', 'hum': 'يَدْرُسُنَّ', 'hunna': 'يَدْرُسْنَانِّ', 'huma_female': 'تَدْرُسَانِّ', 'antoma_female': 'تَدْرُسَانِّ', 'antoma_male': 'تَدْرُسَانِّ', 'nahno': 'نَدْرُسَنَّ', 'anti': 'تَدْرُسِنَّ', 'antom': 'تَدْرُسُنَّ', 'antona': 'تَدْرُسْنَانِّ', 'ana': 'أَدْرُسَنَّ', 'heya': 'تَدْرُسَنَّ', 'anta': 'تَدْرُسَنَّ', 'arabic_name': 'الفعل المضارع المؤكد الثقيل', 'huma_male': 'يَدْرُسَانِّ'}, 'participles_active': {'arabic_name': 'اسم الفاعل', 'value': 'دَارِس'}, 'present_tense_indicative': {'howa': 'يَدْرُسَ', 'hum': 'يَدْرُسُوا', 'hunna': 'يَدْرُسْنَ', 'huma_female': 'تَدْرُسَا', 'antoma_female': 'تَدْرُسَا', 'antoma_male': 'تَدْرُسَا', 'nahno': 'نَدْرُسَ', 'anti': 'تَدْرُسِي', 'antom': 'تَدْرُسُوا', 'antona': 'تَدْرُسْنَ', 'ana': 'أَدْرُسَ', 'heya': 'تَدْرُسَ', 'anta': 'تَدْرُسَ', 'arabic_name': 'الفعل المضارع المنصوب', 'huma_male': 'يَدْرُسَا'}, 'base': {'arabic_name': 'الأساس', 'value': 'دَرَسَ'}}, {'present_tense': {'howa': 'يُدَرِّسُ', 'hum': 'يُدَرِّسُونَ', 'hunna': 'يُدَرِّسْنَ', 'huma_female': 'تُدَرِّسَانِ', 'antoma_female': 'تُدَرِّسَانِ', 'antoma_male': 'تُدَرِّسَانِ', 'nahno': 'نُدَرِّسُ', 'anti': 'تُدَرِّسِينَ', 'antom': 'تُدَرِّسُونَ', 'antona': 'تُدَرِّسْنَ', 'ana': 'أُدَرِّسُ', 'heya': 'تُدَرِّسُ', 'anta': 'تُدَرِّسُ', 'arabic_name': 'الفعل المضارع', 'huma_male': 'يُدَرِّسَانِ'}, 'passive_present_tense_jussive': {'howa': 'يُدَرَّسْ', 'hum': 'يُدَرَّسُوا', 'hunna': 'يُدَرَّسْنَ', 'huma_female': 'تُدَرَّسَا', 'antoma_female': 'تُدَرَّسَا', 'antoma_male': 'تُدَرَّسَا', 'nahno': 'نُدَرَّسْ', 'anti': 'تُدَرَّسِي', 'antom': 'تُدَرَّسُوا', 'antona': 'تُدَرَّسْنَ', 'ana': 'أُدَرَّسْ', 'heya': 'تُدَرَّسْ', 'anta': 'تُدَرَّسْ', 'arabic_name': 'الفعل المضارع المجزوم المبني للمجهول', 'huma_male': 'يُدَرَّسَا'}, 'src': {'arabic_name': 'المصدر', 'value': 'تَدْرِيس'}, 'verb': 'دَرَّس', 'passive_past_tense': {'howa': 'دُرِّسَ', 'hum': 'دُرِّسُوا', 'hunna': 'دُرِّسْنَ', 'huma_female': 'دُرِّسَتَا', 'antoma_female': 'دُرِّسْتُمَا', 'antoma_male': 'دُرِّسْتُمَا', 'nahno': 'دُرِّسْنَا', 'anti': 'دُرِّسْتِ', 'antom': 'دُرِّسْتُم', 'antona': 'دُرِّسْتُنَّ', 'ana': 'دُرِّسْتُ', 'heya': 'دُرِّسَتْ', 'anta': 'دُرِّسْتَ', 'arabic_name': 'الفعل الماضي المبني للمجهول', 'huma_male': 'دُرِّسَا'}, 'passive_present_tense_confirmed_heavy': {'howa': 'يُدَرَّسَنَّ', 'hum': 'يُدَرَّسُنَّ', 'hunna': 'يُدَرَّسْنَانِّ', 'huma_female': 'تُدَرَّسَانِّ', 'antoma_female': 'تُدَرَّسَانِّ', 'antoma_male': 'تُدَرَّسَانِّ', 'nahno': 'نُدَرَّسَنَّ', 'anti': 'تُدَرَّسِنَّ', 'antom': 'تُدَرَّسُنَّ', 'antona': 'تُدَرَّسْنَانِّ', 'ana': 'أُدَرَّسَنَّ', 'heya': 'تُدَرَّسَنَّ', 'anta': 'تُدَرَّسَنَّ', 'arabic_name': 'الفعل المضارع المؤكد الثقيل المبني للمجهول', 'huma_male': 'يُدَرَّسَانِّ'}, 'present_tense_jussive': {'howa': 'يُدَرِّسْ', 'hum': 'يُدَرِّسُوا', 'hunna': 'يُدَرِّسْنَ', 'huma_female': 'تُدَرِّسَا', 'antoma_female': 'تُدَرِّسَا', 'antoma_male': 'تُدَرِّسَا', 'nahno': 'نُدَرِّسْ', 'anti': 'تُدَرِّسِي', 'antom': 'تُدَرِّسُوا', 'antona': 'تُدَرِّسْنَ', 'ana': 'أُدَرِّسْ', 'heya': 'تُدَرِّسْ', 'anta': 'تُدَرِّسْ', 'arabic_name': 'الفعل المضارع المجزوم', 'huma_male': 'يُدَرِّسَا'}, 'passive_present_tense_indicative': {'howa': 'يُدَرَّسَ', 'hum': 'يُدَرَّسُوا', 'hunna': 'يُدَرَّسْنَ', 'huma_female': 'تُدَرَّسَا', 'antoma_female': 'تُدَرَّسَا', 'antoma_male': 'تُدَرَّسَا', 'nahno': 'نُدَرَّسَ', 'anti': 'تُدَرَّسِي', 'antom': 'تُدَرَّسُوا', 'antona': 'تُدَرَّسْنَ', 'ana': 'أُدَرَّسَ', 'heya': 'تُدَرَّسَ', 'anta': 'تُدَرَّسَ', 'arabic_name': 'الفعل المضارع المنصوب المبني للمجهول', 'huma_male': 'يُدَرَّسَا'}, 'passive_present_tense': {'howa': 'يُدَرَّسُ', 'hum': 'يُدَرَّسُونَ', 'hunna': 'يُدَرَّسْنَ', 'huma_female': 'تُدَرَّسَانِ', 'antoma_female': 'تُدَرَّسَانِ', 'antoma_male': 'تُدَرَّسَانِ', 'nahno': 'نُدَرَّسُ', 'anti': 'تُدَرَّسِينَ', 'antom': 'تُدَرَّسُونَ', 'antona': 'تُدَرَّسْنَ', 'ana': 'أُدَرَّسُ', 'heya': 'تُدَرَّسُ', 'anta': 'تُدَرَّسُ', 'arabic_name': 'الفعل المضارع المبني للمجهول', 'huma_male': 'يُدَرَّسَانِ'}, 'imperative_tense': {'howa': '', 'hum': '', 'hunna': '', 'huma_female': '', 'antoma_female': 'دَرِّسَا', 'antoma_male': 'دَرِّسَا', 'nahno': '', 'anti': 'دَرِّسِي', 'antom': 'دَرِّسُوا', 'antona': 'دَرِّسْنَ', 'ana': '', 'heya': '', 'anta': 'دَرِّسْ', 'arabic_name': 'فعل الأمر', 'huma_male': ''}, 'imperative_tense_confirmed': {'howa': '', 'hum': '', 'hunna': '', 'huma_female': '', 'antoma_female': 'دَرِّسَانِّ', 'antoma_male': 'دَرِّسَانِّ', 'nahno': '', 'anti': 'دَرِّسِنَّ', 'antom': 'دَرِّسُنَّ', 'antona': 'دَرِّسْنَانِّ', 'ana': '', 'heya': '', 'anta': 'دَرِّسَنَّ', 'arabic_name': 'فعل الأمر المؤكد', 'huma_male': ''}, 'past_tense': {'howa': 'دَرَّسَ', 'hum': 'دَرَّسُوا', 'hunna': 'دَرَّسْنَ', 'huma_female': 'دَرَّسَتَا', 'antoma_female': 'دَرَّسْتُمَا', 'antoma_male': 'دَرَّسْتُمَا', 'nahno': 'دَرَّسْنَا', 'anti': 'دَرَّسْتِ', 'antom': 'دَرَّسْتُم', 'antona': 'دَرَّسْتُنَّ', 'ana': 'دَرَّسْتُ', 'heya': 'دَرَّسَتْ', 'anta': 'دَرَّسْتَ', 'arabic_name': 'الفعل الماضي', 'huma_male': 'دَرَّسَا'}, 'participles_passive': {'arabic_name': 'اسم المفعول', 'value': 'مُدَرَّس'}, 'present_tense_confirmed_heavy': {'howa': 'يُدَرِّسَنَّ', 'hum': 'يُدَرِّسُنَّ', 'hunna': 'يُدَرِّسْنَانِّ', 'huma_female': 'تُدَرِّسَانِّ', 'antoma_female': 'تُدَرِّسَانِّ', 'antoma_male': 'تُدَرِّسَانِّ', 'nahno': 'نُدَرِّسَنَّ', 'anti': 'تُدَرِّسِنَّ', 'antom': 'تُدَرِّسُنَّ', 'antona': 'تُدَرِّسْنَانِّ', 'ana': 'أُدَرِّسَنَّ', 'heya': 'تُدَرِّسَنَّ', 'anta': 'تُدَرِّسَنَّ', 'arabic_name': 'الفعل المضارع المؤكد الثقيل', 'huma_male': 'يُدَرِّسَانِّ'}, 'participles_active': {'arabic_name': 'اسم الفاعل', 'value': 'مُدَرِّس'}, 'present_tense_indicative': {'howa': 'يُدَرِّسَ', 'hum': 'يُدَرِّسُوا', 'hunna': 'يُدَرِّسْنَ', 'huma_female': 'تُدَرِّسَا', 'antoma_female': 'تُدَرِّسَا', 'antoma_male': 'تُدَرِّسَا', 'nahno': 'نُدَرِّسَ', 'anti': 'تُدَرِّسِي', 'antom': 'تُدَرِّسُوا', 'antona': 'تُدَرِّسْنَ', 'ana': 'أُدَرِّسَ', 'heya': 'تُدَرِّسَ', 'anta': 'تُدَرِّسَ', 'arabic_name': 'الفعل المضارع المنصوب', 'huma_male': 'يُدَرِّسَا'}, 'base': {'arabic_name': 'الأساس', 'value': 'دَرَّسَ'}}]}
يَدْرُسُ
					

ثالثاً: أداة استخراج التشكيلات

تعمل هذه الأداة على إيجاد التشكيلات الصحيحة والمستعملة المختلفة للفعل (بغض النظر عن التصريف الحالي له).
						from arabitools import arabitools as arabi

verb = 'يلعبون'
res = arabi.getVerbTashkeel(verb) #  can set output="pandas" as input parameter to get dataframe 
display(res)
النتيجة:
						['يُلَعِّبُونَ', 'يُلَعَّبُونَ', 'يَلْعَبُونَ', 'يُلْعِبُونَ', 'يُلْعَبُونَ']
					

رابعاً: أداة استخراج وزن الفعل (الميزان الصرفي)

تعمل الأداة على استخراج الوزن للكلمة المدخلة مع التشكيلات المختلفة
						from arabitools import arabitools as arabi

verb = 'يلعبون'
res = arabi.getVerbWazen(verb) #verb weights with diacritical marks
display(res)
النتيجة:
						['يُفَعِّلُونَ','يُفَعَّلُونَ','يَفْعَلُونَ','يُفْعِلُونَ','يُفْعَلُونَ','يفعلون']
					

خامساً: أداة ايجاد كلمات ذات علاقة ومرادفات للكلمة المُدخلة

تعمل الأداة على ايجاد الكلمات ذات العلاقة والمرادفات للكلمة المُدخلة وتعيد قائمة بالنتائج.
						from arabitools import arabitools as arabi

word = 'جميل'
res = arabi.getSynonyms(word)
display(res)
النتيجة:
						['ظريف','جذاب','جميل','ممتع','جَمُلَ بِـ','وسيم','وَسِيم','زَيّن','جَدُرَ بـ','إحْسان','زَخْرَف','حَسَن','عظيم','رائع','جَمّل','حَلّى','جَمِيل','حسن','لطيف','جيد','طيب','بَهْرَج']
					

سادساً: استخراج الأصل المعجمي

						from arabitools import arabitools as arabi

text = 'ويمنح التحديث الجديد المطورين وصولًا أكبر بكثير إلى الجدول الزمني'
res = arabi.getLemma(text, output="pandas")
display(res)
النتيجة:

سابعاً: استخراج اقسام الكلام

						from arabitools import arabitools as arabi

text = 'يدرس الطلاب في الصف الكثير من المواد التعليمية'
res = arabi.getPOSTags(text, output="pandas")
display(res)
النتيجة: