عیدی

چگونه ۹۰ درصد مسائل پردازش زبان طبیعی (NLP) را حل کنیم؟ – راهنمای گام به گام

۳۱ مرداد ۱۳۹۷


تعداد بازدید ها:
۱۱

پردازش زبان طبیعی یکی از حوزه‌های مهم هوش مصنوعی، یادگیری ماشین و به طور کلی پردازش سیگنال محسوب می شود. ما قبلاً نیز در بلاگ عیدی به برخی مبانی NLP پرداخته‌ایم و اینک در این مطلب رویکردهای پیشرفته این حوزه را بررسی می‌کنیم.

داده‌های متنی همه جا هستند

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

  • شناسایی گروه‌های مختلف کاربران/مشتریان (برای مثال پیش‌بینی از دست دادن مشتری، ارزش طول عمر مشتری، ترجیح‌های محصول)
  • تشخیص دقیق و استخراج دسته‌بندی‌های مختلف بازخورد (نظرات مثبت و منفی، اشاره به جنبه‌ خاصی از محصول مانند اندازه لباس و …)
  • دسته‌بندی متن‌ها بر اساس منظور (برای مثال درخواست کمک مقدماتی، مشکل ضروری)

با این که مقاله‌ها و آموزش‌های NLP زیادی به صورت آنلاین وجود دارند؛ اما یافتن راهنمایی و نکاتی در مورد چگونگی برخورد با مسائلی که باید از صفر شروع به حل آن‌ها کرد کار دشواری است.

اهداف این مقاله

این مقاله از سوی تیمی از محققان (Insight Data Science) پس از هدایت صدها پروژه و مشاوره با تیم‌های بزرگ در سراسر ایالات‌متحده به منظور توضیح چگونگی ساخت راه‌حل‌های یادگیری ماشین برای حل مسائلی مانند آنچه در بخش قبل اشاره کردیم، به نگارش در آمده است. ما در ابتدا با ساده‌ترین متد ممکن کار خود را آغاز می‌کنیم و سپس راه‌حل‌های پیچیده‌تر مانند مهندسی ویژگی، بردارهای کلمه و یادگیری عمیق را معرفی می‌کنیم. پس از مطالعه این مقاله شما باید موارد زیر را فراگرفته باشید:

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

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

گام ۱: گردآوری داده‌ها

منابع داده‌ای نمونه: هر مسئله یادگیری ماشین با داده‌هایی از قبیل فهرستی از ایمیل‌ها، مطالب یا توییت‌ها آغاز می‌شود. منابع متداول برای اطلاعات متنی شامل موارد زیر هستند:

  • بررسی محصول‌ها (در آمازون، Yelp و App store های مختلف)
  • محتوای تولید شده از سوی کاربر (توییت‌ها، مطالب فیس‌بوک، سؤالات استک‌اورفلو)
  • عیب‌یابی (درخواست‌های مشتری، تیکت‌های پشتیبانی، لاگ‌های چت‌ها)

مجموعه داده «فجایع در شبکه‌های اجتماعی»

در این مطلب از یک مجموعه داده استفاده شده است که از سوی Figure Eight ارائه شده و «فجایع در شبکه‌های اجتماعی» نام دارد. در این مجموعه داده مشارکت‌کنندگان بیش از ۱۰۰۰۰ توییت را در جستجوی کلماتی مانند «آتش‌سوزی» (ablaze)، «قرنطینه» (quarantine) و «آشوب» (pandemonium) بررسی کرده‌اند و سپس تشخیص داده‌اند که آیا توییت به یک رویداد فاجعه‌بار اشاره دارد یا نه (مثلاً ممکن است توییت یک شوخی یا بررسی یک فیلم یا چیزی بوده باشد که به فاجعه‌ای مربوط نبوده است).

