n-gram و کاربرد آن در متن‌کاوی

مدرس: مسعود کاویانی

درس قبل را به خاطر بیاورید. در آن درس به تحلیل احساسات در نظرات مختلف پرداختیم. به این صورت که ما با استفاده از مدلی مانند کوله‌ای از کلمات (Bag of Words) کلماتِ یک متن را از همدیگر جدا کرده و هر کدام را به عنوان یک ویژگی (بُعد) در نظر گرفتیم. این ابعاد که ماتریسِ مجموعه‌ی آموزشیِ ما را تشکیل می‌دادند، به الگوریتمِ طبقه‌بندی تزریق می‌شدند تا عملیاتِ یادگیری و طبقه‌بندی جهت برچسب‌زنیِ خودکار (مثبت، منفی یا خنثی) را با توجه به ابعاد و ویژگی‌ها (که همان کلمات بودند) انجام دهند. این خلاصه‌ای از دروس گذشته‌ی این دوره بود.

اما سوالی که مطرح می‌شود این است: آیا کلمه‌ها جدا از هم (مانند مدلی که در درس BoW ارائه کردیم) می‌توانند با کیفیتِ بالا طبقه‌بندی را انجام دهند؟ بهتر نیست این کلمات با هم و در ترکیب با یکدیگر نیز تشکیل شوند؟

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

۱. من از آقای فلانی خوشم می‌آید. برنامه‌هایش به نظر کاربردی می‌رسند (مثبت)
۲. آقای فلانی، سابقه‌ی خوبی در مدیریتِ وزرات خانه‌ داشته (مثبت)
۳. من کلا از فلانی خوشم نمیاد. فکر می‌کنم آدم خوبی نیست (منفی)
۴. اصلاً کاری به کارِ سیاست ندارم (خنثی)
۵. فلانی فکر کرده با چهار تا حرف می‌تونه رای مردم رو بخره (منفی)

الگوریتم با توجه به کلماتِ موجود در متونِ مختلف اقدام به شناخت آن‌ها می‌کند و می‌تواند از روی مجموعه‌ی آموزشی، یادگیری را انجام داده و بر روی داده‌های جدید، به صورت خودکار برچسب‌زنی و تحلیل احساسات انجام دهد. مثلاً الگوریتم با مشاهده‌ی کلمه‌ی “خوب” یا “خوبی” متوجه می‌شود که این متن احتمالاً یک نظرِ مثبت است. ولی جمله‌ی ۳ را در بالا نگاه کنید. عبارتِ “خوبی” با کلمه‌ی “نیست” که به صورت متوالی پشت سرِ هم آمده‌اند، احساسِ جمله را منفی کرده‌اند. در حالی که در جمله‌ی شماره‌ی ۲، کلمه‌ی “خوبی” یک کلمه‌ی مثبت است که احساسِ کل جمله را مثبت کرده است. این دست از مشکلات باعثِ به وجود آمدنِ یک راهِ حل جدید به اسم N-Gram شده است. در مدلِ N-Gram برای ساختِ کوله‌ای از کلمات (BoW) علاوه بر این‌که هر کلمه، یک ستونِ ویژگی (یا بُعد) هست، ترکیب کلمات نیز به ابعاد اضافه می‌شوند. برای مثال جمله‌ی زیر را در نظر بگیرید:

من کلا از فلانی خوشم نمیاد. فکر می‌کنم آدم خوبی نیست

اگر بخواهیم این جمله را به یک N-Gram دوتایی یعنی ۲Gram تبدیل کنیم چیزی شبیه به ویژگی‌های زیر تشکیل می‌شود:

من (۱)، کلا (۲)، از (۳)، فلانی (۴)، خوشم (۵)، نمیاد. (۶)، فکر (۷)، می‌کنم (۸)، آدم (۹)، خوبی (۱۰)، نیست (۱۱)، من کلا (۱۲)، کلا از (۱۳)، از فلانی (۱۴)، فلانی خوشم (۱۵)، خوشم نمیاد. (۱۶)، نمیاد. فکر (۱۷)، فکر می‌کنم (۱۸)، می‌کنم آدم (۱۹)، آدم خوبی (۲۰)، خوبی نیست (۲۱)

همان‌طور که می‌بینید ۱۱بُعد به ۲۱بُعد تبدیل شده است. چون ما ترکیب‌های دوتایی از این نظر را نیز لحاظ کرده‌ایم و مانندِ درس BoW به هر کدام از کلمات و ترکیب کلمات یک عدد (عددِ ستونِ ماتریس داده‌ها) نسبت داده‌ایم.

البته انواع مختلفی از N-Gramها وجود دارند. ما در مثالِ بالا N-Gram تا حداکثر دو ترکیبِ متوالی را ساختیم که این ترکیب‌ها می‌تواند بسیار بیشتر هم باشد. البته با افزایش N در N-Gram تعداد ابعاد در کل متن‌ها بسیار بیشتر می‌شود و این باعثِ زمان بیشتر در فرآیندِ یادگیری و طبقه‌بندی یا الگوریتم‌های دیگر می‌شود.

منابع این بحث و اطلاعات بیشتر

» وب‌سایت Knime

» وب‌سایت TidyTextMining

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

4 دیدگاه دربارهٔ «n-gram و کاربرد آن در متن‌کاوی»

  1. با سلام و عرض خسته نباشید
    توضیحات بسیار دقیق و روان ارائه شدند و در عین حال کامل
    از سایت و همچنین نویسنده محترم کمال تشکر را دارم بسیار بهره بردم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *