معالجة اللغة العربية Arabic Natural Language Processing – مقدمة (الجزء الأول)

784

للكمبيوتر قدرة مذهلة في التعامل مع البيانات المنظمة مثل الجداول وقواعد البيانات. لكننا كبشر نتواصل بالكلام لا بالجداول. كثير من المعلومات في عالمنا غير منظمة، في هيئة نصوص مكتوبة بلغة او اخرى. كيف نساعد الكمبيوتر لفهم لغات البشر في صورتها المسردة ليستخرج الكمبيوتر بيانات منظمة؟

علم معالجة اللغات الطبيعية NLP  يندرج تحت مجال الذكاء الصناعي AI، ويهدف لمساعدة الكمبيوتر على فهم اللغات البشرية. سنعرض كيف يعمل الـ NLP  ويساعدنا على كتابة برامج تمكننا من استخراج معلومات مفيدة من النصوص.

هل يستطيع الكمبيوتر فهم اللغات؟

منذ اختراع الكمبيوتر يحاول المبرمجون كتابة برامج تفهم لغة البشر. مثل هذه البرامج ستساعد الكمبيوتر على فهم العلوم البشرية المدونة في صورة نصوص على مدار الاف السنين.

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

وبتطور المجال فقد صار اسهل استخداما عن طريق المكتبات مفتوحة المصدر مثل spaCy، textacy، و neralcoref. مثل هذه المكتبات تمكنك من انجاز الكثير بقليل من سطور الكود.

صعوبة استخراج معنى الكلام

إن فهم الإنسان للغة عملية معقدة، واللغات البشرية نفسها معقدة ويصعب وصفها بقواعد منطقية محددة مثل الجبر والهندسة. ما معنى المثال الآتي؟

لم أقُل أنه سرق مالي

هل أعني أنه لم يسرق؟ أم أنه سرق مني لكن ليس مالي؟ أم أنه سرق مالا ليس لي؟ أم أني أظن أنه سرق ولكني لم أفصح بهذا؟
شرح للكمبيوتر مثل هذه الجملة لن يكون سهلا

بناء أي تطبيق يستخدم تعلم الآلة Machine Learning  عادة ما يتطلب خطوات منظمة. اذا قسمنا المشكلة لخطوات صغيرة يمكننا يستخدام الـ Machine Learning  لحل كل جزء صغير بمفرده. بربط هذه الاجزاء الصغيرة يمكننا انجاز مهام اصعب.

خطواط الـ NLP

سنشرح خطوات الـ NLP  بالتفصيل على مثال واحد ليبين كل خطوة، سنستخدم هذا المثال:

لندن هي عاصمة المملكة المتحدة وأكبر مدنها. تقع على نهر التيمز في جنوب بريطانيا وتعد من أهم المدن لأكثر من ألفي سنة. أسسها الرومان وسموها لندنيام.

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

الخطوة الأولى: تقسيم الجمل Sentence Segmentation

نبدأ بتقسيم الفقرة إلى جمل منفصلة كالآتي:

  •  “لندن هي عاصمة المملكة المتحدة وأكبر مدنها.”
  • “تقع على نهر التيمز في جنوب بريطانيا وتعد من أهم المدن لأكثر من ألفي سنة.”
  • “أسسها الرومان وسموها لندنيام.”

هذا التقسيم من باب التسهيل إذا اعتبرنا كل جملة تعبر عن فكرة بذاتها. التعامل مع جمل مفردة أسهل من التعامل مع فقرة بأكملها.

تقسيم الجمل قد يكون بسيط كاستخدام علامات الترقيم، لكن الأنظمة الحديثة تعتمد على طرق أكثر تعقيدا لتتعامل مع النصوص بدون علامات ترقيم.

الخطوة الثانية: تحديد الكلمات  Word Tokenization

بعد تقسيم النص إلى جمل، نحتاج أن نقسم الجمل إلى كلمات؛ التي تعتبر أصغر وحدة للمعنى في كلامنا. إذا حللنا أول جملة في المثال:

“لندن هي عاصمة المملكة المتحدة وأكبر مدنها.”

نحدد الكلمات كالآتي:

