هوش مصنوعی 1069 بازدید

«دسته بندی متن» (Text Classification) که به آن «برچسب‌گذاری متن» (Text Tagging) یا «طبقه‌بندی متن» (Text Categorization) نیز گفته می‌شود، یکی از مسائل «میان رشته‌ای» (Intradisciplinary) در حوزه «علوم کتابداری» (Library Science)، «علوم کامپیوتر» (Computer Science) و «علم اطلاعات» (Information Science) محسوب می‌شود. در دسته بندی متن، هدف اصلی طبقه‌‍بندی یا دسته‌بندی منظم داده‌های متنی به گروه‌های مشخص و از پیش تعیین شده است. روش‌های دسته بندی متن، از طریق به‌کارگیری الگوریتم‌های «پردازش زبان طبیعی» (Natural Language processing)، قادر هستند تا به طور خودکار داده‌های متنی را تحلیل کنند و بر مبنای محتوای این داده‌ها، مجموعه‌ای از برچسب‌ها، کلاس‌ها یا طبقه‌بندی‌های از پیش تعیین شده‌ای را به آن‌ها اختصاص دهند.

«داده‌های متنی غیر ساخت یافته» (Unstructured Text Data) در تمامی جنبه‌های تعامل انسان‌ها با دنیای دیجیتال حضور دارند؛ از ایمیل، چت و مطالب وب‌سایت‌ها تا محتویات موجود در «شبکه‌های اجتماعی» (Social Networks). با این حال، استخراج اطلاعات مفید و با معنی از آن‌ها، فرایندی بسیار سخت و پیچیده محسوب می‌شود. تنها در صورتی که اطلاعات غیر ساخت یافته موجود در داده‌های متنی به «داده‌های ساخت یافته» (Structured Data) تبدیل شوند، این امکان برای محققان این حوزه وجود خواهد داشت که بتوانند اطلاعات با معنی و مفید از داده‌های متنی استخراج کنند.

در گذشته، ساخت یافته کردن داده‌های متنی، فرایندی بسیار مشکل و هزینه‌بر محسوب می‌شد؛ زیرا نیازمند صرف هزینه و وقت بسیار زیادی بود تا داده‌های متنی به طور دستی مرتب‌سازی شوند. از همه مهم‌تر، بعضا برای پردازش دستی این داده‌ها، «قواعد اختیاری» (Arbitrary Rules) تعریف می‌شد که نیازمند تغییر و به روز رسانی مداوم بودند. با مرور زمان، این قواعد کارایی خود را از دست می‌دادند و مدیریت آن‌ها، به فرایندی بسیار سخت و پیچیده تبدیل می‌شد.

ترکیب روش‌های دسته بندی متن (که به آن‌ها «دسته‌بند متن» (text Classifier) گفته می‌شود) با روش‌های پردازش زبان طبیعی، منجر به ایجاد روش‌های خودکار جهت ساخت‌یافته کردن داده‌های متنی شده است. این دسته از روش‌های خودکار «تحلیل متن» (Text Analysis)، سریع، مقرون به صرفه و مقیاس‌پذیر هستند.

مهم‌ترین کاربردهای دسته بندی متن

در طی چند سال اخیر، روش‌های دسته بندی متن به یکی از مهم‌ترین ابزارهای استخراج و تولید دانش در صنایع و شرکت‌های تجاری تبدیل شده‌اند. روش‌های دسته بندی متن به صاحبان صنایع و شرکت‌های تجاری اجازه می‌دهند تا به راحتی «بینش» (Insight) و »دانش» (Knowledge) موجود در داده‌های متنی را استخراج و از آن‌ها، جهت خودکارسازی فرایندهای تجاری استفاده کنند؛ فرایندهایی که در شرکت‌ها و سازمان‌ها، با اصطلاح «هوش تجاری» (Business Intelligence) شناخته می‌شوند.

