EmoShiftNet چیه؟ یه مدل خفن برای تشخیص احساسات توی چت‌های چند نفره!

اگه تا حالا خواستین از صحبت آدم‌ها توی یک گروه بفهمین کی ناراحته، کی خوشحاله یا کی عصبیه، پس دقیقاً دنبال موضوعی به اسم Emotion Recognition in Conversations (ERC) بودین. این یعنی همون تشخیص احساسات توی مکالمه‌ها. این موضوع خیلی برای چیزایی مثل چت‌باتا (روباتای چت)، دستیارهای هوشمند یا حتی برای بررسی سلامت روان آدما کاربرد داره.

ولی یه مشکل بزرگ تو این زمینه بوده که اکثر مدل‌ها وقتی احساسات یه نفر توی مکالمه عوض میشه (مثلاً یکی اول ناراحته، بعد تو همون چت میخنده)، نمی‌تونن این تغییر احساسو خوب تشخیص بدن. به این تغییرات توی احساسات میگن emotion shift، یعنی تعویض یا تغییر حالات روحی وسط دیالوگ. مشکل اینجاست که این جابجایی‌های احساسی خیلی ریز و وابسته به شرایط مکالمه‌ست و مدل‌ها به خاطر این موضوع با دقت کم کار می‌کنن. تازه موضوع datasetها هم هست که بعضی حس‌ها توشون خیلی کمتر از بقیه هستن، واسه همین مدل‌ها براشون ضعیف آموزش می‌بینن.

حالا این وسط یه تیم اومدن ایده‌ی جدیدی زدن به نام EmoShiftNet. این یه مدل یادگیری چند وظیفه‌ای هست (multi-task learning یا به اختصار MTL؛ یعنی مدلی که چند تا کار رو همزمان یاد می‌گیره)، و هدفش اینه که هم احساسات رو از روی مکالمه تشخیص بده، هم بفهمه که کی احساست عوض شده یا همون emotion shift اتفاق افتاده.

EmoShiftNet برای این کار سراغ چندین مدل و داده مختلف میره:

  • از یه مدل معروف به اسم BERT برای گرفتن معنی و حس جملات استفاده می‌کنه؛ این یعنی از متن گفتگوها یه برداشت عمیق درمیاره.
  • از ویژگی‌های صوتی مثل Mel-Frequency Cepstral Coefficients (MFCCs) که یه جور ویژگی صدا تو هوش مصنوعیه، همینطور pitch (زیر و بمی صدا)، loudness (بلندی صدا) و البته ویژگی‌های زمانی مثل مدت سکوت‌ها، حرف زدن همزمان افراد یا طول جملات هم استفاده می‌کنه.

برای اینکه بهتر بتونه تشخیص بده احساسات کی تغییر می‌کنن، بحث Emotion Shift Detection رو به عنوان یه کار کمکی (auxiliary task) کنارش گذاشته. این یعنی مدل یه وظیفه‌ی اضافه داره که باید حواسش به عوض شدن احساسات هم باشه، نه فقط خود احساسات.

برای آموزش هم از چند جور راهبرد استفاده کردن: یکیش focal loss هست (یه تکنیک برای وقتی کلاس‌ها نامتوازن هستن)، بعدش binary cross-entropy (یه پروسه رایج برای آموزش مدل‌های دسته‌بندی)، و یه loss دیگه هم به اسم triplet margin loss (که کمک می‌کنه مدل فرق بین نمونه‌ها رو بهتر بفهمه).

وقتی این مدل رو روی دیتاست معروف MELD تست کردن (MELD یا “Multimodal EmotionLines Dataset”، که کلی گفتگوی فیلم و سریال به همراه صدا و متن داره)، EmoShiftNet تونست نتایج خیلی بهتری نسبت به مدل‌های سنتی و حتی مدل‌های گرافی ERC بگیره. مخصوصاً شناسایی احساسات کم‌یاب یا همون minority emotions واقعا بهتر شد. این یعنی وقتی توی دیتاست یه حس مثل “وحشت” خیلی کمه، ولی هنوز مدل خوب اون رو پیدا می‌کنه.

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

منبع: +