يعد التجذير أحد أساليب ضبط النص العديدة التي تحوِّل بيانات النص الخام إلى تنسيق قابل للقراءة لمهام معالجة اللغة الطبيعية.
يُعد التجذير أسلوبًا من أساليب المعالجة المسبقة للنص في مجال معالجة اللغة الطبيعية (NLP). وتعني، على وجه التحديد، عملية إرجاع الشكل المصرَّف للكلمة إلى ما يسمى "الجذع" أو جذر الكلمة، ويُعرف أيضًا باسم "كلمة الأساس" في علم اللغة.1 وهي واحدة من طريقتين أساسيتين، والطريقة الأخرى هي تجريد الكلمة، ويحدث في التجذير تقليل المتغيرات التصريفية ضمن مجموعة بيانات نصية إلى مفردة (وحدة معجمية) مورفولوجية واحدة. وهكذا يتمثل الهدف من التجذيع في تحسين معالجة النصوص في التعلم الآلي واسترجاع المعلومات.
تعمل الآلات، من وظائف البحث وحتى نماذج التعلم العميق، على معالجة اللغات إلى حد كبير بناءً على الصيغة اللغوية، لكن العديد من الباحثين يزعمون أن أجهزة الكمبيوتر لا تستطيع فهم المعنى الذي تعكسه اللغة.2 وبينما يعارض بعض الأشخاص هذه النقطة الأخيرة، فإن الواقع يبين أن نماذج التعلم الآلي تحتاج إلى التدريب حتى تتمكن من التعرف على الكلمات المختلفة كمشتقات صرفية من كلمة واحدة. على سبيل المثال، في محركات البحث أو فهارس المكتبات، يمكن أن يتضمن استعلام المستخدمين كلمة واحدة (على سبيل المثال، استثمار) لكنهم يتوقعون ظهور نتائج تستخدم أي نموذج كلمة موجهة (على سبيل المثال، يستثمر والاستثمار والاستثمارات وما إلى ذلك). ومن خلال ردِّ أشكال الكلمات المشتقة إلى أصل الكلمة وهو جذع واحد، يساعد التجذير أنظمة استرجاع المعلومات على مساواة الكلمات ذات الصلة من الناحية المورفولوجية (تشكُّليًّا).3
يساعد التجذير، في الكثير من مهام استخراج النصوص التي تشمل تصنيف النصوص، والتجميع، والفهرسة، وغير ذلك الكثير، على تحسين الدقة عن طريق تقليص أبعاد خوارزميات التعلم الآلي وتجميع الكلمات بناءً على دلالتها، إذ يؤدي تقليل أبعاد الخوارزمية إلى تحسين دقة وإحكام نماذج البرمجة اللغوية العصبية (NLP)، مثل نماذج المواضيع وتضمين الكلمات.4 ومن ثَم يؤدي التجذيع إلى تحسين الدقة عند تنفيذ مهام معالجة اللغة الطبيعية المختلفة، مثل تحليل المشاعر عند تصنيف أقسام الكلام. وبهذه الطريقة، يعد التجذير خطوة مهمة في تطوير نماذج لغوية كبيرة.
يُعد التجذير إحدى مراحل عملية استخراج النصوص التي تحول البيانات النصية غير المنسقة إلى تنسيق منظم من أجل إجراء المعالجة الآلية، إذ يزيل التجذير في الأساس اللواحق من الكلمات، فلا يتبقى سوى أساس الكلمة.5 ويؤدي هذا إلى إزالة الأحرف من الرموز المميزة لنهاية الكلمة. ومع ذلك، وبعيدًا عن هذا التشابه الأساسي، تختلف خوارزميات التجذير كثيرًا.
لاستكشاف الاختلافات بين عمليات الخوارزمية الناشئة، يمكننا معالجة سطر مقتبس من مسرحية شكسبير A Midsummer Night’s Dream: وهو السطر: “Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind.” قبل التجذير، على المستخدمين ترميز بيانات النص الخام برموز مميزة. يُخرج الرمز المميز المدمج في مجموعة أدوات لغة Python الطبيعية (NLTK) النص المقتبس على النحو التالي:
Tokenized: ['Love', 'looks', 'not', 'with', 'the', 'eyes', 'but', 'with', 'the', 'mind', ',', 'and', 'therefore', 'is', 'winged', 'Cupid', 'painted', 'blind', '.']
ومن خلال تشغيل المخرجات المميزة عبر وحدات فرعية متعددة، يُمكننا ملاحظة مدى اختلاف خوارزميات التجذير.
تعد Lovins Stemmer أول خوارزمية تجذير منشورة. وهي تعمل في الأساس كوظيفة بحث واستبدال ذات معلمات فائقة. فهي تقارن كل رمز إدخال مميز بقائمة من اللواحق الشائعة، حيث تكون كل لاحقة مشروطة بواحدة من 29 قاعدة. فإذا وجدت لاحقة من اللواحق الموجودة في القائمة في الرمز، وكانت إزالة تلك اللاحقة لا تؤدي إلى الإخلال بأي شرط من شروط هذه اللاحقة، فإن الخوارزمية تُزيل تلك اللاحقة من الرمز. ثم يُقارن الرمز الناتج بعد حذف اللواحق بمجموعة أخرى من القواعد لتصحيح أخطاء الصياغة الشائعة في أصول الكلمات المستنتجة، مثل الأحرف المزدوجة (على سبيل المثال، كلمة "hopping" تصبح "hopp" ثم "hop").6
يستخدم هذا الرمز مكتبة Python الخاصة بتجذير الكلمات،7لتجذير النص المقتبس من مسرحية شكسبير:
from stemming.lovins import stem from nltk.tokenize import word_tokenize text = "Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind." words = word_tokenize(text) stemmed_words = [stem(word) for word in words]
مخرجات الرمز:
Stemmed: ['Lov', 'look', 'not', 'with', 'th', 'ey', 'but', 'with', 'th', 'mind', ',', 'and', 'therefor', 'is', 'wing', 'Cupid', 'paint', 'blind', '.']
يوضح الإخراج كيف حولت خوارزمية Lovins stemmer جيدًا الاقترانات والأزمنة إلى أشكال أساسية (على سبيل المثال، كلمة painted أصبحت paint) مع التخلص من الجمع (على سبيل المثال، كلمة eyes أصبحت eye). لكن خوارزمية تجذير Lovins أرجعت أيضًا عددًا من الجذور غير الصحيحة ، مثل lov وth وey. هذه الكلمات الجذرية المشوهة نتجت عن إزالة عدد كبير جدًا من الأحرف. وكما هو الحال غالبًا في التعلم الآلي، تساعد مثل هذه الأخطاء على الكشف عن العمليات الأساسية.
عند مقارنة المقولة بقائمة لواحق خوارزمية Lovins stemmer، سنجد أن أطول لاحقة مشتركة بين كل من كلمتي love وthe هي الحرف المفرد e-. الشرط الوحيد المرتبط بهذه اللاحقة هو "No restrictions on stem"، مما يعني أنه يمكن إزالة الجذر e- بغض النظر عن طول الجذر المتبقي. لكن لسوء الحظ، لا الجذر lov ولا الجذر th يحتوي على أي من الخصائص التي تستخدمها خوارزمية Lovins للتعرّف على الكلمات المشوهة، مثل الحروف المزدوجة أو الجمع غير القياسي. 8
عندما تفلت مثل هذه الجذور المشوهة من الخوارزمية، يمكن لخوارزمية Lovins stemmer أن تقلل الكلمات غير المرتبطة لغويًا إلى نفس الجذر، على سبيل المثال، سيتم ردّ كل من الكلمات the و وthis إلى th. وبطبيعة الحال، هذه الكلمات الثلاث كلها أسماء إشارة، وبالتالي فإنها تشترك في وظيفة نحوية واحدة. أما أسماء الإشارة الأخرى، مثل that وthose، لا تُرد إلى th. وهذا يعني أن الجذور المُنشأة في خوارزمية Lovins لا تمثل مجموعات الكلمات جيدًا.
ومن حيث المقارنة بخوارزمية التجذيع Lovins Stemmer، نجد أن خوارزمية Porter Stemmer هي خوارزمية تجذيع أكثر رياضية. وبشكل أساسي، تُصنف خوارزمية التجذير هذه كل حرف إلى حرف ساكن ورمزه (c) أو متحرك ورمزه (v)، وتجمع الحروف الساكنة المتتابعة مع بعضها في رمز C والحروف الساكنة المتتابعة في رمز V. ومن ثَم تمثل خوارزمية التجذير رموز الكلمات على أنها مجموعة من الحروف الساكنة والمتحركة. وبعد تصنيفها بهذه الطريقة، تُخضع الخوارزمية كل رموز الكلمات إلى قائمة من القواعد التي تحدد الأحرف النهائية المطلوب إزالتها وفقًا لعدد مجموعات الحروف المتحركة والساكنة في الرمز الواحد.9 ونظرًا إلى أن اللغة الإنجليزية نفسها تتبع قواعد لغوية عامة وليست مطلقة، فإن المعيار المنهجي لخوارزمية Porter Stemmer التي تقوم على تحديد اللواحق التي ينبغي إزالتها يمكن أن ينتج عنه أخطاء.
يحتوي Python NLTK على وظيفة Porter Stemmer مضمنة. ويؤدي هذا الرمز إلى نشر خوارزمية التجذير Porter وتطبيقه على نص شكسبير المقتبس:
from nltk.stem import PorterStemmer from nltk.tokenize import word_tokenize porter_stemmer = PorterStemmer() text = "Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind." words = word_tokenize(text) stemmed_words = [porter_stemmer.stem(word) for word in words]
هذا الرمز يُرجع ما يلي:
Stemmed: ['love', 'look', 'not', 'with', 'the', 'eye', 'but', 'with', 'the', 'mind', ',', 'and', 'therefor', 'is', 'wing', 'cupid', 'paint', 'blind', '.']
وكما هو الحال مع خوارزمية Lovins، تُغيِّر خوارزمية Porter تصريفات الأفعال وجمع الأسماء على نحوٍ صحيح. ورغم عدم وجود جذور Lovins الأخرى المشوهة (مثل ردّ Love إلى lov، فإن خوارزمية تجذير Porter تزيل على نحوٍ خطأ e- من نهاية كلمة therefore.
ووفقًا لطريقة تجميع الحروف الساكنة والحروف المتحركة في Porter، تُمثّل therefore على أنها CVCVCVCV، أو C(VC)3V مع إشارة الأس إلى تكرار مجموعات الحروف الساكنة والحروف المتحركة..
تتمثل إحدى الخطوات النهائية للخوارزمية في أنه إذا لم تخضع الكلمة لأي عملية تجذير وكانت قيمة الأس أكبر من 1، فسيُحذف الحرف e- من نهاية الكلمة (إذا كان موجودًا). وسوف تساوي قيمة الأس لكلمة Therefore الرقم 3، ولا تحتوي على أي من اللواحق المدرجة في الشروط الأخرى للخوارزمية.10 وبالتالي، فإن كلمة therefore ستصبح therefor.
من المؤكد أن هذا هو الخطأ الوحيد في خوارزمية Porter Stemmer، وربما يكون هذا دليلًا على سبب كونها خوارزمية تحديد الجذر الأكثر انتشارًا. في الواقع، كانت خوارزمية Porter Stemmer بمثابة الأساس لكل خوارزميات التجذير التي ظهرت لاحقًا.
تعد خوارزمية Snowball Stemmer نسخة محدَّثة من خوارزمية Porter Stemmer. ورغم أنها تهدف إلى فرض مجموعة قواعد أقوى لتحديد إزالة اللواحق، إلا أنها ظلت عرضة للعديد من الأخطاء ذاتها. وتشبه مكتبة Python NLTK إلى حد كبير خوارزمية Porter Stemmer، وتحتوي على دالة Snowball Stemmer مدمجة:
from nltk.stem.snowball import SnowballStemmer from nltk.tokenize import word_tokenize stemmer = SnowballStemmer("english", True) text = "There is nothing either good or bad but thinking makes it so." words = word_tokenize(text) stemmed_words = [stemmer.stem(word) for word in words]
وينتج الناتج ذاته الذي حصلنا عليه من نص شكسبير عند استخدام خوارزمية Porter stemmer، إذ تقلصت كلمة therefore على نحوٍ غير صحيح إلى therefor:
Stemmed: ['love', 'look', 'not', 'with', 'the', 'eye', 'but', 'with', 'the', 'mind', ',', 'and', 'therefor', 'is', 'wing', 'cupid', 'paint', 'blind', '.']
لكن تختلف خوارزمية Snowball stemmer عن Porter في نقطتين رئيسيتين. النقطة الأولى: بينما تنبع جذور Lovins و Porter من الكلمات الإنجليزية فقط، نجد أن جذور Snowball يمكن أن تنبع من نصوص لغات رومانية أخرى، كالهولندية والألمانية والفرنسية بل وحتى الروسية. النقطة الثانية: يمكن لخوارزمية Snowball Stemmer عند تنفيذها عبر مكتبة Python NLTK أن تتجاهل كلمات الإيقاف. وكلمات الإيقاف هي مجموعة غير عمومية من الكلمات تُزال من مجموعة البيانات في أثناء المعالجة المسبقة. وتحتوي قائمة الإيقاف المحددة مسبقًا لخوارزمية Snowball Stemmer على كلمات ليس لها تعريف مفاهيمي مباشر، وتتضمن كلمات الإيقاف المدرجة في قائمة كلمات التوقف الإنجليزية الخاصة بخوارزمية Snowball stemmer الكلمات the وa وbeing ونحوها من الكلمات.11
تصف العديد من المصادر خوارزمية التجذيع Lancaster stemmer، المعروفة أيضًا باسم Paice Stemmer، بأنها الخوارزمية الأكثر قوة من حيث الإمكانات بين كل خوارزميات التجذير باللغة الإنجليزية، إذ تحتوي خوارزمية Lancaster Stemmer على قائمة تضم أكثر من 100 قاعدة تحدد سلاسل الأحرف النهائية، إن وجدت، المطلوب استبدالها بسلاسل أخرى، إن وجدت. وتُخضع خوارزمية التجذير كل رمز للكلمة إلى عمليات متكررة، وتتحقق من استيفائه لجميع القواعد. فإذا تطابقت سلسلة الرموز النهائية مع قاعدة ما، تفعّل الخوارزمية العملية الموصوفة في القاعدة ثم تتحقق مرة أخرى من استيفاء الكلمة الجديدة المحوَّلة لجميع القواعد. وتُجري خوارزمية التجذير عمليات متكررة للتأكد من استيفاء جميع القواعد حتى يجتاز الرمز جميع القواعد دون تحويله.12
ورغم أن خوارزمية Lancaster Stemmer غير متوفرة في مكتبة Python NLTK، فإنها متاحة في مكتبة التجذير:13
from stemming.paicehusk import stem from nltk.tokenize import word_tokenize text = "Love looks not with the eyes but with the mind, and therefore is winged Cupid painted blind." words = word_tokenize(text) stemmed_words = [stem(word) for word in words]
يتم في هذا الرمز تجذير نص فقرة شكسبير المميزة على النحو التالي:
Stemmed: ['Lov', 'look', 'not', 'with', 'the', 'ey', 'but', 'with', 'the', 'mind', ',', 'and', 'theref', '', 'wing', 'Cupid', 'paint', 'blind', '.']
من الواضح أن النهج التكراري لخوارزمية Lancaster Stemmer هو الأكثر قوة من بين كل خوارزميات التجذير كما هو واضح من خلال الكلمة theref. أولًا، تمتلك خوارزمية Lancaster Stemmer القاعدة "<e1"، إذ تُزيل هذه القاعدة الحرف المفرد -e دون استبدال. ثم بعد أن تُزيل الخوارزمية e- من الكلمة therefore، تُشغّل كلمة therefor الجديدة لتمر على كل قاعدة. والكلمة المحوَّلة حديثًا تناسب القاعدة "<ro2". فتؤدي هذه القاعدة إلى إزالة اللواحق المكونة من حرفين or- دون استبدالها. ولا يتناسب الجذر الناتج theref مع أي من قواعد الخوارزمية الأخرى، وبالتالي يتم إرجاعه كالجذر الأساسي. إذن على عكس خوارزمية Lovins، لا تمتلك خوارزمية Lancaster وسيلة لحساب الكلمات ذات التكوين غير الصحيح.
يوجد العديد من خوارزميات تجذير كلمات اللغة الإنجليزية، إضافةً إلى خوارزميات تجذير لكلمات لغات رومانية أخرى. وفي الآونة الأخيرة، اتجهت الأبحاث نحو تطوير وتقييم خوارزميات تجذير كلمات لغات غير رومانية. وقد تكون اللغة العربية، على وجه الخصوص، صعبة بسبب مورفولوجيتها المعقدة وتنويعاتها الإملائية. وقد ركزت مجموعة من الدراسات على تقييم مدى فعالية مختلف أدوات التجذيع باللغة العربية فيما يتعلق بمهام مثل التصنيف.14 بالإضافة إلى ذلك، تناول الباحثون الدور الذي تؤديه دقة التجذيع في تحسين مهام استرجاع المعلومات باللغة التاميلية15 والسنسكريتية.16
وبينما أثبتت الأبحاث أهمية دور التجذير في تحسين دقة مهام معالجة اللغة الطبيعية، فإن للتجذير مشكلتين أساسيتين يحتاج المستخدمون إلى الانتباه لهما. ويحدث التجذير بشكل زائد عن الحد عند اختزال كلمتين مختلفتين لغويًا إلى نفس الجذر، وبالتالي يتم دمجهما. بينما يشير النقص في التجذير إلى عدم إرجاع كلمتين مرتبطتين دلاليًا إلى الأصل نفسه.17 من الأمثلة على الإفراط في التجذير إرجاع خوارزمية التجذيع Lancaster Stemmer كلمة wander إلى wand، وهما مصطلحان مختلفان دلاليًا في اللغة الإنجليزية. ومع ذلك ، فإن كلاً من Porter و Lovins stemmer لا يتغيران على الإطلاق. ومن الأمثلة على التجذير على نحوٍ ناقص عن الحد عدم اختزال خوارزمية تجذير Porter كلمة knavish إلى knavish واختزال كلمة knave إلى knave، وهما تشتركان في نفس الجذر الدلالي. أما خوارزمية تجذير Lovins فتختصر كلتا الكلمتين إلى knav.
رغم وجود استخدامات وأهداف مماثلة، فإن التجذير وتجريد الكلمة يختلفان في نقاط بسيطة وليست رئيسية. وغالبًا ما تصف المنشورات المختصة التجذير بأنه إرشادي ومساعد على الكشف أكثر، إذ يُجرِّد أساسًا اللواحق الشائعة من الكلمات لإنتاج جذر الكلمة. بينما نجد أن تجريد الكلمة يُجري تحليلًا مورفولوجيًا أكثر تفصيلًا لكلمات مختلفة لتحديد أساس الكلمة المعجمي، ولا يزيل اللواحق فحسب، بل البادئات كذلك. ورغم أن عملية التجذير أسرع وأكثر سهولة في التنفيذ، إلا أن العديد من مطوري أدوات التعلم العميق يفضلون عملية تجريد الكلمة لكونها أكثر دقة.
1 Ruslan Mitkov, Oxford Handbook of Computational Linguistics, 2nd edition, Oxford University Press, 2014.
2 Emily Bender and Alexander Koller, “Climbing towards NLU: On Meaning, Form, and Understanding in the Age of Data,” Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, 2020 , pp. 5185-5198 , https://aclanthology.org/2020.acl-main.463
3 Steven Bird, Ewan Klein, and Edward Loper, Natural Language Processing with Python, O’Reilley, 2009.
4 Gary Miner, Dursun Delen, John Elder, Andrew Fast, Thomas Hill, and Robert A. Nisbet, Practical Text Mining and Statistical Analysis for Non-Structured Text Data Applications, Academic Press, 2012.
5 Christopher Manning and Hinrich Schütze, Foundations of Statistical Natural Language Processing, MIT Press, 1999.
6 Julie Beth Lovins, "Development of a stemming algorithm," Mechanical Translation and Computational Linguistics, Vol. 11, Nos. 1 and 2, 1968, pp. 22-31, https://aclanthology.org/www.mt-archive.info/MT-1968-Lovins.pdf
7, 13 https://pypi.org/project/stemming/1.0
8 Julie Beth Lovins, "Development of a stemming algorithm," Mechanical Translation and Computational Linguistics, Vol. 11, Nos. 1 and 2, 1968, pp. 22-31, https://aclanthology.org/www.mt-archive.info/MT-1968-Lovins.pdf
9 Martin Porter, "An algorithm for suffix stripping", Program: electronic library and information systems, Vol. 14, No. 3, 1980, pp. 130-137, https://www.emerald.com/insight/content/doi/10.1108/eb046814/full/html
10 Martin Porter, "An algorithm for suffix stripping", Program: electronic library and information systems, Vol. 14, No. 3, 1980, pp. 130-137, https://www.emerald.com/insight/content/doi/10.1108/eb046814/full/html
11 Martin Porter, “Snowball: A language for stemming algorithms,” 2001, https://snowballstem.org/texts/introduction.html
12 Chris Paice, “Another stemmer," ACM SIGIR Forum, Vol. 24, No. 3, 1990, pp.56-61, https://dl.acm.org/doi/10.1145/101306.101310
14 Y. A. Alhaj, J. Xiang, D. Zhao, M. A. A. Al-Qaness, M. Abd Elaziz and A. Dahou, "A Study of the Effects of Stemming Strategies on Arabic Document Classification," IEEE Access, Vol. 7, pp. 32664-32671, https://ieeexplore.ieee.org/document/8664087. Janneke van der Zwaan, Maksim Abdul Latif, Dafne van Kuppevelt, Melle Lyklema, Christian Lange, "Are you sure your tool does what it is supposed to do? Validating Arabic root extraction," Digital Scholarship in the Humanities, Vol.36, 2021, pp.137-150, https://academic.oup.com/dsh/article/36/Supplement_1/i137/5545478
15 Ratnavel Rajalakshmi, Srivarshan Selvaraj, Faerie Mattins, Pavitra Vasudevan, Anand Kumar, "HOTTEST: Hate and Offensive content identification in Tamil using Transformers and Enhanced Stemming," Computer Speech & Language, Vol. 78, 2023, https://www.sciencedirect.com/science/article/abs/pii/S0885230822000870?via%3Dihub
16 Siba Sankar Sahu and Sukomal Pal, "Building a text retrieval system for the Sanskrit language: Exploring indexing, stemming, and searching issues," Computer Speech & Language, Vol. 81, 2023, https://www.sciencedirect.com/science/article/abs/pii/S0885230823000372?via%3Dihub
17 Chris Paice, “Stemming,” Encyclopedia of Database Systems, Springer, 2020.