مهمترین وشایع‌ترین کاربردهای روش‌های دسته بندی متن عبارتند از:

  • «تحلیل احساسات» (Sentiment Analysis): تحلیل احساسات به فرایندی اطلاق می‌شود که در آن «قطبیت» (Polarity) یک متن داده شده نسبت به یک موضوع خاص سنجیده می‎شود. به عبارت دیگر، یک داده متنی داده شده بر اساس قطبیت محتوای آن، به دو دسته مثبت یا منفی (و در برخی از موارد، خنثی) تقسیم‌بندی می‌شود. از چنین کاربردی، جهت ارزیابی برندهای تجاری و درصد رضایت مشتریان از محصولات یا خدمات استفاده می‌شود.
  • «تشخیص موضوع» (Topic Detection): روش‌های دسته بندی متن و تحلیل محتوای متنی، جهت تشخیص موضوع یا «زمینه محتوایی» (Context) داده‌های متنی استفاده می‌شوند. به عنوان نمونه، روش‌های دسته بندی متن به واحدهای ارتباط با مشتریان این امکان را می‌دهند تا نظرات مشتریان در رابطه با یک محصول خاص را در کلاس‌هایی نظیر (Ease of Use)، (Customer Support) یا (Pricing) دسته‌بندی کنند.
  • «تشخیص زبان» (Language Detection): به فرایند خودکار دسته بندی متن بر حسب زبان نوشتاری محتویات موجود در آن، تشخیص زبان گفته می‌شود. روش‌های تشخیص زبان به صنایع یا شرکت‌های تجاری اجازه می‌دهند تا نظرات، انتقادات و شکایات مطرح شده نسبت به یک محصول یا سرویس خاص را بر حسب زبان دسته‌بندی و به واحدهای پشتیبانی محصول در کشورهای مربوطه منتقل کنند.

دسته‌بندی چندکلاسه داده‌های متنی

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

با این حال، اکثریت قریب به اتفاق مطالب آموزشی منتشر شده در مورد دسته بندی متن در سطح اینترنت، تنها «دسته‌بندی باینری متن» (Binary Text Classification) را پوشش می‌دهند؛ مطالبی نظیر «فیلتر ایمیل‌های اسپم» (Email Spam Filtering) که ایمیل‌ها را به دو دسته (spam) یا (ham) دسته‌بندی می‌کنند. در اکثر موارد، مسائل جهان واقعی بسیار پیچیده‌تر از دسته‌بندی باینری هستند.

هدف این مطلب، معرفی و پیاده‌سازی یک سیستم دسته بندی (چندکلاسه) متن برای دسته‌بندی «شکایات مالی مشتریان» (Consumer Finance Complaints) به 12 کلاس از پیش تعیین شده است. به عبارت دیگر، یک سیستم «دسته‌بندی چند کلاسه متن» (Multi-Class Text Classification) برای دسته‌بندی شکایت ثبت شده توسط مشتریان ارائه خواهد شد. امروزه، چنین سیستم‌هایی به عنوان سیستم‌های استاندارد پاسخگویی به مشتریان و خدمات پس از فروش، در سازمان‌ها و شرکت‌های تجاری مورد استفاده قرار می‌گیرند. داده‌های مرتبط با شکایات مالی مشتریان، از طریق لینک [+] قابل بارگیری هستند.

در این مطلب، برای پیاده‌سازی سیستم دسته بندی متن از «زبان برنامه‌نویسی پایتون» (Python Programming Language) استفاده می‌شود. همچنین، کتابخانه نرم‌افزاری شناخته شده (Scikit-Learn) برای پیاده‌سازی مؤلفه‌های «یادگیری ماشین» (Machine Learning) روش دسته بندی متن استفاده می‌شود.

تعریف مسأله و فرموله کردن آن

همانطور که پیش از این نیز اشاره شد، هدف این مطلب، پیاده‌سازی یک سیستم دسته‌بندی (چندکلاسه) متن برای دسته‌بندی شکایات مالی مشتریان به 12 کلاس از پیش تعیین شده است. مسأله پیش رو، یک مسأله دسته‌بندی «نظارت شده» (Supervised) داده‌های متنی محسوب می‌شود. در این مطلب، از چهار مدل یادگیری ماشین برای پیاده‌سازی روش‌های دسته بندی متن استفاده می‌شود. همچنین، عملکرد هر کدام از این روش‌ها سنجیده می‌شود تا بهترین مدل برای دسته‌بندی متن مشخص و برای پیش‌بینی کلاس یا دسته نمونه‌های متنی استفاده شود.

