بداية لفهم نص أي لغة في العالم ينبغي فهم المكونات الأساسية لهذا النص ألا وهي الكلمات، فهم وتحليل الكلمة أو مايسمى بالتحليل الصرفي (morphological analysis) هو الأساس في تطبيقات استرجاع المعلومات (Information Retrieval) وهي التطبيقات التي تبنى عليها برامج الأرشفة، محركات البحث، محركات قواعد البيانات، تلخيص النصوص ومعالجة اللغات الطبيعية.
بعض الطرق لفهم الكلمة تعتمد على إرجاع الكلمة إلى جذرها (Root)، بينما يعتمد البعض الآخر على إرجاع الكلمة لأصلها (Stem) أي إزالة البوادىء واللواحق، وبمثال بسيط يتوضح الأمر: لنقل أن لدي كلمة “وكتابهم” فجذر هذه الكلمة هو “كتب” أم أصلها (stem) فهو “كتاب” بإزالة البوادىء واللواحق.
كلتا الطريقتين فعالتين وتستخدم الأولى (الجذر) في تطبيقات معالجة اللغات حيث نحتاج إلى جذر الكلمة، أما الثانية (الأصل) فتستخدم غالباً في تطبيقات تلخيص وأرشفة النصوص حيث لانحتاج إلى جذر الكلمة.
الوصول للجذر أو الأصل في اللغة العربية ليس بالأمر السهل فمن المعروف أن اللغات السامية من اللغات المعقدة بنيوياً، وبشكل عام يوجد أربع طرق مشهورة لمعالجة اللغة العربية:
- المقارنة المباشرة: حيث يستعمل التطبيق قائمة كبيرة من الكلمات ويقارن الكلمة المدخلة مع كامل القائمة لإيجاد الكلمة المطابقة لها والمعلومات المتعلقة بهذه الكلمة.
- معالجة اللغة: تتفرع هذه الطريقة للكثير من الأساليب والطرق (سنتحدث عنهم لاحقاً)، تعتمد على إزالة الزوائد من الكلمة (البوادىء الأحرف الزائدة في بداية الكلمة واللواحق الأحرف الزائدة في نهايتها والأحرف الزائدة في منتصف الكلمة) ثم الوصول إلى الجذر (شرح مبسط جداً فقط لتوضيح الفكرة بينما الطريقة فيها الكثير من التفاصيل).
- الدمج أو المجموعة: حيث تأخذ الكلمة المدخلة ويتم توليد عدة كلمات منها (مجموعة)، ونقارن هذه المجموعة مع قائمة بجذور الكلمات وعند وجود تطابق يكون هذا التطابق هو جذر تلك الكلمة.
- القواعد (Rule-based): كل مجموعة متشابهة من حيث الشكل من الكلمات يتم توليد قالب أو باترن لها.
بالتأكيد في الطريقة الأولى يوجد ضياع كبير بمساحة التخزين حيث نحتاج لمساحة هائلة إذا علمنا أن العدد التقديري لكلمات اللغة العربية هو من مرتبة 10 قوة 10 أي العشرة مليارات! بينما الطريقة الثانية هي الأكثر شيوعاً واستخداماً وكفاءةً وسنتحدث عنها بإذن الله في المرات القادمة بتوسع ونرى ماتم إنجازه في منقح اللغة العربية.
المصادر:
- Ahmed, Mohamed Attia, “A Large-Scale Computational Processor of the Arabic Morphology, and Applications.”
- Ibrahim A. Al Kharashi, Imad A. Al Sughaiyer “Rule merging in a rule-based Arabic stemmer”
ملاحظة: تم تحديث التدوينة وإضافة الطريقة الرابعة لمعالجة اللغة العربية.
لقد برمجت برنامجاً بلغة الجافا يقوم بهذه المهمة , وقد كان مشروع لمادة برمجة 2 في الجامعة , والحمد لله كان فعالاً حيث استخدمنا قواعد اللغة العربية في معرفة السوابق واللواحق ثم إزالتها , لكن الكلمات التي تشذ عن القاعدة لم يكن يسترجع جذورها , بالمجمل المشروع كان رائعاً ولحتى الآن لم أنشره , وحاولت تحويله إلى لغة PHP لكن الأمر استصعب علي خصوصاً في الدوال التي تحذف الحروف من الكلمات أعتقد أنها لا تعمل مع اللغة العربية .
أهلاً بالسيد وسيم، ولماذا لم تنشره حتى الآن! الأخوة في اجتماع مهاويس التقنية (http://www.arabtechies.net/node/71) قاموا بالكثير من العمل الرائع وسأحاول أن اطلع على نتائج عملهم في مجال التجذير (إيجاد الجذر) وكلمات التوقف كي لا أقوم بتكرار نفس العمل.
اخوي وسيم الله لا يهينك انا انوي البحث في نفس الموضوع
ارجو ان تساعدني وتتواصل معي
ramooozy@gmail.com
يا ريت اخ وسيم اتوضحلنا اكتر كيف اتمكنت من عمل البرنامج خاصة كيف تم حذف الزوائد (السوابق واللواحق) من الكلمة
مع جزيل الشكر والامتنان