وظیفه ما این است که تشخیص دهیم کدام توییت‌ها در مورد رویداد یک فاجعه هستند و کدام یک به موضوعات نامرتبطی مانند فیلم ارتباط دارند. یکی از کاربردهای بالقوه این رویکرد آن است که مأموران اداره‌های مربوطه می‌توانند به سرعت متوجه وضعیت‌های اضطراری شوند و برای مثال مواردی که ناشی از فیلم جدید یک کمدین مشهور است را نادیده بگیرند. یکی از چالش‌های خاص این کار آن است که هر دو دسته توییت‌ها حاوی کلیدواژه‌های جستجوی یکسانی هستند و از این رو باید تفاوت‌های ظریف بین آن‌ها را برای ایجاد تمایز بین دو موضوع مختلف شناسایی کنیم. در ادامه این نوشته توییت‌هایی که در مورد فجایع زیست‌محیطی هستند به صورت «فاجعه» و همه آن‌هایی را که ربطی به رویداد یک فاجعه ندارند به صورت «نامرتبط» مورد اشاره قرار داده‌ایم.

برچسب‌ها

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

گام ۲: پاک‌سازی داده‌ها

مهم‌ترین قاعده در زمینه پاک‌سازی داده‌ها این است که «مدل شما در نهایت به اندازه مناسب بودن داده‌هایی که در اختیار دارید، بهینه‌سازی خواهد شد». یکی از مهارت‌های کلیدی یک دانشمند داده، دانستن این نکته است که آیا در گام بعدی باید بر روی مدل‌سازی داده‌ها کار کند یا نه. قاعده سرانگشتی مناسب این است که ابتدا به داده‌ها نگاه کرده و سپس آن‌ها را پاک‌سازی کنیم. یک مجموعه داده پاک‌سازی‌شده امکان یادگیری ویژگی‌های معنی‌داری را به مدل می‌دهد و از بیش‌برازش روی نویز نامرتبط جلوگیری می‌کند. در ادامه یک چک‌لیست برای استفاده در زمان پاک‌سازی داده‌ها ارائه شده است.

  1. حذف همه کاراکترهای نامرتبط مانند کاراکترهای حرفی/عددی
  2. توکن‌دار کردن متن با استفاده از جداسازی واژه‌های منفرد
  3. حذف واژه‌هایی که مرتبط نیستند، مانند @ در منشن‌های توییتر یا url ها.
  4. تبدیل همه کاراکترها به حالت حروف کوچک انگلیسی جهت آموزش دادن یکسان واژه‌های «hello»، «Hello» و «HELLO».
  5. بررسی ترکیب واژه‌های با غلط املایی یا نوع نوشتاری متفاوت در یک حالت منحصر به‌ فرد (برای مثال: «cool»، «Kool» و «cooool»).
  6. بررسی خلاصه‌سازی متن (lemmatization) (کاهش کلمه‌هایی مانند «am»، «are» و «is» به یک شکل مانند «be»).

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

گام ۳: یافتن بازنمایی مناسب برای داده‌ها

مدل‌های یادگیری ماشین مقادیر عددی را به عنوان ورودی می‌گیرند، برای مثال مدل‌هایی که بر روی عکس‌ها کار می‌کنند یک ماتریس را که نشان‌دهنده شدت روشنایی هر پیکسل در هر کانال رنگی است به عنوان ورودی دریافت می‌کنند.

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

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

کدگذاری One-hot (کیسه کلمات)

یک روش طبیعی برای نمایش متن برای رایانه‌ها این است که هر کاراکتر را به صورت منفرد به صورت یک عدد (برای مثال ASCII) کدگذاری کنیم. اگر بخواهیم این بازنمایی ساده را به عنوان ورودی به یک دسته‌بند (Classifier) بدهیم، این الگوریتم می‌بایست ساختار کلمه‌ها را از ابتدا و صرفاً از روی داده‌های ما بیاموزد که برای اکثر مجموعه داده‌ها، کاری غیر ممکن است. از این رو می‌بایست از رویکردی در سطح بالاتر استفاده کنیم.

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

بازنمایی کلمه‌ها به صورت کیسه کلمات. جمله‌های سمت چپ به صورت سمت راست بازنمایی شده‌اند. هر اندیس در بردارها نشان‌دهنده یک کلمه خاص است.

