ما هو التقسيم في معالجة اللغة الطبيعية؟

عقدة المصدر: 1878431

القراء الأعزاء،

في هذه المدونة ، سأناقش التقسيم نظريًا وعمليًا في بايثون.

فلنبدأ ...

NOTE: بالنسبة للتنفيذ ، من الأفضل استخدام Python IDLE لأن الإخراج هو رسم شجرة ينبثق في نافذة منفصلة.

البرنامج

  • ما هو التقسيم؟
  • أين يتم استخدام التقسيم؟
  • أنواع التقطيع
  • تنفيذ التقسيم في بايثون
  • النتائج

ما هو التقسيم؟

يُعرّف التقسيم بأنه عملية معالجة اللغة الطبيعية المستخدمة لتحديد أجزاء الكلام والعبارات القصيرة الموجودة في جملة معينة.

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

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

"تناولت البرغر والمعجنات على الإفطار."

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

أين يتم استخدام التقسيم؟

لماذا نرغب في تعلم شيء ما دون معرفة مكان استخدامه على نطاق واسع ؟! سيساعدك الاطلاع على التطبيقات التي تمت مناقشتها في هذا القسم من المدونة على البقاء فضوليًا حتى النهاية!

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

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

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

أنواع التقطيع

هناك نوعان من التقسيم على نطاق واسع:

  • التقسيم
  • التقسيم

التقسيم:

هنا ، نحن لا نتعمق ؛ بدلاً من ذلك ، يسعدنا تقديم نظرة عامة فقط على المعلومات. إنها تساعدنا فقط في الحصول على فكرة موجزة عن البيانات المقدمة.

التقسيم:

على عكس النوع السابق من التقسيم ، يساعدنا التقسيم في الحصول على معلومات مفصلة.

لذا ، إذا كنت ترغب فقط في الحصول على نظرة ثاقبة ، ففكر في "التقسيم" وإلا تفضل "التقسيم".

تنفيذ التقسيم في بايثون

تخيل موقفًا تريد فيه استخراج جميع الأفعال من النص المحدد لتحليلك. وبالتالي ، في هذه الحالة ، يجب أن نفكر في تقسيم عبارات الفعل. هذا لأن هدفنا هو استخراج جميع عبارات الفعل من جزء معين من النص. يتم التقسيم بمساعدة التعبيرات النمطية.

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

رمز

معنى

مثال

*

يمكن أن يظهر الحرف السابق صفرًا أو أكثر من المرات مما يعني أن الحرف السابق قد يكون موجودًا أو لا يوجد.

ab * يتطابق مع جميع المدخلات التي تبدأ بـ ab ثم متبوعة بصفر أو أكثر من b's. سيتطابق النمط مع ab و abb و abbb وما إلى ذلك.

+

يجب أن يظهر الحرف السابق مرة واحدة على الأقل.

تتطابق a + مع a و aa و aaa وما إلى ذلك.

?

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

أب؟ يطابق ab و abb ولكن ليس abbb وما إلى ذلك.

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

على أي حال ، لهذا التنفيذ ، سنستخدم فقط *. لا تتردد في إلقاء نظرة على الجدول أعلاه للتعرف على الرمز!

سنقوم بالتقسيم باستخدام nltk ، مكتبة البرمجة اللغوية العصبية الأكثر شيوعًا. لذا ، دعونا أولاً نستورده.

استيراد nltk

دعنا ننظر في نموذج النص أدناه الذي قمت بإنشائه بنفسي. لا تتردد في استبدال ما يلي بأي نص نموذج تريد تطبيقه على شكل تقسيم!

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

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

متبوعًا بالترميز ، يتم وضع علامات POS (جزء من الكلام) لكل كلمة ، حيث يتم تحديد جزء الكلام من كل كلمة. الآن ، نحن مهتمون فقط بجزء الفعل من الكلام ونرغب في استخراجه.

ومن ثم ، حدد جزء الكلام الذي يهمنا باستخدام التعبير النمطي المطلوب على النحو التالي:

فب: {}

tokenized = nltk.sent_tokenize (sample_text) لـ i in tokenized: Words = nltk.word_tokenize (i) # print (words) tagged_words = nltk.pos_tag (words) # print (tagged_words) chunkGram = r "" "VB: {}" "" chunkParser = nltk.RegexpParser (chunkGram) chunked = chunkParser.parse (tagged_words) chunked.draw ()

التعبير النمطي (RE) محاط بأقواس زاوية () والتي بدورها محاطة بأقواس معقوفة ({و}).

NOTE: حدد RE وفقًا لنقاط البيع المطلوبة

يرمز VB إلى الفعل POS. تعني النقطة التي تخلف VB مطابقة أي حرف يتبع VB. تحدد علامة الاستفهام بعد النقطة أن أي حرف بعد B يجب أن يحدث مرة واحدة فقط أو يجب ألا يحدث على الإطلاق. ومع ذلك ، من الجدول الذي رأيناه سابقًا ، هذه الشخصية اختيارية. لقد قمنا بتأطير التعبير النمطي بهذه الطريقة لأن عبارات الفعل في NLTK تتضمن علامات نقاط البيع التالية:

منتجات مختلفة

معنى

VB

الفعل في شكله الأساسي

VBD

الفعل في صيغته الماضية

العنف القائم على النوع الاجتماعي

الفعل في زمنه المضارع

فبن

الفعل في شكله النعت الماضي

VBP

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

VBZ

الفعل بصيغته المضارع وهو صيغة الشخص الثالث المفرد

وبالتالي ، يمكن أن تنتمي عبارات الفعل إلى أي من نقاط البيع المذكورة أعلاه. لهذا السبب تم تأطير التعبير النمطي كـ VB.؟ الذي يشمل جميع الفئات المذكورة أعلاه. تُستخدم حزمة RegexpParser للتحقق مما إذا كانت نقطة البيع تفي بالنمط المطلوب الذي ذكرناه باستخدام RE سابقًا.

يمكن رؤية الكود بالكامل على النحو التالي:

import nltk nltk.download (' في الهند استنادًا إلى Ramayana. "" "tokenized = nltk.sent_tokenize (sample_text) لـ i in tokenized: Words = nltk.word_tokenize (i) # print (words) tagged_words = nltk.pos_tag (Words) # print (tagged_words) chunkGram = r "" "VB: {}" "" chunkParser = nltk.RegexpParser (chunkGram) chunked = chunkParser.parse (tagged_words) chunked.draw ()

النتائج

نتيجة التقطيع
نتيجة التقطيع

أخيرًا ، نحصل على شكل شجرة من POS للكلمات جنبًا إلى جنب مع الكلمات التي يتطابق POS الخاص بها مع RE المعطى. يمكن رؤية لقطة الإخراج التي تم الحصول عليها لنص العينة التي مررناها في الأشكال أعلاه.

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

آمل أن تكون قد وجدت مقالتي مفيدة.

شكرا لك!

مراجع حسابات

1. تنفيذ التقسيم في بايثون

2. النظرية وراء التقسيم

3. القائمة الكاملة لنقاط البيع المتاحة في البرمجة اللغوية العصبية

عني

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

هنا ملفي الشخصي على LinkedIn: لينكد إن

يمكنك قراءة مقالاتي الأخرى على Analytics Vidhya من هنا.

الوسائط الموضحة في هذه المقالة ليست مملوكة لشركة Analytics Vidhya ويتم استخدامها وفقًا لتقدير المؤلف.

المصدر: https://www.analyticsvidhya.com/blog/2021/10/what-is-chunking-in-natural-language-processing/

الطابع الزمني:

اكثر من تحليلات Vidhya