پردازش زبان های طبیعی (NLP) [5]

در این مطلب از بررسی NLP، به بررسی موضوع زیر خواهیم پرداخت: Text Classification and Naive BayesText Classification and Naive Bayesیکی از کاربردهای معروف دسته بندی متون (Text Classification)، دسته بندی ایمیل ها به دو دسته اسپم و غیر اسپم (Spam , Ham) می باشد. خوب همونطوری که قطعاً با اسپم آشنایی دارند، اسپم (Spam)، به معنای ایمیل است که بدون درخواست گیرنده و معمولاً به صورت Bulk و همگانی برای افراد بی شمار فرستاده می شود. ایمیل های Spam بیشتر با هدف تبلیغاتی یا سوء استفاده های دیگر از سیستم دریافت پیام ارسال می شوند. امروز گوگل و سایر ارایه دهندگان سرویس های ایمیل، از روش های بسیار متنوعی جهت تشخیص اسپم از غیر اسپم استفاده می نمایند که شامل بررسی وضعیت Mail server و آدرس IP ارسال کننده و ... می باشد اما یکی از روش های اصولی، ممیزی محتوای ایمیل توسط روش های مبتنی بر NLP می باشد که یکی از این الگوریتم های ساده و معروف Naive Bayes Classifier می باشد که امروز طبق مطالب ارایه شده در کورس NLP دانشگاه Stanford به آن خواهیم پرداخت.دسته بندی ایمیل ها بر اساس روش های Text Classificaitonتئوری بیز (Naive Bayes)سنگ بنای یادگیری بیزی را تئوری بیز تشکیل می دهد. این تئوری امکان محاسبه احتمال ثانویه را بر مبنای احتمالات اولیه می دهد. قطعاً رابطه بیزین (Naive Bayes) که در شکل زیر آورده شده است بارها در هر کدام از دروس ریاضیاتی و به ویژه آمار و احتمالات آورده شده است اما امروز یک مثال عددی و کاربردی از آن را در تشخیص کلاس یک متن بررسی می کنیم.رابطه تئوری بیز - Naive Bayesبرای شروع بهتر است در مورد مفهومی صحبت کنیم به نام Bag of Words یا BoW. کیف کلمات (BoW) یک مدل در پردازش زبان های طبیعی است که با هدف دسته بندی مستندات و متون استفاده می شود. ایده اصلی آن، به این صورت هست که به هر کدام از کلمات یک عدد Unique نسبت می دهیم و Feature بدست آمده بر اساس فرکانس تکرار هر کدام از کلمات به دست خواهد آمد. نحوه محاسبه Bag of Words (BOW) توضیحات تکمیلی از طریق وب سایت دوست عزیزم، جناب آقای دکتر کاویانی، در لینک زیر آورده شده است. ساخت کوله‌ی کلمات(Bag of Words) در پیش‌پردازش متونحال پس از بررسی مقدمات، نوبت به ریاضیات مساله می رسد. همانطور که در شکل زیر مشاهده می فرمایید، جهت به دست آوردن میزان احتمال اینکه یک داکیومنت یا رشته (متن) به یک کلاس (مثلاً کلاس مثبت یا کلاس منفی) از تئوری بیز استفاده می کنیم. داکیومنت با d و کلاس با c نمایش داده شده است.دسته بندی متون با Naive Bayes Classifierجهت یافتن بیشترین میزان احتمال تعلق به هر کلاس از کلاس های در نظر گرفته شده، طبق روابط بالا می بایست Maximum a Posteriori را محاسبه نمود. در ادامه طبق Notation ارایه شده، میزان احتمال توالی کلمات و میزان احتمال تعلق به هر کلاس آورده شده است. البته شایان ذکر است که جهت جلوگیری از صفر شدن کل احتمال، میزان احتمال را با یک جمع می کنیم که در نهایت به شکل زیر خواهد شد.فرمول محاسبه نهایی که ما با آن سر و کار خواهیم داشت.به عنوان بخش پایانی یک مثال عددی را مورد بررسی قرار خواهیم داد. در این مثال، داده های Training و Test به صورت جدولی نشان داده شده است که جهت محاسبه، به این صورت عمل خواهیم کرد:محاسبه P(c) و P(j) به ترتیب مربوط به Chinese و Japanese می شود.برای محاسبه احتمالات شرطی به این صورت می باشد که مثلاً P(Chinese|c) برابر خواهد بود با 6/14 . تعداد کلمه Chinese در کلاس C برابر با 5 می باشد (Count(w,c) = 5).تعداد کل کلمات (حتی تکراری) در کلاس C برابر با 8 می باشد (Count(c) = 5)تعداد کلمات Unique در کلاس C برابر با 6 می باشد (V = 6)مثال عددی Naive Bayes جهت Text Classification در نهایت با توجه به این که احتمال کلاس (c|d5)P بیشتر می باشد، داده تست که به صورت Chinese Chinese Chinese Tokyo Japan می باشد به کلاس C (که همان Chinese می باشد) متعلق خواهد بود.یکی دیگر از اصلی ترین کاربردهای Text Classification، تشخیص احساسات یا Sentiment Analysis می باشد که در روزهای آتی به صورت مفصل در مورد آن بحث خواهیم نمود.من، سهیل تهرانی پور، قصد دارم تا از طریق ویرگول برای شما بیشتر از NLP بگم تا بتونیم در کنار هم زبان قشنگ فارسی رو جهانی تر کنیم.بیاین با هم یادگیری ماشین، یاد بگیریم. (Keep Calm and Learn Machine Learning)