با داشتن یک داده مرتبط با شکایات مالی مشتریان به عنوان ورودی، سیستم باید قادر باشد تا داده ورودی را در یکی از 12 کلاس از پیش تعیین شده دسته‌بندی کند. فرض اصلی سیستم پیاده‌سازی شده این است که شکایات مالی مشتریان (ورودی مسئله)، تنها در یکی از دوازده کلاس از پیش تعیین شده دسته‌بندی خواهد شد. به این مسأله، دسته‌بندی چندکلاسه داده‌های متنی گفته می‌شود.

داده‌های استفاده شده برای آموزش سیستم دسته بندی متن

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

دسته بندی متن
نمایی از داده‌های مرتبط با شکایت مشتریان

جهت پیاده‌سازی و آموزش سیستم دسته‌بندی متن، تنها دو ستون از داده‌های مرتبط با شکایات مالی مشتریان مورد نیاز است؛ داده‌های موجود در ستون (Product) و ستون (Consumer Complaint Narrative). بنابراین، جدول بالا به شکل زیر دوباره نویسی خواهد شد:

محصول (کلاس یا خروجی) گفتار موجود در شکایت مشتریان (ورودی)
0 Mortgage NaN
1 Credit reporting  …I have outdated information on my credit repor
2 Consumer Loan …I purchased a new car on XXXX XXXX. The car de
3 Credit card NaN
4 Debt collection NaN

بنابراین، اگر بخواهیم «ورودی‌ها» (Inputs) و کلاس‌ها (Classes) یا «خروجی‌های مورد انتظار» (Expected Outputs) متناظر با هر کدام از ورودی‌ها را برای سیستم مشخص کنیم، به شکل زیر عمل می‌کنیم:

  • ورودی مسأله: داده‌های موجود در ستون (Consumer Complaint Narrative)، ورودی‌های سیستم دسته‌بندی متن را تشکیل خواهند داد. به عنوان نمونه:
Input #1

I have outdated information on my credit report that I have previously disputed that has yet to be removed this information is more then seven years old and does not meet credit reporting requirements
  • خروجی مسأله: داده‌های موجود در ستون (Product)، خروجی‌های مورد انتظار متناظر با هر کدام از ورودی‌های سیستم دسته‌بندی متن را مشخص خواهند کرد. مقادیر موجود در ستون (Product) از نوع «متغیرهای دسته‌ای» (Categorical) هستند. به عنوان نمونه:
Expected Output for Input #1

 Credit reporting

همانطور که در جداول بالا مشهود است، برخی از عناصر ستون (Consumer Complaint Narrative) با «مقادیر ناموجود» (Missing Values) یا (NaN) مقداردهی شده‌اند. برای جلوگیری از بروز خطا در سیستم دسته‌بندی متن، تمامی نمونه‌هایی که مقدار (Consumer Complaint Narrative) آن‌ها برابر با (NaN) است، از مجموعه داده حذف خواهند شد. همچنین، یک ستون جدید در مجموعه داده ایجاد می‌شود و مقادیر خروجی‌های مورد انتظار لیست شده در ستون (Product)، به‌وسیله مقادیر صحیح «کدبندی» (Encode) می‌شوند؛ به عبارت دیگر، در ستون جدید، هر کدام از مقادیر موجود در ستون (Product) به یک مقدار صحیح نگاشت می‌شود. دلیل نگاشت مقادیر خروجی‌های مورد انتظار این است که در مدل‌های یادگیری ماشین، بهتر است که متغیرهای دسته‌ای توسط مقادیر صحیح نمایش داده شوند.

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

شماره محصول (Product) یا خروجی مورد انتظار متن شکایت مالی مشتریان (Consumer_Complaint_Narrative) شناسه کلاس (Category_ID)
1 Credit reporting  …I have outdated information on my credit repor 0
2 Consumer Loan …I purchased a new car on XXXX XXXX. The car de 1
7 Credit reporting  …An account on my credit report has a mistaken 0
12 Debt collection  …This company refuses to provide me verificatio 2
16 Debt collection  …This complaint is in regards to Square Two Fin 2

کلاس‌های نامتوازن (Imbalanced Classes)

