ویرگول
ورودثبت نام
liliHosieni
liliHosieni
liliHosieni
liliHosieni
خواندن ۵ دقیقه·۸ ماه پیش

خوشه‌بندی ۷۸۰۰۰ سوال کاربران با کمک هوش مصنوعی

مقدمه

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

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

۱. ساخت داده از دل چت

پیام‌هایی که در اختیار داشتیم، به‌صورت کامل از چت کاربران با مشاوران بودند. برای شروع، نیاز داشتیم که سوالات اصلی کاربران را از دل مکالمات استخراج کنیم. برای این کار از مدل GPT-4o شرکت OpenAI استفاده کردیم.

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

  • تعداد چت‌ها: ۲۳،۸۵۵ مکالمه
  • خروجی: ۷۸،۲۵۴ سوال مستقل

۲. پیش‌پردازش داده‌ها

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

کارهایی که انجام شد:

  • نرمال‌سازی سوالات
  • حذف حروف اضافه
  • حذف افعال و کلمات پرتکرار بی‌اثر
  • حذف علائم نگارشی و نویزهای متنی

۳. تبدیل متن به بردار (Embedding)

برای اینکه بتوانیم شباهت معنایی بین سوالات را اندازه‌گیری کنیم، هر سوال باید به بردار عددی تبدیل می‌شد. برای این کار از مدل text-embedding-3-large شرکت OpenAI استفاده کردیم.

  • خروجی: ۷۸،۲۵۴ بردار، هرکدام در ۳۱۰۰ بُعد

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

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

۴. انتخاب تعداد بهینه خوشه‌ها

برای تعیین تعداد مناسب خوشه‌ها، از چند معیار مختلف مثل Elbow Method وSilhouette Score استفاده کردیم. در طی آزمایش، چند گزینه مختلف را بررسی کردیم:

  • خوشه‌بندی با ۴۱ خوشه
  • خوشه‌بندی با ۵۳ خوشه
  • و در نهایت ۵۹ خوشه

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

نتیجه نهایی، انتخاب عدد ۵۹ به‌عنوان تعداد خوشه‌های بهینه بود.

نمودار تغییرات Silhouette Score بر اساس تعداد خوشه‌ها (MiniBatchKMeans)
نمودار تغییرات Silhouette Score بر اساس تعداد خوشه‌ها (MiniBatchKMeans)
نمودار Elbow برای تعیین تعداد بهینه خوشه‌ها
نمودار Elbow برای تعیین تعداد بهینه خوشه‌ها


۵. خوشه‌بندی داده‌ها

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

  • KMeans
  • MiniBatchKMeans
  • HDBSCAN
  • GMM (Gaussian Mixture Model)
  • Birch

پس از مقایسه خروجی‌ها از نظر کیفیت خوشه‌بندی، انسجام درونی، و تفسیرپذیری، الگوریتم KMeans بهترین عملکرد را ارائه داد. سایر الگوریتم‌ها یا به منابع پردازشی بیشتری نیاز داشتند (مثل HDBSCAN)، یا ساختار خوشه‌بندی مناسبی برای داده‌های ما نداشتند.

در نتیجه، الگوریتم نهایی انتخاب‌شده برای این پروژه KMeans با ۵۹ خوشه بود.

نمای بصری خوشه‌بندی نهایی سوالات کاربران در فضای دوبُعدی
نمای بصری خوشه‌بندی نهایی سوالات کاربران در فضای دوبُعدی


۶. نام‌گذاری خوشه‌ها

برای نام‌گذاری خوشه‌ها، ابتدا سوالات هر خوشه بر اساس فاصله آن‌ها از مرکز خوشه٬ مرتب شدند. سپس از هر خوشه، حدود ۱۰ تا ۲۰ سوال با فاصله‌های مختلف نسبت به مرکز، انتخاب و بررسی شدند.

پس از بررسی نمونه سوالات منتخب، با کمک تیم مشاوران یک عنوان موضوعی مناسب برای هر خوشه در نظر گرفته شد.

خروجی نهایی یک فایل اکسل بود شامل:

  • شماره خوشه
  • تعداد سوالات
  • عنوان موضوعی
  • توضیح مختصر (در صورت نیاز)

۷. نتایج و بینش‌ها

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

  • بخشی از سوالات مربوط به چالش‌های فنی کاربران پس از آموزش‌ها بود.
  • برخی سوالات مربوط به مشکلات مفهومی یا نیاز به آموزش پیشرفته‌تر بود.
  • همچنین الگوهای تکرار در موضوعاتی مثل اندازه‌گیری، الگو، و پشتیبانی کاربران شناسایی شد.

این تحلیل، ما را در مسیر توسعه بهتر محصولات و خدمات، و همچنین تصمیم‌گیری داده‌محور در تیم‌های آموزشی و فنی یاری داد.

۸. چالش‌ها و محدودیت‌ها

در طول اجرای این پروژه، با دو چالش اصلی مواجه بودیم:

  • حجم بالای داده‌ها: چه در مرحله پردازش (استخراج، embedding، خوشه‌بندی) و چه در مرحله مطالعه (مرور و تحلیل سوالات)، با حجم بزرگی از داده‌ها مواجه بودیم که مدیریت آن نیازمند زمان و دقت زیادی بود.
  • محدودیت سخت‌افزاری: منابع پردازشی سرور، شامل RAM و CPU، برای اجرای برخی الگوریتم‌های سنگین (مثل HDBSCAN) کافی نبود و باعث شد به الگوریتم‌های سبک‌تر روی بیاوریم.

۹. مسیرهای آینده

در ادامه این پروژه، چند مسیر توسعه مهم در نظر گرفته شده است:

  • ساخت یک چت بات بر اساس خوشه‌های پرتکرار
  • آموزش مدل طبقه‌بندی با استفاده از برچسب‌های فعلی
  • انجام خوشه‌بندی مجدد در سطح هر خوشه برای شناسایی زیرموضوعات دقیق‌تر و جزئی‌تر در هر دسته

نتیجه‌گیری

این پروژه نشان داد که حتی در زبان فارسی و با داده‌های بدون ساختار، می‌توان با ترکیب تکنیک‌های پردازش زبان طبیعی (NLP)، مدل‌های هوش مصنوعی و تحلیل داده‌ها، به بینش‌هایی دست یافت که برای تصمیم‌گیری‌های راهبردی و بهبود مستمر تجربه کاربر ارزشمند هستند.

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

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

clusteringunsupervised learningdata analysis
۰
۰
liliHosieni
liliHosieni
شاید از این پست‌ها خوشتان بیاید