“لندن”، “هي”، “عاصمة”، “المملكة”، “المتحدة”، “و”، “أكبر”، “مدنــ”، “ـها”، “.”

تحديد الكمات يختلف من لغة لأخرى، مثلا في الإنجليزية التحديد بالمسافات، لكن في العربية أحيانا يتصل حروف بالكلمة مثل “مدنها” -> “مدنــ”، “ـها”

الخطوة الثالثة: تصنيف أقسام الكلام  Part-of-speech tagging

هنا نقسم الكلمات إلى اسم وفعل وحرف وضمائر الخ. معرفة أصناف الكلام تساعدنا على فهم سياق الجملة.

تعتمد هذه العملية على النظر على جيران كل كلمة لاستنتاج نوعها.

هذا تطبيق للـ Machine Learning  حيث نعلم الكمبيوتر توقع نوع الكلمة بدلالة جيرانها باستخدام العديد (ملايين) من الأمثلة التي حددنها يدويا.

لاحظ أن هذا التطبيق لا يفهم معاني الكلمات، ما هو إلا نظام يعتمد على نظريات الإحصاء والاحتمالات ليتوقع أنواع الكلمات بناء على الأمثلة المحددة يدويا labelled data

في هذه الخطوة نبدأ نرى فوائد الـ NLP؛ فأن نعرف أن الأسماء في الجملة منها “لندن” و “عاصمة” يمكننا من تحديد موضوع الجملة أنه عن مدينة لندن.

الخطوة الرابعة: إرجاع الكلام لأصله Stemming & Lemmatization

في اللغة العربية تشتق الكلمات من مصادرها مثل:

كرسي، كراسي -> ك ر س

وفي اللغات الأخرى كذلك أصول للكلمات لكن ليس بالتحديد مثل المصادر في العربية، مثال في الإنجليزية:

pony, ponies -> pony

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

هناك طريقتان لإرجاع الكلام لأصله:

  • stemming: وهي ارجاع الكلمة لأبسط شكل لها بدون فقد المعنى. لاحظ أنه من السهل إرجاع الكلمات لمصادرها في العربية لكن هذا يضيع من المعنى. مثال: كتاب وكاتب – إذا أرجعناهما إلى المصدر يكون “كتب” ونفقد معنى الفاعل “كاتب” وموضع الكتابة “كتاب”
  • lemmatization: ويختلف عن السابق في أنه يرجع الكلمات إلى أقرب كلمة مشتركة في المعنى حتى لو اختلفت في المصدر. مثال: إبل، جمال، ناقة -> جمل

عادة ما يتم الإرجاع عن طريق قاموس يكتب يدويا لنعرف أصل كل كلمة

الخطوة الخامسة: التعرف على الكلمات الشائعة Identifying Stop Words

هنالك العديد من الكلمات التي تتكرر بكثرة لدرجة أنها تفقد قيمتها في المعنى. مثل هذه الكلمات الضمائر “هي” وحروف العطف “و”. عادة تعد نوعا من الضوضاء اللغوي وإزالتها تساعد التعلم على التركيز على باقي الكلام.

هناك قوائم للكلمات الشائعة لكل لغة، لكن قد تحتاج تحديد الكلمات حسب التطبيق الذي تستخدمه. أحيانا الكلمات الشائعة قد تكون مهمة في سياق الكلام فلا نعتبرها كلمة شائعة في هذا التطبيق.

الخطوة السادسة: تحليل التبعية (الإعراب) Dependancy Parsing

وهو تحديد الكلمات بعضها ببعض.

نهدف لبناء شجرة نحوية لها جذر وتصل فروعها لكل الكلمات في الجملة.

يمكننا أيضا اضافة معلومات نحوية للشجرة عن طريق تحديد العلاقات بين الكلمات (إن وُجدت) وهو يشبه الإعراب في تحديد المبتدأ والنعت والمضاف إليه وغيره.

تظهر الشجرة أن المبتدأ هو “لندن” ولها علاقة “هي” مع “عاصمة”. وهذه أول معلومة مفيدة استخرجناها، أن “لندن” تعتبر “عاصمة”! ويمكننا تحديد أيضا أنها عاصمة “المملكة المتحدة”.