با بررسی دقیق داده‌های موجود در مجموعه داده شکایت مالی مشتریان، مشخص می‌شود که تعداد شکایات (نمونه‌ها) موجود در طبقه‌بندی محصولات (کلاس) نامتوازن است. بیشترین نمونه‌ها در کلاس‌های (Debt collection)، (Credit reporting) و (Mortgage) قرار دارند؛ به عبارت دیگر، در هنگام مدل‌سازی داده‌ها، رفتار داده‌های این کلاس‌ها به شکل بهتری مدل‌سازی می‌شوند. در نتیجه، مدل‌های تولید شده (نظیر مدل‌های یادگیری ماشین) نسبت به این کلاس‌ها بایاس پیدا خواهند کرد.

دسته بندی متن

در هنگام مدل‌سازی داده‌های مسأله، در صورتی که با مشکل کلاس‌های نامتوازن مواجهه شوید، بدون شک، حل مسأله مورد نظر توسط الگوریتم‌های استاندارد (نظیر مدل ‌های یادگیری ماشین و مبتنی بر قاعده (Rule-based)) قطعا مشکل خواهد بود. الگوریتم‌های مرسوم مدل‌سازی داده (بدون در نظر گرفتن توزیع داده‌ها)، معمولا نسبت به «کلاس‌های اکثریت» (Majority Classes) بایاس دارند. در بدترین حالت، مدل پیاده‌سازی شده با داده‌های موجود در «کلاس‌های اقلیت» (Minority Classes)، به عنوان «داده پرت» (outlier) برخورد می‌کند و آن‌ها را نادیده می‌گیرد.

در برخی از موارد نظیر پیاده‌سازی سیستم‌های «پیش‌بینی سرطان» (Cancer Prediction) و «تشخیص تقلب» (Fraud Detection)، مدل‌های تولید شده باید به گونه‌ای تنظیم شوند که بتوانند رفتار داده‌های اقلیت را به خوبی داده‌های اکثریت مدل‌سازی کنند. راه حل دیگر، ایجاد «توازن مصنوعی» (Artificial Imbalance) در مجموعه داده استفاده شده برای مدل‌سازی سیستم است. برای چنین کاری می‌توان از تکنیک‌های «بیش‌نمونه‌گیری» (Oversampling) یا «کم‌نمونه‌گیری» (Undersampling) کلاس‌های اقلیت یا اکثریت استفاده کرد.

با این حال، در این مطلب هدف، «یادگیری داده‌های نامتوازن» (Learning Imbalanced Data) است. در چنین حالتی، یادگیری رفتار داده‌های اکثریت از اهمیت بسیار زیادی برخوردار است. در یادگیری داده‌های نامتوازن (نظیر دسته‌بندی متن)، توسعه دهندۀ سیستم علاقه زیادی به توسعۀ دسته‌بندهایی دارد که بتوانند رفتار داده‌های کلاس‌های اکثریت را بهتر یاد بگیرند و دقت زیادی در دسته‌بندی داده‌های این کلاس‌ها از خود نشان دهند. البته، چنین سیستم‌هایی باید عملکرد معقولی نیز در دسته‌بندی کلاس‌های اقلیت داشته باشند.

نمایش داده‌های متنی

مدل‌های دسته‌بندی متن و الگوریتم‌های یادگیری، قادر به پردازش مستقیم داده‌های متنی در شکل غیر ساخت یافته نخواهند بود. زیرا، مدل‌های یادگیری دسته‌بندی متن روی داده‌هایی آموزش می‌بینند که بردارهای ویژگی عددی دارند؛ نه داده‌های خام متنی که ابعاد بردار ویژگی هر کدام از آن‌ها، متغیر است. بنابراین، در سیستم‌های دسته‌بندی متن، مرحله‌ای به نام «پیش‌پردازش» (Pre-Processing) داده‌های متنی تعریف می‌شود که هدف آن، تولید نمایش عددی از داده‌های متنی خواهد شد.

یکی از متداول‌ترین روش‌های «استخراج ویژگی» (Feature Extraction) از داده‌های متنی، مدل Bag-of-Words یا BoW است. در مدل BoW، برای مدل‌سازی و نمایش هر سند (در این حالت، هر سند متناظر با متن شکایت مالی یک مشتری است)، «تناوب» (Frequency) یا رخداد کلمات در نظر گرفته می‌شود ولی ترتیب رخداد آن‌ها مهم نخواهد بود.