بصری‌سازی جاسازی‌ها

ما در حدود ۲۰،۰۰۰ کلمه در لغت‌نامه خود «فجایع در رسانه‌های اجتماعی» داریم یعنی هر جمله به صورت برداری به طول ۲۰،۰۰۰ نمایش می‌یابد. این بردار در اغلب موارد شامل صفرهای زیادی است، زیرا جمله‌ها تنها یک زیرمجموعه بسیار کوچکی از لغت‌نامه ما را شامل می‌شوند.

برای این که ببینیم این جاسازی‌ها، اطلاعاتی که با مسئله ما مرتبط است را دریافت می‌کنند یا نه (یعنی توییت‌ها که در مورد فاجعه هستند یا نه) بهتر است که آن‌ها را بصری‌سازی کنیم و ببینیم که آیادسته‌های مختلف به درستی از هم تفکیک شده‌اند یا نه. از آنجا که لغت‌نامه‌ها معمولاً بسیار بزرگ هستند و بصری‌سازی داده‌ها در ابعاد ۲۰،۰۰۰ ناممکن است، از تکنیک‌هایی مانند «تحلیل مؤلفه‌های اساسی» (Principal Component Analysis | PCA) برای انعکاس داده‌ها به دو بُعد استفاده می‌کنیم. نمودار آن به صورت زیر است:

بصری‌سازی جاسازی کیسه کلمات

به نظر می‌رسد که این دو دسته به خوبی از هم تمایز نیافته‌اند که می‌تواند یکی از خصوصیات جاسازی ما و یا صرفاً نتیجه کاهش ابعادی باشد که اعمال کرده‌ایم. برای این که ببینیم ویژگی‌های کیسه کلمات کاربردی داشته یا نه می‌توانیم دسته‌بند خود را بر اساس آن‌ها آموزش بدهیم.

گام ۴: دسته‌بندی

زمانی که برای نخستین بار با مسئله‌ای مواجه می‌شویم، بهترین روش آن است که از یک رویه عمومی مناسب برای شروع استفاده کنیم. این رویه ساده‌ترین ابزاری است که می‌تواند یک مسئله را حل کند. هر زمان که بحث دسته‌بندی داده‌ها پیش می‌آید، یکی از متداول‌ترین روش‌ها به دلیل تنوع‌پذیری و قابلیت توصیفی، «رگرسیون لجستیک» (Logistic Regression) محسوب می‌شود. این روش بسیار ساده برای آموزش دادن داده‌ها است و نتایج آن قابل تفسیر هستند، زیرا به سادگی می‌توانید مهم‌ترین ضرایب را از مدل استخراج کنید.

ما داده‌های خود را به یک دسته آموزشی برای برازش مدل و یک دسته تست برای این که ببینیم در مورد داده‌های مشاهده نشده تا چه حد خوب تعمیم یافته است، افراز کرده‌ایم. پس از آموزش دادن با دقتی برابر با ۷۵.۴ درصد مواجه می‌شویم که چندان هم بد نیست. متداول‌ترین دسته («نامرتبط») تنها ۵۷% نتایج را به دست می‌دهد. با این وجود دقت ۷۵% برای نیازهای ما مناسب است. ما هرگز نمی‌توانیم مدلی را بدون داشتن درک عمیقی از آن بسازیم.

گام ۵: بازرسی

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

ماتریس درهم‌ریختگی (Confusion Matrix)

گام نخست این است که انواع خطاهایی که مدل ما ایجاد می‌کند را درک کنیم و بدانیم که کدام نوع خطا مطلوبیت کمتری دارد. در مثال ما موارد «مثبت نادرست» که یک توییت نامرتبط را به عنوان یک فاجعه دسته‌بندی می‌کنند و موارد «منفی نادرست» که یک فاجعه را به عنوان یک توییت نامرتبط دسته‌بندی می‌کنند، جزو خطاهای با کمترین مطلوبیت هستند. اگر اولویت ما واکنش به همه رویدادهای بالقوه باشد، احتمالاً می‌خواهیم که موارد منفی نادرست خود را به کمترین مقدار برسانیم. با این حال اگر با کمبود منابع مواجه باشیم ممکن است اولویت ما این باشد که با کاهش موارد مثبت نادرست از هشدارهای بیهوده‌ای که ایجاد می‌شوند، جلوگیری کنیم.

