تجزئة النص إلى رموز
تعرف على كيفية تقسيم النص إلى رموز باستخدام أساليب معالجة اللغة الطبيعية والمحولات.
للبدء في استخدام المحولات لتطوير روبوتات الدردشة، من الضروري فهم كيفية تفسير الآلات للنصوص. بما أن الآلات تعتمد في الأساس على الأرقام، نبدأ بتحويل النص إلى نموذج يمكن للآلات فهمها من خلال عملية تُسمى "الترميز". الترميز هو حلقة الوصل بين النص الخام والبيانات القابلة للقراءة آليًا، حيث يُقسّم النص إلى وحدات أصغر أو رموز. تُعد هذه الخطوة أساسية لتطوير روبوتات الدردشة، إذ تتيح لنا معالجة مُدخلات المستخدم مُسبقًا.
التجزئة: تحليل النص
نبدأ بتقسيم النص أو إدخال إلى رموز.
دعونا نلقي نظرة على مثال بسيط لكيفية تقسيم النص إلى رموز.
في الأساس، يُقسّم النص إلى كلمات، بما في ذلك الفواصل والنقاط والفواصل، وما إلى ذلك. ويمكن تطوير عملية الترميز بتطبيق أساليب دقيقة.
الخطوة الأولى هي تحويل جميع الكلمات إلى أحرف صغيرة. تساعد هذه العملية على توحيد المدخلات في سياقات مختلفة، وهي ضرورية لتحسين أداء النموذج، إذ تُقلل حجم المفردات التي يحتاجها. ويعني حجم المفردات الأصغر تعقيدًا حسابيًا أقل وقدرات تعميم أفضل، مما يجعل روبوت المحادثة أكثر كفاءة واستجابة.
الآن نقسم النص إلى كلمات. يمكن تقسيم النص وفقًا لقواعد محددة. على سبيل المثال، يمكن تقسيمه إلى مسافات، أو نقطتين، أو علامات ترقيم، أو أحرف خاصة مثل سطر جديد (\n)، أو حتى وسوم HTML، وذلك حسب بنية النص ومتطلبات المهمة.
التفريع أو التقسيم إلى أجزاء لفظية مصطلحان شائعان في مجال معالجة اللغات الطبيعية. يُزيل التفريع الأجزاء النهائية (اللاحقة) أو الأجزاء الأولية (البادئة). على سبيل المثال، تصبح الجملة "إنه من النوع الذي يحب القراءة أثناء السفر" بعد التفريع "إنه من النوع الذي يحب القراءة أثناء السفر". أما التقسيم إلى أجزاء لفظية (من كلمة "ليما")، فيحدد ما إذا كانت لكلمتين جذور أو أصول متشابهة. على سبيل المثال، كلمتا "فئران" و"فأر" متماثلتان. الهدف من هذين المصطلحين هو تبسيط النص وإزالة الكلمات غير الضرورية من السياق.
تُسهم إزالة الكلمات غير المرغوبة في تبسيط النص إدخال من خلال إزالة الكلمات المُزعجة مثل "the" و"a" و"are". على سبيل المثال، تصبح الجملة "يا أوليفر، سائق رائع!" "يا أوليفر، سائق رائع". تُوفر مكتبات متعددة في Python وظائف لإزالة الكلمات غير المرغوبة.
مقدمة إلى NLTK لمعالجة النصوص
مجموعة أدوات اللغة الطبيعية (NLTK) هي مكتبة توفر واجهات سهلة الاستخدام لأكثر من 50 موردًا لغويًا ومعجميًا، مثل WordNet. كما تتضمن مجموعة من مكتبات معالجة النصوص للتصنيف، والترميز، والتقسيم إلى أجزاء، والوسم، والتحليل، والاستدلال الدلالي، بالإضافة إلى أغلفة لمكتبات معالجة اللغة الطبيعية عالية الكفاءة، ومنتدى نقاش فعّال.
ترميز النص باستخدام تقنيات معالجة اللغة الطبيعية
لنحاول ترميز جملة باستخدام NLTK. شغّل الكود التالي لترميز الجملة المُعطاة:
في هذا الكود نقوم بالخطوات التالية:
- الأسطر 1-4 : نقوم باستيراد مكتبة NLTK ووظيفتها
word_tokenize. - الأسطر 6-10 : نقدم النص المراد تقسيمه إلى رموز.
- الأسطر 12-16 : نقوم بتحويل النص إلى أحرف صغيرة، ثم نقوم بطباعته.
- الأسطر 18-24 : نقوم بتقسيم النص إلى رموز باستخدام الكلمة الوظيفية tokenized، ثم نقوم بطباعته.
بمجرد تشغيل إخراج، نرى أن كل كلمة مُنفصلة ومُوضوعة بين علامتي اقتباس لتُعَرَّف كسلسلة نصية مُنفصلة. هذا بالضبط ما هو مُتوقع من عملية التجزئة.
ممارسة التجزئة باستخدام NLTK
في التمرين التالي، حاول تغيير النص وشاهد كيف يختلف إخراج .
حاول استخدام أحرف وعلامات ترقيم وحتى رموز مختلفة لمعرفة كيفية تعامل الوظيفة المميزة معها.
تعزيز التجزئة باستخدام نماذج المحولات
بينما توفر تقنية معالجة اللغة الطبيعية (NLTK) أساسًا متينًا، توفر نماذج المحولات قدرات ترميز متقدمة تُعزز فهم روبوت الدردشة لدينا لتفاصيل اللغة. يستضيف Hugging Face مجموعة واسعة من نماذج المحولات المُدربة مسبقًا، مُقدمًا مجموعة من وحدات الترميز المُصممة لمهام معالجة اللغة الطبيعية (NLP) المُتنوعة. تستخدم نماذج، مثل BERT أو GPT، أساليب ترميز تُراعي السياق وتفاصيل الكلمات الفرعية، مُوفرةً مستوى أعمق من تحليل النصوص مُقارنةً بالطرق الأساسية.
دعونا نفهم الاختلافات والقدرات لكل طريقة:
Feature | NLTK | Transformers |
Approach | Rule-based | Contextual |
Handling Subwords | Not directly supported | Handles subwords efficiently |
Context Sensitivity | Operates on individual tokens | considers sentence context |
Performance on New Words | Struggles with out-of-vocabulary (OOV) words | Handles OOV words through subword tokenization |
Computational Efficiency | Generally fast and lightweight | Can be computationally intensive due to model complexity |
Output | List of tokens | Tokens with attention to context |
ترميز النص باستخدام المحولات
من الطرق الفعّالة لتقسيم النصوص إلى رموز هي استخدام المحولات. يختلف تقسيم النصوص باستخدام المحولات عن مكتبة NLTK، ويتم فصل الرموز بطرق مختلفة حسب النموذج المختار. من نماذج Hugging Face، يمكننا اختيار "Fill-Mask" ثم "bert-large-uncased".
قم بتشغيل الكود أدناه لتجزئة الجملة المقدمة:
في هذا الكود نقوم بالخطوات التالية:
- الأسطر 1-4 : نقوم باستيراد مكتبة المحولات ووظيفتها
AutoTokenizer. - السطرين 6-7 : نقوم بتحديد نموذج المحول الذي سيتم استخدامه.
- السطرين 9-10 : نقوم بتهيئة
tokenizerوظيفة. - الأسطر 12-16 : نقدم النص المراد تقسيمه إلى رموز.
- الأسطر 18-20 : نقوم بطباعة النص الحالي.
- الأسطر 22-28 : نقوم بتقسيم النص إلى رموز باستخدام محول الرموز، ثم نقوم بطباعته.
لاحظ كيف يقوم المحول بتغيير النص إلى أحرف صغيرة تلقائيًا دون استخدام أي وظيفة إضافية.
ممارسة التجزئة باستخدام المحولات
في التمرين التالي، جرّب تغيير النص ولاحظ اختلاف إخراج . جرّب استخدام أحرف وعلامات ترقيم وحتى رموز مختلفة. جرّب أيضًا تغيير نموذج المحول للترميز من القائمة التالية: "t5-small"، "camembert-base"، "gpt2"، أو من موقع Hugging Face الإلكتروني.
التحديات والاعتبارات في معالجة النصوص
تُطرح معالجة النصوص في تطوير روبوتات الدردشة العديد من التحديات والاعتبارات، بدءًا من تعقيد اللغة البشرية وضرورة أن تفهم النماذج استفسارات المستخدمين وتستجيب لها بدقة. ومن أهم هذه التحديات التعامل مع تنوع الأنماط اللغوية بين مختلف اللغات واللهجات، مما قد يؤثر على قدرة روبوت الدردشة على تفسير الرسائل بشكل صحيح. ويتطلب ضمان فهم النموذج لنوايا المستخدم بدقة معالجة مسبقة دقيقة لبيانات النص لإزالة أي غموض.
علاوة على ذلك، يُشكّل التعامل مع اللغة العامية والتعبيرات الاصطلاحية والتعبيرات العامية تحديات إضافية، إذ قد تختلف باختلاف الثقافات والمجتمعات. يُعدّ دمج آليات لتفسير هذه التعبيرات بشكل صحيح أمرًا أساسيًا لبناء روبوتات دردشة تُشرك المستخدمين بشكل طبيعي. كما تُعدّ إدارة الأخطاء المطبعية والإملائية أمرًا أساسيًا للحفاظ على المتانة، إذ تتطلب خوارزميات متطورة تُمكّن من تحديد الأخطاء وتصحيحها دون إساءة تفسير رسالة المستخدم.
يتطلب التعامل مع هذه التحديات والاعتبارات في معالجة النصوص مزيجًا من تقنيات معالجة اللغة الطبيعية المتقدمة وخيارات تصميم دقيقة. بالتركيز على هذه الجوانب، يمكن للمطورين إنشاء روبوتات دردشة لا تفهم إدخال المستخدم وتعالجها بفعالية فحسب، بل تقدم أيضًا تجارب محادثة تفاعلية ومفيدة وتفاعلية.