در مدل دسته بندی متن پیاده‌سازی شده در این مطلب، به ازاء هر کدام از کلمات موجود در مجموعه داده، معیاری به نام  Term Frequency-Inverse Document Frequency یا به اختصار TF-IDF محاسبه خواهد شد. در این مطلب، از تابع (sklearn.feature_extraction.text.TfidfVectorizer) در کتابخانه (SciKit-Learn) برای محاسبه بردار (tf-idf) متناظر با هر سند (متن شکایت مالی یک مشتری) استفاده می‌شود. مقادیر پارامترهای مدل TF-IDF در کتابخانه (SciKit-Learn) عبارتست از:

  • مقدار پارامتر (sublinear_df) برابر با (True) در نظر گرفته می‌شود تا از فرم لگاریتمی برای محاسبه تناوب استفاده شود.
  • پارامتر (min_df) برابر با حداقل تعداد اسنادی است که یک کلمه باید در آن‌ها حضور داشته باشد تا در تولید نمایش TF-IDF از اسناد (متون شکایت مالی مشتریان) مورد استفاده قرار بگیرد.
  • مقدار پارامتر (norm) برابر با 12 در نظر گرفته می‌شود تا اطمینان حاصل شود تمامی بردارهای ویژگی، نرم اقلیدسی برابر با 1 دارند.
  • مقدار پارامتر (ngram_range) برابر با (1, 2) در نظر گرفته می‌شود؛ بدین معنی که تنها عبارات یک کلمه‌ای (Unigram) و دو کلمه‌ای (Bigram) در نظر گرفته خواهند شد.
  • مقدار پارامتر (stop_words) برابر با (“english”) در نظر گرفته می‌شود تا تمامی ضمایر نظیر (the) ،(a) و سایر موارد از متن حذف شود و تعداد «ویژگی‌های نویزی» (Noisy Features) در داده‌های متنی کاهش پیدا کند.
خروجی:
(4569, 12633)

در نتیجه مدل‌سازی داده‌ها توسط مدل TF-IDF، هر کدام از 4569 سند (متن شکایت مالی مشتریان) موجود در مجموعه داده، 12633 ویژگی خواهند داشت؛ ویژگی‌هایی که بیانگر امتیاز tf-idf یک کلمه‌ای‌ها (Unigrams) و دو کلمه‌ای‌های (Bigrams) مختلف خواهند بود.

در ادامه، با استفاده از تابع (sklearn.feature_selection.chi2) در کتابخانه (SciKit-Learn) می‌توان کلماتی (یک کلمه‌ای و دو کلمه‌ای) که بیشترین «همبستگی» (Correlation) را با کلاس‌ها یا خروجی‌های مورد انتظار دارند، شناسایی کرد و در خروجی نمایش داد:

کلاس‌ها یا خروجی‌های مورد انتظار همبسته‌ترین تک کلمه‌ای‌ها  همبسته‌ترین دو کلمه‌ای‌ها
Bank account or service

bank

overdraft

overdraft fees

checking account

Consumer Loan

car

vehicle

vehicle xxxx

toyota financial

Credit card

citi

card

annual fee

credit card

Credit reporting

experian

equifax

trans union

credit report

Debt collection

collection

debt

collect debt

collection agency

Money transfers

wu

paypal

 western union

money transfer

Mortgage

modification

mortgage

mortgage company

loan modification

Other financial service

dental

passport

help pay

stated pay

Payday loan

borrowed

payday

big picture

payday loan

Prepaid card

serve

prepaid

access money

prepaid card

Student loan

student

navient

 student loan

student loans

Virtual currency

handles

https

xxxx provider

money want

با بررسی شهودی خروجی‌های چاپ شده می‌توان دریافت که کلمات نمایش داده شده، همبستگی بالایی با کلاس‌ها یا خروجی‌های مورد انتظار دارند.

دسته‌بند چندکلاسه: ویژگی‌ها و طراحی