یک روش خوب برای بصری‌سازی این اطلاعات استفاده از ماتریس درهم‌ریختگی است که پیش‌بینی‌های مدل ما را با برچسب‌گذاری‌های صحیح مقایسه می‌کند. به طور مطلوب این ماتریس یک خط قطری از سمت بالا-چپ تا پایین-راست خواهد بود یعنی پیش‌بینی‌های ما با به طور کامل با واقعیت منطبق بوده‌اند.

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

توضیح و تفسیر مدل

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

دسته‌بند ما از برخی الگوها (hiroshima, massacre) استفاده می‌کند؛ اما بدیهی است که روی برخی اصطلاح‌های بی‌معنی ‌دارای «بیش-برازش» (overfitting) (heyoo, x1392) است. در این مرحله، مدل کیسه کلمات با لغت‌نامه‌ای بسیار حجیم از واژه‌های مختلف سروکار دارد و همه واژه‌ها را به طور یکسان آموزش می‌دهد. با این حال برخی از این واژه‌ها بسیار نادر هستند و تنها نقششان در پیش‌بینی‌های ما تولید نویز است. در ادامه سعی خواهیم کرد جمله‌هایی را که مسئول فراوانی کلمات هستند بررسی کنیم، تا ببینیم آیا می‌توانیم سیگنال بیشتری از داده‌های خود به دست آوریم یا نه.

گام ۶: محاسبه ساختار لغت‌نامه

برای این که کمک کنیم تا مدلمان بیشتر بر روی واژه‌های معنی‌دار متمرکز شود، می‌توانیم از امتیاز TF-IDF (فراوانی واژه، فراوانی سند معکوس) بر روی مدل کیسه کلمات استفاده کنیم. TF-IDF به کلمات بر اساس نرخی که در مجموعه داده حضور دارند وزن می‌دهد و وزن واژه‌هایی که فراوانی زیادی دارند و تنها بر نویز می‌افزایند را کاهش می‌دهد. در ادامه نمایش PCA جاسازی جدیدمان را می‌بینید.

بصری‌سازی جاسازی‌های TF-IDF

در تصویر فوق می‌بینیم که تمایز خوبی بین دو رنگ وجود دارد. این وضعیت کار جداسازی دو گروه را برای دسته‌بند آسان‌تر می‌کند. در ادامه بررسی می‌کنیم که آیا این وضعیت منجر به عملکرد بهتری خواهد شد یا نه. با آموزش دادن رگرسیون لجستیک دیگر بر روی جاسازی‌های جدید، به دقت ۷۶.۲ درصد می‌رسیم. می‌بینیم که بهبود بسیار اندکی حاصل شده است. آیا مدل ما شروع به گزینش واژه‌های مهم‌تر کرده است؟ اگر هنگام جلوگیری از تقلب مدل، نتایج بهتری به دست آورده‌ایم در این صوت می‌توانیم این مدل را یک ارتقای واقعی بدانیم.

TF-IDF: اهمیت واژه‌ها

واژه‌هایی که مدل جدید انتخاب کرده است، بسیار مهم‌تر به نظر می‌رسند. با این که معیارهای ما در مورد مجموعه تست جدید تنها اندکی افزایش یافته‌اند؛ اما اینک اعتماد بیشتری به مدل خود داریم و از این رو در صورت توزیع آن برای کاربرد مشتریان اعتماد به‌ نفس بیشتری خواهیم داشت.

گام ۷: بهره‌گیری از معناشناسی

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

