لینک اصلی این نوشته من در ویرگول + به همراه تصاویر

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

فهرست مطالب:

  • طبقه بندی متن چیست؟
  • چرا طبقه بندی متن مهم است؟
  • الگوریتم های طبقه بندی متن چه طور کار می‌‌کنند؟
  • کاربرد های طبقه بندی متن
  • معرفی یک ابزار پایتونی برای طبقه بندی متن - Fast Text

طبقه بندی متن چیست؟

طبقه بندی متن یک تکنیک یادگیری ماشین است که مجموعه ای از دسته های از پیش تعریف شده را به متن مورد نظر ما نسبت می‌دهد. الگوریتم های طبقه بندی متن در قلب بسیاری از سیستم های نرم افزاری وجود دارند. به عنوان مثال سرویس ایمیلی که تشخیص می‌دهد ایمیل ورودی باید به پوشه ایمیل های هرز (spam) برود یا نه. یا وبسایتی مشابه ویرگول که مطالب منتشر شد توسط کاربران را ابتدا طبقه بندی می‌کند و سپس بسته به علایق شما مطالب مورد نظر را به شما پیشنهاد می‌دهد.

چرا طبقه بندی متن مهم است؟!

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

الگوریتم های طبقه بندی متن چه طور کار می‌کنند؟

به طور کلی عمل طبقه بندی متن به دو روش دستی و خودکار قابل انجام است. روش دستی به این معنی است که یک انسان محتوای متن مورد نظر ما را تفسیر کرده و بر اساس آن متن را طبقه بندی کند. این روش نتایج خوبی دارد اما به شدن زمان بر و گران است. روش خودکار نیز به این معنی است که با استفاده از تکنیک های یادگیری ماشین و پردازش زبان طبیعی به صورت خودکار متن مورد نظر را دسته بندی کنیم. این روش بسیار سریع تر، مرقون به صرفه تر و دقیق تر است!

همه‌ی روش های موجود در حوزه طبقه بندی متن به روش خودکار در ۳ دسته قرار می‌گیرند:

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

کاربرد های طبقه بندی متن

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

۱. تحلیل احساسات - Sentiment Analysis

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

۲- تشخیص زبان - Language Detection

فرآیندی که طی آن متن ورودی بر اساس زبان (به طور مثال:‌ انگلیسی یا فارسی) طبقه بندی می‌شود. می‌تواند به این منظور استفاده شود که در قسمت پشتیبانی مشتریان بر اساس زبان آن ها خدمات ارائه کنیم. ۳- تشخیص قصد - Intent Detection به طور مثال برای این منظور استفاده می‌‌شوند که قصد و هدف مشتری را از ایمیل ها، مکالمات و یا چت بات ها تشخیص دهیم و سپس به طور صحیح آن ها را به بخش مورد نظر هدایت کنیم. ۴- تشخیص ایمیل هرز - Spam Detection ایمیل های هرز همیشه برای کاربران آزار دهنده هستند. اکثر سرویس های ایمیلی مثل Gmail برای تشخیص ایمیل های دریافتی هرز، آن را بر اساس ویژگی هایی مثل آدرس ایمیل، لینک مخرب، عبارت مشکوک و غیره بررسی می‌کنند. ۵- تشخیص موضوع - Topic Detection به طور مثال برای تشخیص اینکه متن مورد نظر یک خبر مرتبط با موضوعات تکنولوژی است یا مربوط به اقتصاد. به طور مثال می‌توان از این کاربرد در طراحی سیستم های پیشنهاد دهنده استفاده کنیم.

معرفی یک ابزار پایتونی برای طبقه بندی متن - Fast Text

فست تکست یا Fast Text یک کتابخانه پایتونی اوپن سورس، رایگان و توسعه داده شده توسط شرکت فیسبوک است. به کاربران این امکان را می‌دهد که عمل طبقه بندی متن را انجام دهند. توانایی کار روی سخت افزار های عمومی را دارد. برای یادگیری مدل خود نیازی به استفاده از پردازنده های گرافیکی (GPU) ندارد و سرعت بسیار قابل توجهی در یادگیری بر روی CPU دارد. برای آموزش مدل Fast Text به لیست متن های مورد نظر خودتان و برچسب های نظیر آن ها نیاز دارید. همچنین این ابزار توانایی انجام طبقه بندی چند برچسبی یا Multi-label classification را نیز دارد. برای بهبود عملکرد مدل نیز می‌توانیم تعیین کنید که مدل بر اساس چه n-gram ای اقدام به یادگیری کند.