18 KiB
مهام وتقنيات شائعة في معالجة اللغة الطبيعية
في معظم مهام معالجة اللغة الطبيعية، يجب تقسيم النص المراد معالجته، وفحصه، وتخزين النتائج أو مقارنتها مع القواعد ومجموعات البيانات. تتيح هذه المهام للمبرمج استنتاج المعنى أو النية أو فقط تكرار المصطلحات والكلمات في النص.
اختبار ما قبل المحاضرة
دعونا نستكشف التقنيات الشائعة المستخدمة في معالجة النصوص. عند دمجها مع التعلم الآلي، تساعدك هذه التقنيات على تحليل كميات كبيرة من النصوص بكفاءة. ولكن قبل تطبيق التعلم الآلي على هذه المهام، دعونا نفهم المشكلات التي يواجهها متخصصو معالجة اللغة الطبيعية.
المهام الشائعة في معالجة اللغة الطبيعية
هناك طرق مختلفة لتحليل النص الذي تعمل عليه. هناك مهام يمكنك تنفيذها، ومن خلال هذه المهام يمكنك فهم النص واستخلاص استنتاجات. عادةً ما يتم تنفيذ هذه المهام بترتيب معين.
تقسيم النصوص (Tokenization)
ربما تكون أول خطوة تقوم بها معظم خوارزميات معالجة اللغة الطبيعية هي تقسيم النص إلى وحدات صغيرة، أو كلمات. على الرغم من أن هذا يبدو بسيطًا، إلا أن التعامل مع علامات الترقيم وفواصل الكلمات والجمل في لغات مختلفة قد يجعل الأمر معقدًا. قد تحتاج إلى استخدام طرق مختلفة لتحديد الفواصل.
تقسيم جملة من كبرياء وتحامل. رسم توضيحي بواسطة Jen Looper
التضمين (Embeddings)
تضمين الكلمات هو طريقة لتحويل بيانات النصوص إلى أرقام. يتم التضمين بطريقة تجعل الكلمات ذات المعاني المتشابهة أو الكلمات المستخدمة معًا تتجمع في مجموعات.
"لدي أعلى احترام لأعصابك، فهي أصدقائي القدامى." - تضمين الكلمات لجملة من كبرياء وتحامل. رسم توضيحي بواسطة Jen Looper
✅ جرّب هذه الأداة المثيرة لتجربة تضمين الكلمات. عند النقر على كلمة واحدة، تظهر مجموعات من الكلمات المشابهة: 'toy' تتجمع مع 'disney'، 'lego'، 'playstation'، و'console'.
التحليل النحوي وتحديد أجزاء الكلام
يمكن تصنيف كل كلمة تم تقسيمها كجزء من الكلام - اسم، فعل، أو صفة. الجملة الثعلب الأحمر السريع قفز فوق الكلب البني الكسول
قد يتم تصنيفها نحويًا كالتالي: الثعلب = اسم، قفز = فعل.
تحليل جملة من كبرياء وتحامل. رسم توضيحي بواسطة Jen Looper
التحليل النحوي هو التعرف على الكلمات المرتبطة ببعضها البعض في الجملة - على سبيل المثال الثعلب الأحمر السريع قفز
هو تسلسل صفة-اسم-فعل منفصل عن تسلسل الكلب البني الكسول
.
تكرار الكلمات والعبارات
إجراء مفيد عند تحليل نص كبير هو بناء قاموس لكل كلمة أو عبارة ذات أهمية وعدد مرات ظهورها. العبارة الثعلب الأحمر السريع قفز فوق الكلب البني الكسول
تحتوي على تكرار للكلمة "the" بمقدار 2.
دعونا نلقي نظرة على نص كمثال حيث نحسب تكرار الكلمات. قصيدة "The Winners" لرديارد كبلينغ تحتوي على المقطع التالي:
What the moral? Who rides may read.
When the night is thick and the tracks are blind
A friend at a pinch is a friend, indeed,
But a fool to wait for the laggard behind.
Down to Gehenna or up to the Throne,
He travels the fastest who travels alone.
نظرًا لأن تكرار العبارات يمكن أن يكون حساسًا أو غير حساس لحالة الأحرف حسب الحاجة، فإن العبارة a friend
تظهر بتكرار 2 وthe
تظهر بتكرار 6، وtravels
تظهر بتكرار 2.
N-grams
يمكن تقسيم النص إلى تسلسلات من الكلمات بطول معين، كلمة واحدة (unigram)، كلمتين (bigram)، ثلاث كلمات (trigram) أو أي عدد من الكلمات (n-grams).
على سبيل المثال، الجملة الثعلب الأحمر السريع قفز فوق الكلب البني الكسول
مع قيمة n-gram تساوي 2 تنتج n-grams التالية:
- الثعلب الأحمر
- الأحمر السريع
- السريع قفز
- قفز فوق
- فوق الكلب
- الكلب البني
- البني الكسول
قد يكون من الأسهل تصورها كصندوق متحرك فوق الجملة. هنا مثال لـ n-grams من 3 كلمات، حيث يتم تمييز n-gram في كل جملة:
- الثعلب الأحمر السريع قفز فوق الكلب البني الكسول
- الثعلب الأحمر السريع قفز فوق الكلب البني الكسول
- الثعلب الأحمر السريع قفز فوق الكلب البني الكسول
- الثعلب الأحمر السريع قفز فوق الكلب البني الكسول
- الثعلب الأحمر السريع قفز فوق الكلب البني الكسول
- الثعلب الأحمر السريع قفز فوق الكلب البني الكسول
قيمة n-gram تساوي 3: رسم توضيحي بواسطة Jen Looper
استخراج العبارات الاسمية
في معظم الجمل، هناك اسم يكون هو الموضوع أو المفعول به في الجملة. في اللغة الإنجليزية، يمكن التعرف عليه غالبًا بوجود 'a' أو 'an' أو 'the' قبله. التعرف على الموضوع أو المفعول به في الجملة عن طريق 'استخراج العبارة الاسمية' هو مهمة شائعة في معالجة اللغة الطبيعية عند محاولة فهم معنى الجملة.
✅ في الجملة "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun."، هل يمكنك تحديد العبارات الاسمية؟
في الجملة الثعلب الأحمر السريع قفز فوق الكلب البني الكسول
هناك عبارتان اسميتان: الثعلب الأحمر السريع والكلب البني الكسول.
تحليل المشاعر
يمكن تحليل جملة أو نص لتحديد المشاعر، أو مدى إيجابيتها أو سلبيتها. يتم قياس المشاعر من حيث القطبية والموضوعية/الذاتية. يتم قياس القطبية من -1.0 إلى 1.0 (سلبي إلى إيجابي) والموضوعية من 0.0 إلى 1.0 (أكثر موضوعية إلى أكثر ذاتية).
✅ لاحقًا ستتعلم أن هناك طرقًا مختلفة لتحديد المشاعر باستخدام التعلم الآلي، ولكن إحدى الطرق هي وجود قائمة بالكلمات والعبارات المصنفة كإيجابية أو سلبية بواسطة خبير بشري وتطبيق هذا النموذج على النص لحساب درجة القطبية. هل ترى كيف يمكن أن تعمل هذه الطريقة في بعض الحالات وأقل في حالات أخرى؟
التصريف
التصريف يتيح لك أخذ كلمة والحصول على صيغة المفرد أو الجمع لها.
التأسيس (Lemmatization)
التأسيس هو الجذر أو الكلمة الرئيسية لمجموعة من الكلمات، على سبيل المثال flew، flies، flying لها جذر الفعل fly.
هناك أيضًا قواعد بيانات مفيدة متاحة للباحثين في معالجة اللغة الطبيعية، وأبرزها:
WordNet
WordNet هي قاعدة بيانات للكلمات، المرادفات، الأضداد والعديد من التفاصيل الأخرى لكل كلمة في العديد من اللغات المختلفة. إنها مفيدة للغاية عند محاولة بناء الترجمات، المدققات الإملائية، أو أدوات اللغة من أي نوع.
مكتبات معالجة اللغة الطبيعية
لحسن الحظ، لست بحاجة إلى بناء كل هذه التقنيات بنفسك، حيث توجد مكتبات بايثون ممتازة تجعلها أكثر سهولة للمطورين الذين ليسوا متخصصين في معالجة اللغة الطبيعية أو التعلم الآلي. تتضمن الدروس القادمة المزيد من الأمثلة على هذه المكتبات، ولكن هنا ستتعلم بعض الأمثلة المفيدة لمساعدتك في المهمة التالية.
تمرين - استخدام مكتبة TextBlob
دعونا نستخدم مكتبة تسمى TextBlob لأنها تحتوي على واجهات برمجية مفيدة للتعامل مع هذا النوع من المهام. TextBlob "تعتمد على العملاقين NLTK وpattern، وتعمل بشكل جيد مع كليهما." تحتوي على قدر كبير من التعلم الآلي المدمج في واجهاتها البرمجية.
ملاحظة: يتوفر دليل البدء السريع لـ TextBlob وهو موصى به لمطوري بايثون ذوي الخبرة.
عند محاولة التعرف على العبارات الاسمية، تقدم TextBlob عدة خيارات من المستخلصات للعثور على العبارات الاسمية.
-
ألقِ نظرة على
ConllExtractor
.from textblob import TextBlob from textblob.np_extractors import ConllExtractor # import and create a Conll extractor to use later extractor = ConllExtractor() # later when you need a noun phrase extractor: user_input = input("> ") user_input_blob = TextBlob(user_input, np_extractor=extractor) # note non-default extractor specified np = user_input_blob.noun_phrases
ما الذي يحدث هنا؟ ConllExtractor هو "مستخلص للعبارات الاسمية يستخدم تحليل القطع المدرب باستخدام مجموعة بيانات ConLL-2000." يشير ConLL-2000 إلى مؤتمر 2000 حول التعلم الحاسوبي للغة الطبيعية. كل عام، يستضيف المؤتمر ورشة عمل لمعالجة مشكلة صعبة في معالجة اللغة الطبيعية، وفي عام 2000 كانت المشكلة هي تقسيم العبارات الاسمية. تم تدريب نموذج على صحيفة وول ستريت جورنال، باستخدام "الأقسام 15-18 كبيانات تدريب (211727 رمزًا) والقسم 20 كبيانات اختبار (47377 رمزًا)". يمكنك الاطلاع على الإجراءات المستخدمة هنا والنتائج هنا.
التحدي - تحسين الروبوت الخاص بك باستخدام معالجة اللغة الطبيعية
في الدرس السابق، قمت ببناء روبوت بسيط للأسئلة والأجوبة. الآن، ستجعل "مارفن" أكثر تعاطفًا من خلال تحليل مدخلاتك لتحديد المشاعر وطباعة استجابة تتناسب مع المشاعر. ستحتاج أيضًا إلى التعرف على noun_phrase
وطرح أسئلة حولها.
خطواتك عند بناء روبوت محادثة أفضل:
- طباعة التعليمات التي تنصح المستخدم بكيفية التفاعل مع الروبوت
- بدء حلقة
- قبول مدخلات المستخدم
- إذا طلب المستخدم الخروج، قم بإنهاء البرنامج
- معالجة مدخلات المستخدم وتحديد استجابة المشاعر المناسبة
- إذا تم اكتشاف عبارة اسمية في المشاعر، قم بجمعها واطلب المزيد من المدخلات حول هذا الموضوع
- طباعة الاستجابة
- العودة إلى الخطوة 2
إليك مقتطف الكود لتحديد المشاعر باستخدام TextBlob. لاحظ أن هناك أربعة تدرجات فقط لاستجابة المشاعر (يمكنك إضافة المزيد إذا أردت):
if user_input_blob.polarity <= -0.5:
response = "Oh dear, that sounds bad. "
elif user_input_blob.polarity <= 0:
response = "Hmm, that's not great. "
elif user_input_blob.polarity <= 0.5:
response = "Well, that sounds positive. "
elif user_input_blob.polarity <= 1:
response = "Wow, that sounds great. "
إليك بعض المخرجات النموذجية لتوجيهك (مدخلات المستخدم تبدأ بـ >):
Hello, I am Marvin, the friendly robot.
You can end this conversation at any time by typing 'bye'
After typing each answer, press 'enter'
How are you today?
> I am ok
Well, that sounds positive. Can you tell me more?
> I went for a walk and saw a lovely cat
Well, that sounds positive. Can you tell me more about lovely cats?
> cats are the best. But I also have a cool dog
Wow, that sounds great. Can you tell me more about cool dogs?
> I have an old hounddog but he is sick
Hmm, that's not great. Can you tell me more about old hounddogs?
> bye
It was nice talking to you, goodbye!
إحدى الحلول الممكنة للمهمة موجودة هنا
✅ تحقق من المعرفة
- هل تعتقد أن الاستجابات المتعاطفة قد "تخدع" شخصًا ليعتقد أن الروبوت يفهمه بالفعل؟
- هل يجعل التعرف على العبارة الاسمية الروبوت أكثر "إقناعًا"؟
- لماذا يعتبر استخراج "العبارة الاسمية" من الجملة أمرًا مفيدًا؟
قم بتنفيذ الروبوت في التحقق من المعرفة السابق واختبره مع صديق. هل يمكنه خداعهم؟ هل يمكنك جعل الروبوت الخاص بك أكثر "إقناعًا"؟
🚀التحدي
خذ مهمة من التحقق من المعرفة السابق وحاول تنفيذها. اختبر الروبوت مع صديق. هل يمكنه خداعهم؟ هل يمكنك جعل الروبوت الخاص بك أكثر "إقناعًا"؟
اختبار ما بعد المحاضرة
المراجعة والدراسة الذاتية
في الدروس القليلة القادمة، ستتعلم المزيد عن تحليل المشاعر. ابحث عن هذه التقنية المثيرة في مقالات مثل تلك الموجودة على KDNuggets
الواجب
إخلاء المسؤولية:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.