مرحله طراحی مدل دسته‌بندی متن، مهم‌ترین مرحله پیاده‌سازی یک سیستم دسته‌بندی چندکلاسه داده‌های متنی است.

  • برای آموزش یک مدل «یادگیری نظارت شده» (Supervised Learning)، ابتدا مجموعه داده و ستون (Consumer Complaint Narrative) به برداری از اعداد تبدیل می‌شوند. در این مرحله و برای نمایش برداری داده‌ها، از روش‌هایی بردارهای وزن‌دار TF-IDF استفاده شده است.
  • در مرحله بعد و پس از تولید نمایش برداری از اسناد متنی، نوبت به «آموزش» (Training) مدل یادگیری می‌رسد. از مدل آموزش دیده، برای ارزیابی سیستم دسته‌بندی متن روی نمونه‌های (متن شکایت مالی مشتریان) دیده نشده و پیش‌بینی کلاس یا خروجی (Product) آن‌ها استفاده می‌شود.

پس از تبدیل داده‌های خام متنی به بردارهای عددی با استفاده از نمایش TF-IDF، تمامی ویژگی‌ها و برچسب کلاسی (خروجی مورد انتظار) داده‌ها مشخص می‌شوند. در مرحله بعد، باید مدل‌های دسته‌بندی متن آموزش داده شوند. برای چنین کاری، می‌توان از مدل‌های دسته‌بندی نظیر «دسته‌بند بیز ساده» (Naive Bayes Classifier) استفاده کرد. با استفاده از قطعه کد زیر، یک مدل دسته‌بند بیز ساده (از نوع «چندجمله‌ای» (Multinomial)) روی داده‌های برداری تولید شده آموزش داده می‌‌شود:

پس از آموزش مدل دسته‌بندی متن و برازش مدل روی داده‌های آموزشی، از مدل آموزش دیده برای پیش‌بینی کلاس یا خروجی نمونه‌های دیده نشده استفاده می‌شود:

خروجی:

[‘Debt collection’]

برای اطمینان از صحت خروجی نمایش داده شده، بردار متناظر با این نمونه در خروجی نمایش و کلاس (Product) آن با پیش‌بینی تولید شده توسط مدل دسته‌بندی متن مقایسه می‌شود:

خروجی:

شماره محصول (Product) یا خروجی مورد انتظار متن شکایت مالی مشتریان (Consumer_Complaint_Narrative) شناسه کلاس (Category_ID)
12 Debt collection …This company refuses to provide me verificatio 2

از یک  نمونه دیده نشده دیگر، برای ارزیابی عملکرد مدل دسته‌‌بندی متن استفاده می‌شود:

خروجی:

[‘Credit reporting’]

برای اطمینان از صحت خروجی نمایش داده شده، بردار متناظر با این نمونه در خروجی نمایش و کلاس (Product) آن با پیش‌بینی تولید شده توسط مدل دسته‌بندی متن مقایسه می‌شود:

خروجی:

شماره محصول (Product) یا خروجی مورد انتظار متن شکایت مالی مشتریان (Consumer_Complaint_Narrative) شناسه کلاس (Category_ID)
61 Credit reporting …I am disputing the inaccurate information the 0

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

انتخاب مدل مناسب برای دسته‌بندی متن

در این بخش، مدل‌های یادگیری ماشین پیشرفته‌تر جهت دسته‌بندی متن پیاده‌سازی و ارزیابی خواهند شد. برای پیاده‌سازی مدل‌های پیشرفته‌تر برای دسته‌بندی متن، چهار روش زیر مورد استفاده قرار می‌گیرند:

برای پیاده‌سازی روش‌های بالا جهت دسته‌بندی متن و ارزیابی «دقت» (Accuracy) آن‌ها در  پیش‌بینی کلاس یا خروجی نمونه‌های دیده نشده، از قطعه کد زیر استفاده می‌شود:

دسته بندی متن

خروجی:

model_name
LinearSVC                 0.822890
LogisticRegression        0.792927
MultinomialNB             0.688519
RandomForestClassifier    0.443826

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

ارزیابی مدل‌های دسته‌بندی متن

