متون موجود در سراسر وب میتوانند منبع غنی از اطلاعات مفید باشند، اما استخراج اطلاعات از آن ها کاری سخت و زمان بر است. که امروزه به لطف روش های پردازش زبان طبیعی و یادگیری ماشین که هر دو زیر شاخه ای از هوش مصنوعی حساب میشوند، آنالیز، مرتب سازی و دسته بندی خودکار متون آسان تر شده است. در این پست از وبلاگ شناسا به مروری بر چیستی و روش های موجود برای طبقه بندی متن یا Text Classification میپردازیم.
فهرست مطالب:
- طبقه بندی متن چیست؟
- چرا طبقه بندی متن مهم است؟
- الگوریتم های طبقه بندی متن چه طور کار میکنند؟
- کاربرد های طبقه بندی متن
- معرفی یک ابزار پایتونی برای طبقه بندی متن - Fast Text
طبقه بندی متن یک تکنیک یادگیری ماشین است که مجموعه ای از دسته های از پیش تعریف شده را به متن مورد نظر ما نسبت میدهد. الگوریتم های طبقه بندی متن در قلب بسیاری از سیستم های نرم افزاری وجود دارند. به عنوان مثال سرویس ایمیلی که تشخیص میدهد ایمیل ورودی باید به پوشه ایمیل های هرز (spam) برود یا نه. یا وبسایتی مشابه ویرگول که مطالب منتشر شد توسط کاربران را ابتدا طبقه بندی میکند و سپس بسته به علایق شما مطالب مورد نظر را به شما پیشنهاد میدهد.
تخمین زده میشود که حدود ۸۰ درصد کل محتوای موجود در وب داده های بدون ساختار هستند. متن یکی از رایج ترین انواع داده های بدون ساختار است که به این دلیل ماهیت بدون ساختار آن تجزیه و تحلیل، مرتب سازی و سازماندهی داده های متنی کاری سخت و زمان بر است. همینطور که قبلا اشاره شد، اینجا است که روش های پردازش زبان طبیعی و یادگیری ماشین به کمک شرکت ها و تولید کنندگان نرم افزار میآیند تا این قبیل از کار ها را سریع تر و مرقون به صرفه تر انجام بدهند.
به طور کلی عمل طبقه بندی متن به دو روش دستی و خودکار قابل انجام است. روش دستی به این معنی است که یک انسان محتوای متن مورد نظر ما را تفسیر کرده و بر اساس آن متن را طبقه بندی کند. این روش نتایج خوبی دارد اما به شدن زمان بر و گران است. روش خودکار نیز به این معنی است که با استفاده از تکنیک های یادگیری ماشین و پردازش زبان طبیعی به صورت خودکار متن مورد نظر را دسته بندی کنیم. این روش بسیار سریع تر، مرقون به صرفه تر و دقیق تر است!
همهی روش های موجود در حوزه طبقه بندی متن به روش خودکار در ۳ دسته قرار میگیرند:
۱- روش های مبتنی بر قانون
این روش های با استفاده از یک مجموعه قواعد و شرایط دست ساز اقدام به طبقه بندی متن میکنند. به طور مثال فرض کنید قصد طراحی سیستمی داریم که قرار است تصمیم بگیرد یک متن خبر ورزشی است یا سیاسی. در این صورت ابتدا باید یک لیست از کلمات مرتبط با ورزش و یم لیست از کلمات مرتبط با موضوعات سیاسی درست کنیم. و سپس موقع طبقه بندی متن مورد نظر، تعداد کلمات مرتبط با ورزش در متن و همچنین تعداد کلمات مرتبط با سیاست را که در ۲ لیست از پیش ساخته ما وجود دارند میشماریم. و در نهایت متن را در دسته ای فرض میکنیم که بیشترین تعداد کلمات مرتبط را داشته است.
۲- روش های مبتنی بر یادگیری ماشین
در روشهای مبتنی بر یادگیری ماشین به جای تکیه در قوانین دستی از قبل ساخته شده، الگوریتم ما یاد میگیرد که بر اساس تجربیات گذشته خود متون را طبقه بندی کند. این روش های با استفاده از ویژگی هایی که از متن استخراج میکنند اقدام به یادگیری نحوه طبقه بندی کردن آن متن میکنند.
۳- روش های هیبریدی
سیستم های هیبریدی در واقع ترکیبی از دو روش قبلی هستند. به این منظور که نتایج نهایی سیستم بهبود پیدا کنند و هر الگوریتم معایب الگوریتم دیگر را بپوشاند.
در این قسمت به طور خلاصه به پر اهمیت ترین کاربرد های موجود برای الگوریتم های طبقه بندی متن میپردازیم.
۱. تحلیل احساسات - Sentiment Analysis
فرآیند خودکار طبقه بندی متن به قطبیت های احساسی مثبت، منفی، خنثی، شاد، عصبانی و غیره.
این سیستم ها به طور گسترده در تجزیه و تحلیل محصولات با استفاده از نظرت کاربران، تحقیقات بازار، پشتیبانی مشتری مورد استفاده قرار میگیرند.
۲- تشخیص زبان - Language Detection
فرآیندی که طی آن متن ورودی بر اساس زبان (به طور مثال: انگلیسی یا فارسی) طبقه بندی میشود.
میتواند به این منظور استفاده شود که در قسمت پشتیبانی مشتریان بر اساس زبان آن ها خدمات ارائه کنیم.
۳- تشخیص قصد - Intent Detection
به طور مثال برای این منظور استفاده میشوند که قصد و هدف مشتری را از ایمیل ها، مکالمات و یا چت بات ها تشخیص دهیم و سپس به طور صحیح آن ها را به بخش مورد نظر هدایت کنیم.
۴- تشخیص ایمیل هرز - Spam Detection
ایمیل های هرز همیشه برای کاربران آزار دهنده هستند. اکثر سرویس های ایمیلی مثل Gmail برای تشخیص ایمیل های دریافتی هرز، آن را بر اساس ویژگی هایی مثل آدرس ایمیل، لینک مخرب، عبارت مشکوک و غیره بررسی میکنند.
۵- تشخیص موضوع - Topic Detection
به طور مثال برای تشخیص اینکه متن مورد نظر یک خبر مرتبط با موضوعات تکنولوژی است یا مربوط به اقتصاد. به طور مثال میتوان از این کاربرد در طراحی سیستم های پیشنهاد دهنده استفاده کنیم.
فست تکست یا Fast Text یک کتابخانه پایتونی اوپن سورس، رایگان و توسعه داده شده توسط شرکت فیسبوک است. به کاربران این امکان را میدهد که عمل طبقه بندی متن را انجام دهند. توانایی کار روی سخت افزار های عمومی را دارد. برای یادگیری مدل خود نیازی به استفاده از پردازنده های گرافیکی (GPU) ندارد و سرعت بسیار قابل توجهی در یادگیری بر روی CPU دارد.
برای آموزش مدل Fast Text به لیست متن های مورد نظر خودتان و برچسب های نظیر آن ها نیاز دارید.
همچنین این ابزار توانایی انجام طبقه بندی چند برچسبی یا Multi-label classification را نیز دارد. برای بهبود عملکرد مدل نیز میتوانیم تعیین کنید که مدل بر اساس چه n-gram ای اقدام به یادگیری کند.
همچنین بخوانید:
- کامپیوترها چگونه زبان را درک میکنند؟ (مروری بر پردازش زبان طبیعی)
- مقدمهای بر شبکههای عصبی بازگشتی (RNNs)
منابع:
- Fast Text
- Text Classification: What it is And Why it Matters
- 5 Examples of Text Classification in Practice