يمكننا استخدام الـ Machine Learning لتعلم تحليل التبعية، لشرح هذه العملية نحتاج لمقال منفصل قد نقدمه لاحقا.

حاليا تستخدم أقوى أنظمة تحليل التبعية تقنيات الـ deep learning، يمكن الاطلاع على هذه الأمثلة Parsey McParseface  و ParseySaurus. لا يزال الأمر مشكلة بحثية قابلة للتحسين.

لاحظ أن الإعراب ليس سهلا، فأحيانا تكون الجمل غامضة مثل:

اغتنم الفرصة سريعة الفوت بطيئة العود

هل “سريعة الفوت” جملة خبر أول و”بطيئة العود” خبر ثانٍ؟ أم الأولى نعت والثانية خبر؟

الكمبيوتر يعتمد على الاحتمالات ويأتي بالإعراب الأكثر احتمالا ولكن أحيانا يكون يخطيء أخطاء قد نميزها نحن بسهولة.

الخطوة السادسة (ب): استخراج جمل الخبر والحال Finding Noun Phrases

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

لندن هي عاصمة المملكة المتحدة وأكثر مدنها ازدحاما

                                                (في محل خبر)

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

الخطوة السابعة: استخراج الأعلام Named Entity Recognition (NER)

باستخدام الخطوات السابقة يمكننا الانتقال لهذه الخطوة التي تعطينا معلومات مفيدة جدا.

الهدف هو استخراج الأعلام من الكلام مثل:

  • أسماء الأشخاص
  • أسماء المؤسسات
  • أسماء أماكن (دول ومدن)
  • أسماء منتجات
  • تواريخ
  • أحداث

في مثالنا نستطيع التعرف على “لندن” و”المملكة المتحدة” و”نهر التيمز” و “الرومان”

هذا مثال واضح لاستخراج بيانات منظمة من النصوص المسردة. الأعلام تفيد في في استخراج النصوص ذات صلة بعلم محدد مثل شركة أو منتج.

قد نظن أن الأمر سهل وما هو إلا قائمة من أسماء الأعلام المشهورة، لكن كثير من الأعلام أسماءها كلمات قد تظهر في سياق غير العلم مثال:

لندن عاصمة المملكة المتحدة

المملكة المتحدة خير من المملكة المفككة

في الأولى “المملكة المتحدة” هي البلد، وفي الثانية هي وصف لأي مملكة تكون متحدة.

الخطوة الثامنة: تحليل المرجعية المشتركة Co-reference resolution

بعد الإعراب صار معنا صورة منظمة من الكلام وبإضافة الـ POS و NER  نتمكن من معرفة علاقات الكلمات ببعض وأي منها يمثل علماً.

لكن تبقى مشكلة كبيرة وهي فهم الضمائر؛ لأي كلمة تشير (مرجعية). نستطيع نحن تمييز الضمائر بصورة مذهلة ودون أن نشعر بأي صعوبة. لكن الكمبيوتر لا يفهم الضمائر ومعانيها وعلى أي الكلام تعود. في مثالنا:

أسسها الرومان وسموها لندنيام

نحن نعرف أن الضمير “ـها” يعود على “لندن” وأن واو الجمع في “سموها” تعود على “الرومان”

حل مرجعية الضمائر هو هدف الـ Co-reference resolution.

يعتبر الـ  Co-reference resolution أصعب الخطوات المذكورة، حتى الإعراب. ساعدت التطورات الحديثة في الـ deep learning  تحسين كفاءته ولكنه ليس مثالي. إن الضمائر قد تحتوي غموضاً يتطلب معرفة طبيعة العالم. مثال:

ضرب الأولُ الثاني فبكى

نعرف أن الأول هو الفاعل (الضارب) والثاني هو المفعول به (المضروب) ولكن من الذي “بكى”؟ معرفتنا عن العالم تخبرنا أنه في الغالب الثاني هو الذي بكى، لكن لغة ومعنى لا خطأ في قول أن الأول هو الذي بكى!

بهذه الخطوات يمكننا استخراج معلومات مفيدة:

  • مدينة لندن عاصمة المملكة المتحدة
  • تقع مدينة لندن على نهر التيمز
  • الرومان أسسوا مدينة لندن

تعليقات