پس از اینکه مشخص شد روش ماشین بردار پشتیبان خطی، بهتر از دیگر مدل‌های دسته‌بندی متن عمل می‌کند، در مرحله بعد، از «ماتریس درهم‌ریختگی» (Confusion Matrix) برای مقایسه خروجی مورد انتظار و خروجی پیش‌بینی شده برای نمونه‌های دیده نشده (نمونه‌های مرحله تست) استفاده می‌شود.

خروجی:

دسته بندی متن

همانطور که در شکل بالا مشهود است، اکثریت قریب به اتفاق پیش‌بینی‌های انجام شده در «قطر» (Diagonal) قرار می‌گیرند (در قطر ماتریس درهم‌ریختگی، تمامی نمونه‌هایی قرار می‌گیرند که خروجی یا کلاس پیش‌بینی شده توسط مدل دسته‌بندی متن، با کلاس یا خروجی مورد انتظار برای آن‌ها برابر هستند).با این حال، تعدادی نمونه نیز وجود دارند که به اشتباه دسته‌بندی شده‌اند (Misclassification). از دیدگاه تحلیلی، فهمیدن دلیل به اشتباه دسته‌بندی شدن این نمونه‌ها، ممکن است اطلاعات مفیدی در رابطه با مدل‌های دسته‌بندی متن در اختیار توسعه‌دهندگان قرار دهد.

ده نمونه از داده‌های کلاس (Debt collection) که به اشتباه در کلاس (Credit reporting) دسته‌بندی شده‌اند:

شماره متن شکایت مالی مشتریان (Consumer_Complaint_Narrative) محصول (کلاس یا خروجی)
2720 …Quoting them, your first loan application, the Consumer Loan
7091 …While reviewing my XXXX credit report, I notic Consumer Loan
5439 …I have been recently checking my credit report Consumer Loan
12763 …We went to buy XXXX cars, and the dealership s Consumer Loan
13158 …I got a 30 day late XX/XX/2017 and it ‘s repor Consumer Loan
4134 …I took out an instalment loan in the amount XX Consumer Loan
13848 …I was turned down for a loan by Honda Finacial Consumer Loan
19227 …ONEMAIN # XXXX XXXX , IN XXXX ( XXXX ) XXXX Da Consumer Loan
11258 …I have not been given credit for the payments Consumer Loan
11242 …Reliable Credit falsely submitted an applicati Consumer Loan

ده نمونه از داده‌های کلاس (Consumer Loan) که به اشتباه در کلاس (Credit reporting) دسته‌بندی شده‌اند:

