Chunking در پردازش زبان طبیعی چیست؟

گره منبع: 1878431

خوانندگان عزیز،

در این وبلاگ، من در مورد chunking هم به صورت تئوری و هم عملی در پایتون بحث خواهم کرد.

بنابراین، بیایید شروع کنیم…

توجه: برای پیاده سازی، بهتر است از Python IDLE به عنوان خروجی استفاده شود، طراحی یک درخت است که در یک پنجره جداگانه ظاهر می شود.

دستور کار

  • تکه شدن چیست؟
  • چانکینگ در کجا استفاده می شود؟
  • انواع قطعه بندی
  • پیاده سازی chunking در پایتون
  • نتایج

تکه شدن چیست؟

تکه تکه شدن به عنوان فرآیند پردازش زبان طبیعی برای شناسایی بخش‌هایی از گفتار و عبارات کوتاه موجود در یک جمله تعریف می‌شود.

با یادآوری کلاس‌های گرامر انگلیسی قدیمی ما در مدرسه، توجه داشته باشید که هشت بخش گفتار وجود دارد که عبارت‌اند از: اسم، فعل، صفت، قید، حرف اضافه، حرف ربط، ضمیر و ضمایر. همچنین، در تعریف فوق از تیکه کردن، عبارات کوتاه به عباراتی اطلاق می‌شود که با گنجاندن هر یک از این بخش‌های گفتار ایجاد می‌شوند.

به عنوان مثال، تکه تکه کردن را می توان برای شناسایی و در نتیجه گروه بندی عبارات اسمی یا اسم ها به تنهایی، صفت ها یا عبارات صفت و غیره انجام داد. به جمله زیر توجه کنید:

"من برای صبحانه همبرگر و شیرینی خوردم."

در این صورت، اگر بخواهیم عبارات اسمی را گروه بندی یا تکه تکه کنیم، "برگرها"، "شیرینی ها" و "ناهار" که اسم ها یا گروه های اسمی جمله هستند به دست می آید.

چانکینگ در کجا استفاده می شود؟

چرا بخواهیم چیزی را بیاموزیم بدون اینکه بدانیم در کجا کاربرد گسترده دارد؟! نگاهی به برنامه های مورد بحث در این بخش از وبلاگ به شما کمک می کند تا انتها کنجکاو باشید!

Chunking برای به دست آوردن عبارات مورد نیاز از یک جمله استفاده می شود. با این حال، برچسب‌گذاری POS را می‌توان فقط برای شناسایی بخش‌هایی از گفتار که هر کلمه از جمله به آن تعلق دارد استفاده کرد.

هنگامی که درباره یک کلمه خاص یا عبارت مورد علاقه خود توضیحات یا اصلاحات زیادی داریم، از تکه تکه کردن برای گرفتن عبارت مورد نیاز به تنهایی استفاده می کنیم و بقیه آن را نادیده می گیریم. از این رو، تیکه‌سازی راهی برای گروه‌بندی عبارات مورد نیاز و حذف تمام اصلاح‌کننده‌های اطراف آن‌ها که برای تحلیل ما ضروری نیستند، هموار می‌کند. خلاصه کردن، به ما کمک می کند تا کلمات مهم را به تنهایی از توضیحات طولانی استخراج کنیم. بنابراین، انفصال مرحله ای در استخراج اطلاعات است.

جالب اینجاست که این فرآیند تکه تکه شدن در NLP به برنامه های مختلف دیگر گسترش یافته است. به عنوان مثال، برای گروه بندی میوه های یک دسته خاص، مثلاً میوه های غنی از پروتئین به عنوان یک گروه، میوه های غنی از ویتامین به عنوان یک گروه دیگر، و غیره. علاوه بر این، chunking همچنین می تواند برای گروه بندی اتومبیل های مشابه استفاده شود، مثلاً اتومبیل هایی که از دنده خودکار پشتیبانی می کنند در یک گروه و سایرین که از دنده دستی پشتیبانی می کنند در یک گروه دیگر و غیره.

انواع چانکینگ

به طور کلی، دو نوع قطعه بندی وجود دارد:

  • تکه تکه شدن
  • خرد شدن

تکه تکه کردن:

در اینجا، ما عمیقا شیرجه نمی‌زنیم. در عوض، ما فقط با یک مرور کلی از اطلاعات خوشحالیم. این فقط به ما کمک می کند تا یک ایده مختصر از داده های داده شده داشته باشیم.

خرد کردن:

بر خلاف نوع قبلی، تکه تکه کردن به ما کمک می کند تا اطلاعات دقیقی به دست آوریم.

بنابراین، اگر فقط بینش می‌خواهید، «تکه‌کردن» را در نظر بگیرید، در غیر این صورت «کوچک کردن» را ترجیح دهید.

پیاده سازی chunking در پایتون

موقعیتی را تصور کنید که در آن می خواهید تمام افعال را از متن داده شده برای تحلیل خود استخراج کنید. بنابراین، در این مورد، باید تکه شدن عبارات فعل را در نظر بگیریم. این به این دلیل است که هدف ما استخراج تمام عبارات فعل از قطعه متن داده شده است. قطعه بندی با کمک عبارات منظم انجام می شود.

اگر برای اولین بار است که با اصطلاح "عبارات منظم" روبرو می شوید، نگران نباشید. جدول زیر در اینجاست تا شما را نجات دهد:

آیکون

معنی

مثال

*

نویسه قبلی می تواند صفر یا چند بار رخ دهد به این معنی که کاراکتر قبلی ممکن است وجود داشته باشد یا نباشد.

