یک راهنمای عملی برای پردازش زبان طبیعی

این پست با گذشت زمان کامل تر خواهد شد.در این پست میخوام خیلی خلاصه و روان توضیح بدم چه کارهایی برای انجام یک پروژه پردازش زبان طبیعی باید انجام بدیم.پردازش زبان طبیعی یا Natural Language Processing، که شاخه ای از هوش مصنوعی است، عموما در مورد روش ها ، ابزارها و الگوریتم هایی برای پردارش و فهم زبان طبیعی است. NLP اصولا روی طراحی و ساخت برنامه هایی که تعامل بین ماشین ها و انسان ها را میسر می سازند تمرکز می نماید.گام های اصلی در ساخت یک برنامه پردازش زبان طبیعیشکل زیر مراحل مختلف ساخت یک برنامه پردازش زبان طبیعی را نمایش می دهد. ممکن است برنامه ما یک task تحلیل احساس، ترجمه و ... باشد ولی گام های زیر عموما در همه برنامه های NLP وجود دارند.مراحل یک برنامه پردازش زبان طبیعی برنامه های NLP کار خود را با یک پیکره متنی یا به اصطلاح Corpus آغاز می کنند. این corpus ممکن است یکی از دیتاست های معروف در دسترس همگان باشد و یا ممکن است برای اهداف خاصی جمع آوری شده باشد. به عنوان مثال یک corpus ممکن است مجموعه ای از نظرات کاربران در مورد یک محصول شرکت سامسونگ باشد.مرحله پیش پردازش متن یا Text Pre-processing در این مرحله باید داده های اضافی که ارزشی در پردازش ندارند را حدف نماییم. این مرحله شامل موارد زیر است:حدف تگ های 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 از این کلمات هستند.ارائه متن یا Text Representationمنظور از ارائه متن یافتن روشی است که بتوانبم کلمات را به صورت قابل درک برای کامپیوتر تبدیل نماییم. روش های مختلفی برای این کار وجود دارد. بعضی از این روش ها عبارتند از Bag of words، TF-IDF و یا روش های مختلف word embedding مانند Word2vec، Glove و یا Bert. هر کدام از این روش های word embedding یک پیکره متنی را دریافت و هر کلمه را به یک بردار عددی و یا Numerical Vector تبدیل می نمایند. مرحله Modelingدر این مرحله باید با توجه به task مورد نظر الگوریتم مناسب یادگیری را انتخاب نماییم. به عنوان مثال اگر یک task تحلیل احساس یا classification داریم می توانیم از الگوریتم های SVM و یا Deep Learning استفاده نماییم و با استفاده از الگوریتم انتخابی یک مدل بسازیم. از این مدل می توانیم برای پیش بینی استفاده نماییم.مرحله Evaluationدر این مرحله با استفاده از معیارهایی مانند Precision و Recall مدل ایجاد شده را ارزیابی می نماییم.منبعhttps://towardsdatascience.com/a-practitioners-guide-to-natural-language-processing-part-i-processing-understanding-text-9f4abfd13e72https://www.kdnuggets.com/2019/01/solve-90-nlp-problems-step-by-step-guide.html