شماره متن شکایت مالی مشتریان (Consumer_Complaint_Narrative) محصول (کلاس یا خروجی)
18410 …Dear CFPB, I am asking you for assistance to i Debt collection
5262 …XXXX XXXX, XXXX ( This letter describes in det Debt collection
11834 …XXXX XXXX XXXX is reporting negatively on my c Debt collection
19652 …I recently paid of both debts on my credit acc Debt collection
15557 …Never have been a XXXX XXXX customer. I was at Debt collection
4431 …someone tried getting credit information and i Debt collection
15949 …This debt is from account from $ XX/XX/2008 an Debt collection
12475 …In XXXX XXXX, there was an account opened thro Debt collection
13548 …DIVERSIFIELD CONSULTANTS INC HAVE VIOLATED FCR Debt collection
6988 …Also collections refuses to stop reporting to Debt collection

همان‌طور که در جداول بالا مشاهده می‌شود، برخی از نمونه‌های (شکایت مالی مشتریان) به اشتباه دسته‌بندی شده، نمونه‌هایی هستند که زمینه محتوایی آن‎ها به بیش از یک کلاس مرتبط است. به عنوان نمونه، برخی از شکایات مطرح شده، هم در مورد (credit card) هستند و هم در مورد (credit report). در چنین حالتی، این نمونه‌ها ممکن است به اشتباه در یکی از این دو کلاس دسته‌بندی شوند. نکته مهم در مورد نتایج نمایش داده شده این است که وقوع خطاهایی از این دست، در یک مدل دسته‌بندی متن بسیار محتمل است.

در ادامه، باز هم با استفاده از تابع (sklearn.feature_selection.chi2) در کتابخانه (SciKit-Learn)، عبارات یک کلمه‌ای و دو کلمه‌ای که بیشترین «همبستگی» (Correlation) را با کلاس‌ها یا خروجی‌های مورد انتظار دارند، شناسایی و در خروجی نمایش داده می‌شوند:

خروجی:

کلاس‌ها یا خروجی‌های مورد انتظار همبسته‌ترین تک کلمه‌ای‌ها  همبسته‌ترین دو کلمه‌ای‌ها
Bank account or service

bank

account

debit card

overdraft fees

Consumer Loan

vehicle

car

personal loan

history xxxx

Credit card

card

discover

credit card

discover card

Credit reporting

equifax

transunion

xxxx account

trans union

Debt collection

debt

collection

account credit

time provided

Money transfers

paypal

transfer

money transfer

send money

Mortgage

mortgage

escrow

loan modification

mortgage company

Other financial service

passport

dental

stated pay

help pay

Payday loan

payday

loan

payday loan

pay day

Prepaid card

prepaid

serve

prepaid card

use card

Student loan

navient

loans

student loan

sallie mae

Virtual currency

https

tx

money want

xxxx provider

با بررسی شهودی خروجی‌های چاپ شده می‌توان دریافت که عبارات تک کلمه‌ای و دو کلمه‌ای نمایش داده شده، همبستگی بسیار بالایی با کلاس‌ها یا خروجی‌های مورد انتظار از سیستم دسته بندی متن دارند. همچنین از نظر شهودی، همبسته‌ترین کلمات شناسایی توسط مدل بردار ماشین پشتیبان خطی، نسبت به مدل برداری TF-IDF، همبستگی بهتری با کلاس‌های موجود در سیستم دارند. در ادامه، برخی از پیش‌بینی‌های انجام شده توسط مدل دسته‌بندی متن، جهت دسته‌بندی جملات نمونه در یکی از 12 کلاس از پیش تعریف شده نشان داده می‌شود. از قطعه کد زیر، برای دسته‌بندی داده‌های متنی نمونه با استفاده از مدل دسته‌بندی آموزش دیده (توسط مدل بردار ماشین پشتیبان خطی) استفاده می‌شود.

خروجی:

"I requested a home loan modification through Bank of America. Bank of America never got back to me."
  - Predicted as: 'Mortgage'

"It has been difficult for me to find my past due balance. I missed a regular monthly payment"
  - Predicted as: 'Credit reporting'

"I can't get the money out of the country."
  - Predicted as: 'Bank account or service'

"I have no money to pay my tuition"
  - Predicted as: 'Debt collection'

"Coinbase closed my account for no reason and furthermore refused to give me a reason despite dozens of request"
  - Predicted as: 'Bank account or service'

در مرحله آخر، نتایج ارزیابی عملکرد سیستم دسته‌بندی متن با توجه به معیارهایی نظیر «دقت» (Precision)، «صحت» (Recall) و سایر موارد نمایش داده می‌شود.

کلاس‌ها (خروجی) دقت (Precision) صحت (Recall) امتیاز F1 تعداد کل نمونه‌ها در کلاس‌ها
Credit reporting 0٫82 0٫82 0٫82 288
Consumer Loan 0٫83 0٫60 0٫70 100
Debt collection 0٫80 0٫91 0٫85 359
Mortgage 0٫90 0٫93 0٫92 317
Credit card 0٫73 0٫77 0٫75 165
Other financial service 0٫00 0٫00 0٫00 1
Bank account or service 0٫74 0٫74 0٫74 121
Student loan 0٫92 0٫83 0٫87 111
Money transfers 0٫50 0٫23 0٫32 13
Payday loan 0٫75 0٫38 0٫50 16
Prepaid card 0٫67 0٫12 0٫20 17
avg / total 0٫82 0٫82 0٫81 1508

جمع‌بندی

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

اگر نوشته بالا برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

مرتضی جادریان (+)

«مرتضی جادریان»، دانشجوی مقطع دکتری مهندسی کامپیوتر گرایش هوش مصنوعی است. او در زمینه سیستم‌های هوشمند، به ویژه سیستم‌های هوشمند اطلاعاتی، روش‌های یادگیری ماشین، سیستم‌های دانش محور و محاسبات تکاملی فعالیت دارد.

بر اساس رای 1 نفر

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

برچسب‌ها