برای حل این مشکل باید مفهوم معناشناختی واژه‌ها را به دست آوریم، یعنی باید درک کنیم که واژه‌های «خوب» و «مثبت» نزدیک‌تر از «زردآلو» و «قاره» هستند. ابزاری که برای کمک به درک معنی واژه‌ها مورد استفاده قرار خواهیم داد، Word2Vec نام دارد.

استفاده از واژه‌های از پیش آموزش یافته

Word2Vec تکنیکی برای یافتن جاسازی‌های پیوسته برای کلمات است. این ابزار از خواندن حجم عظیمی از متن و به خاطر سپاری این که کدام واژه در کدام زمینه‌ها بیشتر به چشم می‌خورد بهره می‌گیرد. پس از این که این ابزار بر روی داده‌های کافی آموزش داده شد، می‌تواند یک بردار ۳۰۰-بُعدی برای هر واژه در یک لغت‌نامه تهیه کند که در آن واژه‌های دارای معانی مشابه به هم نزدیک‌تر خواهند بود.

مؤلفان این مقاله مدلی را که بر روی حجم بالایی از واژه‌ها آموزش یافته است را به صورت متن باز (Open Source) عرضه کرده‌اند و ما می‌توانیم از آن برای کسب برخی دانش از مفاهیم معناشناختی برای مدل خود بهره بگیریم. بردارهای از پیش آموزش یافته را در این ریپازیتری می‌توانید بیابید.

بازنمایی در سطح جمله

یک روش سریع برای جاسازی یک جمله در دسته‌بند این است که امتیازهای میانگین Word2Vec همه واژه‌ها را در جمله محاسبه کنیم. این همان رویکرد کیسه کلمات است که قبلاً استفاده کردیم؛ اما این بار تنها ساختار نحوی جمله را از دست می‌دهیم و برخی از اطلاعات معناشناختی آن را حفظ می‌کنیم.

جاسازی جمله Word2Vec

در این جا بصری‌سازی جاسازی‌های جدیدمان را با استفاده از تکنیک‌های قبلی می‌بینیم:

بصری‌سازی جاسازی‌های Word2Vec

دو گروه از رنگ‌ها در تصویر فوق متمایزتر از تکنیک‌های قبلی دیده می‌شوند و جاسازی جدید ما می‌تواند به دسته‌بند در جهت ایجاد تمییز بین دو دسته کمک کند. پس از آموزش داده همین مدل برای بار سوم (یک رگرسیون لجستیک) با دقتی برابر با ۷۷.۷ درصد مواجه می‌شویم که تا اینجا بهترین نتیجه ما بوده و  اینک نوبت به بررسی مدل رسیده است.

تعادل پیچیدگی/توصیف‌پذیری

از آنجا که جاسازی‌های ما به صورت یک بردار تک‌بُعدی برای هر واژه مانند مدل‌های قبلی نمایش نمی‌یابد، مشاهده این که کدام واژه به دسته‌بندی ما ارتباط بیشتری دارد کار دشواری است. با این که ما همچنان به ضرایب رگرسیون لجستیک خود دسترسی داریم؛ اما آن‌ها به ۳۰۰ بُعد جاسازی‌های ما ارتباط دارند و نه اندیس واژه‌ها.

برای چنین ارتقای اندکی در میزان دقت، آن حجم از توصیف‌پذیری که از دست رفته است به نظر نامنصفانه می‌آید. با این حال در مدل‌های پیچیده‌تر می‌توانیم از توصیفگرهای جعبه سیاه (black box explainers) مانند LIME بهره بگیریم تا بینش‌هایی در مورد چگونگی کارکرد مدل خود کسب کنیم.

LIME

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

واژه‌های فاجعه صحیح که برای دسته‌ «مرتبط» انتخاب شده‌اند.

در این تصویر مشارکت واژه‌هایی را در دسته‌بندی می‌بینیم که کمتر بدیهی به نظر می‌رسند.

