این پست با گذشت زمان کامل تر خواهد شد.
در این پست میخوام خیلی خلاصه و روان توضیح بدم چه کارهایی برای انجام یک پروژه پردازش زبان طبیعی باید انجام بدیم.
پردازش زبان طبیعی یا Natural Language Processing، که شاخه ای از هوش مصنوعی است، عموما در مورد روش ها ، ابزارها و الگوریتم هایی برای پردارش و فهم زبان طبیعی است. NLP اصولا روی طراحی و ساخت برنامه هایی که تعامل بین ماشین ها و انسان ها را میسر می سازند تمرکز می نماید.
شکل زیر مراحل مختلف ساخت یک برنامه پردازش زبان طبیعی را نمایش می دهد. ممکن است برنامه ما یک task تحلیل احساس، ترجمه و ... باشد ولی گام های زیر عموما در همه برنامه های NLP وجود دارند.
برنامه های NLP کار خود را با یک پیکره متنی یا به اصطلاح Corpus آغاز می کنند. این corpus ممکن است یکی از دیتاست های معروف در دسترس همگان باشد و یا ممکن است برای اهداف خاصی جمع آوری شده باشد. به عنوان مثال یک corpus ممکن است مجموعه ای از نظرات کاربران در مورد یک محصول شرکت سامسونگ باشد.
در این مرحله باید داده های اضافی که ارزشی در پردازش ندارند را حدف نماییم. این مرحله شامل موارد زیر است:
حدف تگ های HTML
اگرداده های خود را از صفخات وب Crawl کرده باشیم، به احتمال زیاد دارای تگ های HTML است که ارزشی در پردازش زبان ندارند و باید حذف شوند.
حدف Accented Characters
معمولا کاراکترهایی که به زبان دیگری غیر از انگلیسی هستند را قبل از پردازش باید حذف و یا تبدیل نماییم.
گسترش مخفف ها یا Contractions
معمولا در هر زبانی بعضی از کلمات به صورت مخفف نوشته می شوند. مثلا در زبان انگلیسی I can't همان I can not است. این کلمات باید به صورت اولیه و استاندارد خود نوشته شوند.
تبدیل جملات به کلمات
به این مرحله tokenization نیز گفته می شود. در این مرحله جملات را به کلمات جداگانه تبدیل می نماییم.
حذف کاراکترهای ویژه
معمولا به کاراکترهای غیر الفبایی مانند @ و & کاراکترهای ویژه هستند. معمولا اعداد و کاراکترهای ویژه را قبل از پردازش حذف می نماییم.
تبدیل همه حروف به حروف کوچک
همه حروف پیکره را به حروف کوچک تبدیل می نماییم.
تصحیح کلمات با املای اشتباه یا کلماتی که به حالت های مختلفی نوشته می شوند
به عنوان مثال ممکن است کلمه cool به صورت cooool و یا kewl نوشته شود که هر دو باید به cool تبدیل شوند.
مرحله Stemming و Lemmatzation
منظور از این مرحله این است که کلمات باید به حالت ریشه خود تبدیل شوند. مثلا کلمه Jumping و یا Jumped به Jump تبدیل میشود. البته تفوتی بین stemming و lemmatization وجود داره که بعدا در پست جداگانه ای در موردش توضیح می دم.
حدف Stopword ها
منظور از stopword ها کلماتی هستند که دارای ارزش معنایی بالایی نیستند و معمولا چندین بار در متن تکرار می شوند. بعنوان مثال and یا a از این کلمات هستند.
منظور از ارائه متن یافتن روشی است که بتوانبم کلمات را به صورت قابل درک برای کامپیوتر تبدیل نماییم. روش های مختلفی برای این کار وجود دارد. بعضی از این روش ها عبارتند از Bag of words، TF-IDF و یا روش های مختلف word embedding مانند Word2vec، Glove و یا Bert. هر کدام از این روش های word embedding یک پیکره متنی را دریافت و هر کلمه را به یک بردار عددی و یا Numerical Vector تبدیل می نمایند.
در این مرحله باید با توجه به task مورد نظر الگوریتم مناسب یادگیری را انتخاب نماییم. به عنوان مثال اگر یک task تحلیل احساس یا classification داریم می توانیم از الگوریتم های SVM و یا Deep Learning استفاده نماییم و با استفاده از الگوریتم انتخابی یک مدل بسازیم. از این مدل می توانیم برای پیش بینی استفاده نماییم.
در این مرحله با استفاده از معیارهایی مانند Precision و Recall مدل ایجاد شده را ارزیابی می نماییم.