ab* با تمام ورودی هایی که با ab شروع می شوند و سپس با صفر یا تعداد بیشتری از b دنبال می شوند مطابقت دارد. این الگو با ab، abb، abbb و غیره مطابقت دارد.

+

کاراکتر قبلی باید حداقل یک بار ظاهر شود.

a+ با a، aa، aaa و غیره مطابقت دارد.

?

کاراکتر قبلی ممکن است اصلاً رخ ندهد یا فقط یک بار رخ دهد به این معنی که کاراکتر قبلی اختیاری است.

ab با ab، abb اما نه abbb و غیره مطابقت دارد.

جدول بالا شامل رایج ترین عبارات منظم استفاده شده است. عبارات منظم در خط فرمان به خصوص هنگام حذف، مکان یابی، تغییر نام یا جابجایی فایل ها بسیار مفید هستند.

به هر حال، برای این پیاده سازی، ما فقط از * استفاده خواهیم کرد. با خیال راحت به جدول بالا نگاه کنید تا با نماد آشنا شوید!

ما با استفاده از nltk، محبوب‌ترین کتابخانه NLP، قطعه‌سازی را انجام خواهیم داد. بنابراین، اجازه دهید ابتدا آن را وارد کنیم.

وارد کردن nltk

بیایید متن نمونه زیر را که به تنهایی ایجاد کردم در نظر بگیریم. به راحتی می توانید متن زیر را با هر متن نمونه ای که دوست دارید برای پیاده سازی chunking جایگزین کنید!

sample_text="""راما راوانا را کشت تا سیتا را از دست لانکا نجات دهد. افسانه رامایان محبوب ترین حماسه هندی است. بسیاری از فیلم ها و سریال ها قبلاً به چندین زبان در اینجا در هند بر اساس رامایانا فیلمبرداری شده اند. """

واضح است که قبل از ادامه، داده ها باید نشانه گذاری شوند و سپس کلمه توکن شوند. توکن سازی چیزی نیست جز فرآیند شکستن قطعه متن داده شده به واحدهای کوچکتر مانند جملات، در مورد نشانه گذاری جمله و کلمات، در مورد نشانه گذاری کلمه.

به دنبال نشانه گذاری، برچسب گذاری POS (بخشی از گفتار) برای هر کلمه انجام می شود که در آن قسمت گفتار هر کلمه مشخص می شود. اکنون فقط به فعل قسمت گفتار علاقه مندیم و می خواهیم همان را استخراج کنیم.

بنابراین، بخشی از گفتار مورد علاقه خود را با استفاده از عبارت منظم مورد نیاز به صورت زیر مشخص کنید:

VB: {}

tokenized=nltk.sent_tokenize(samp_text) برای i در 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) درون براکت های زاویه ای () قرار دارد که به نوبه خود در براکت های فرفری ({ و }) محصور می شوند.

توجه: RE را با توجه به POS مورد نیاز مشخص کنید

VB مخفف فعل POS است. نقطه پس از VB به معنای مطابقت با هر کاراکتری پس از VB است. علامت سوال بعد از نقطه مشخص می کند که هر کاراکتر بعد از B باید فقط یک بار رخ دهد یا اصلاً رخ ندهد. با این حال، از جدولی که قبلاً دیدیم، این کاراکتر اختیاری است. ما عبارت منظم را به این صورت قالب بندی کرده ایم، زیرا در NLTK، عبارات فعل شامل تگ های POS زیر است:

POS

معنی

VB

فعل به شکل پایه اش

VBD

فعل در زمان گذشته خود

GBV

فعل در زمان حال خود

VBN

فعل به شکل ماضی آن

VBP

فعل در زمان حال خود اما نه در سوم شخص مفرد

VBZ

فعل در زمان حال خود و سوم شخص مفرد است

بنابراین، عبارات فعل می توانند به هر یک از POS های بالا تعلق داشته باشند. به همین دلیل است که عبارت منظم به صورت VB قاب می شود؟ که شامل تمامی دسته بندی های فوق می باشد. بسته RegexpParser برای بررسی اینکه آیا یک POS الگوی مورد نیاز ما را که قبلاً با استفاده از RE ذکر کردیم را برآورده می کند یا خیر، استفاده می شود.

کل کد را می توان به صورت زیر مشاهده کرد:

import nltk nltk.download('averaged_perceptron_tagger') sample_text=""" راما راوانا را کشت تا سیتا را از لانکا نجات دهد. افسانه رامایان محبوب ترین حماسه هندی است. فیلم ها و سریال های زیادی قبلاً به چندین زبان در اینجا فیلمبرداری شده اند. در هند بر اساس رامایانا. """ tokenized=nltk.sent_tokenize(متن_نمونه) برای i در 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. پیاده سازی chunking در پایتون

2. تئوری در پس تکه تکه شدن

3. لیست کامل POS های موجود در NLP

در باره من

من Nithyashree V هستم، دانشجوی سال آخر BTech Computer Science and Engineering. من عاشق یادگیری چنین فناوری های جالب و به کار بردن آنها هستم، به ویژه مشاهده اینکه چگونه به ما در حل مشکلات چالش برانگیز جامعه کمک می کنند. زمینه های مورد علاقه من شامل هوش مصنوعی، علم داده و پردازش زبان طبیعی است.

اینم پروفایل لینکدین من: لینکدین من

می توانید مقالات دیگر من در Analytics Vidhya را بخوانید اینجا کلیک نمایید.

رسانه نشان داده شده در این مقاله متعلق به Analytics Vidhya نیست و به صلاحدید نویسنده استفاده می شود.

منبع: https://www.analyticsvidhya.com/blog/2021/10/what-is-chunking-in-natural-language-processing/

تمبر زمان:

بیشتر از تجزیه و تحلیل Vidhya