با این حال ما زمان کافی برای کاوش هزاران مثال در مجموعه داده‌های خود را نداریم. در عوض آنچه که باید انجام دهیم این است که LIME را روی نمونه گویایی از موارد تست اجرا کنیم و ببینیم که کدام واژه‌ها به صورت مشارکت‌کننده قوی ظاهر شده‌اند. با استفاده از این رویکرد می‌توانیم امتیاز اهمیت واژه‌ها را مانند مدل‌های قبلی به دست آوریم و پیش‌بینی‌های مدلمان را اعتبارسنجی کنیم.

Word2Vec: اهمیت واژه

به نظر می‌رسد که این مدل واژه‌های با ارتباط بالا را انتخاب می‌کند که بدین معنی است که تصمیم‌های قابل‌درکی می‌گیرد. این وضعیت به این ترتیب است که مرتبط‌ترین واژه‌ها از همه مدل‌های قبلی استخراج می‌شود و از این رو در عمل توزیع واقعی قابل‌اعتمادتری ایجاد می‌کند.

گام ۸: بهره‌گیری از ساختار نحوی با استفاده از رویکردهای سربه‌سر

ما از رویکردهای سریع و کارآمد برای تولید جاسازی‌های جمله‌های فشرده استفاده می‌کنیم. با این حال با حذف ترتیب واژه‌ها، همه اطلاعات معناشناختی جمله‌ها از میان می‌رود. اگر این متدها نتایج کافی ارائه نکنند، می‌توانید از مدل‌های پیچیده‌تری استفاده کنید که کل یک جمله را به عنوان ورودی می‌گیرند و برچسب‌ها را بدون نیاز به ساخت یک بازنمایی واسط ایجاد می‌کنند. یک روش معمول برای انجام این کار آن است که با هر جمله به صورت یک توالی از بردارهای واژگانی منفرد (a sequence of individual word vectors) با استفاده از Word2Vec یا رویکردهای جدیدتر مانند GloVe یا CoVe برخورد کنیم. این وضعیت در ادامه مشخص شده است.

یک معماری سربه‌سر با کارایی بالا

شبکه‌های عصبی پیچشی (Convolutional) برای دسته‌بندی جمله بسیار سریع آموزش می‌یابند و به عنوان معماری یادگیری عمیق مقدماتی به خوبی عمل می‌کند. با این که شبکه‌های عصبی پیچشی (CNN) به طور عمده به دلیل عملکردشان بر روی داده‌های تصویر مشهور هستند، اما معمولاً از اغلب رویکردهای NLP پیچیده‌تر (مانند معماری‌های LSTM و Encoder/Decoder)، آموزش سریع‌تری دارند. این مدل ترتیب کلمات را حفظ می‌کند و اطلاعات ارزشمندی در مورد این که کدام توالی‌های واژه‌ها دسته‌های موردنظر ما را بهتر پیش‌بینی می‌کند به دست می‌دهد. برخلاف مدل‌های قبلی این مدل می‌تواند بگوید که تفاوت بین «الکس گیاهان را می‌خورد» و «گیاهان الکس را می‌خورند» چیست.

آموزش دادن این مدل به کار بیشتری نسبت به رویکردهای قبلی نیاز دارد و مدلی به دست می‌دهد که بسیار بهتر از مدل‌های قبلی عمل می‌کند و دقتی برابر با ۷۹.۵% دارد. همانند مدل‌های قبلی، گام بعدی باید این باشد که پیش‌بینی‌ها را با استفاده از متدهایی اعتبارسنجی کنیم تا مطمئن شویم که بهترین مدل را در اختیار کاربران قرار می‌دهیم.

نکته‌های نهایی

در این بخش برخی نکات مهم رویکردی که در این راهنما مورد استفاده قرار دادیم را جمع‌بندی کرده‌ایم:

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

این رویکردها در مورد یک نمونه خاص با استفاده از مدل‌هایی که برای درک متون کوتاهی مانند توییت استفاده می‌شوند توسعه یافته‌اند؛ اما ایده کار در مورد مسائل مختلفی قابل استفاده است.

اگر به این نوشته علاقه‌مند بودید، پیشنهاد می‌کنیم موارد زیر را نیز ملاحظه نمایید:

==

آیا این مطلب برای شما مفید بود؟