علیرضا صفافرد
علیرضا صفافرد
خواندن ۲۲ دقیقه·۲ سال پیش

آنالیز احساس جملات با رویکرد شبکه پیچیده پویا

آنالیز احساس جملات با رویکرد شبکه پیچیده پویا

چیکیده:

ادبیات موضوع و کارهای گذشته:

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

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

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

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

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

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

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

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

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

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

نزدیکی یا betweenness بین کلمات توسط یال‌هایی که گره‌ها را به یکدیگر متصل می‌کنند نمایش داده می‌شود و توسط تعداد کلماتی که پس از کلمه هدف قرار دارند تعیین می‌شود.

همانطور که در شکل زیر نشان داده شده است یک قاب در سراسر متن حرکت می‌کند و ارتباط بین کلمات را مشخص می‌کند . اندازه قاب یک پارامتر است که دقت روش را تحت تأثیر قرار می‌دهد.

ما آزمایش‌هایی با اندازه قاب های از ۲ تا ۱۰ انجام داده‌ایم. جملاتی مانند توییت ها و جملات شبکه های اجتماعی معمولاً شامل تعداد کمی کلمه هستند، این معمولا یا به دلیل محدودیت در تعداد کاراکترهاست (مانند توییتر) و یا به خاطر مفهوم کوتاهی که آنها در بر می‌گیرند. این نشان می‌دهد که مطالعه قاب های بزرگتر از ۱۰ تقریبا بی‌معنی است و موضوعیتی ندارد.

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


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

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

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

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

Containment Similarity (CS):

یک اندازه شباهت گراف است که در سنجش شباهت بین گراف‌های استفاده شده است. این اندازه شباهت تعداد یال‌های مشترک بین دو گراف را تقسیم بر تعداد یال‌های گراف کوچکتر کرده و نتیجه را محاسبه میکند.[5]


Maximum Common Subgraph :

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

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

Maximum Common Subgraph (MCS)-based similarity metrics:

ما همچنین میتوانیم اندازه‌های شباهتی که بر اساس اندازه MCS بین دو گراف است را بررسی کنیم. شناسایی MCS در گراف‌های بدون برچسب یک مسئله NP-complete است. خوشبختانه، شناسایی MCS در گراف‌های با گره‌های برچسب‌دار یک فرآیند با پیچیدگی خطی است.[6]

سه نوع روش محاسبه شباهت بین دو گراف با در نظر گرفتن MCS وجود دارد که در زیر به آن می پردازیم.


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


که در این فرمول صورت کسر تعداد یال های مشترک بین دو گراف در بزرگترین زیرگراف مشترک بین دو گراف بدون در نظر گرفتن جهت یال های دو گراف و مخرج کسر اندازه گراف کوچکتر است.


در این فرمول صورت کسر تعداد یال های مشترک بین دو گراف در بزرگترین زیرگراف مشترک بین دو گراف است که جهت یال ها هم در نظر گرفته شده و یال های هم جهت را در نظر میگیرد و مخرج کسر اندازه گراف کوچکتر است.

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

معیارهای MCSUES و MCSDES از یال هایی استفاده می کنند که در MCS وجود دارد. در مورد MCSDES ما جهت یال ها را در نظر می گیریم در حالی که در مورد MCSUES جهت در نظر گرفته نمی شود. تحقیقات بیشتر نشان می‌دهد که این معیارها این مفهوم را نشان می‌دهند که رابطه کلماتی که در گراف وجود دارند چقدر قوی است.

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

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

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

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

در ادامه کل روش را به طور خلاصه توضیح می دهیمکه چگونه می توان احساسات یک جمله هدف جدید را شناسایی کرد.

شکل زیر تمام مراحل روش تحلیل احساسات گراف کلمه را نشان می دهد.


مرحله اول:

یک گراف برای داده های Train از توییت ها یا جملات منفی و مثبت و خنثی جمع آوری میکنیم.

مرحله دوم:

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

مرحله سوم:

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

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

مرحله چهارم:

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

مرحله پنجم:

بردارهای جملات مجموعه داده آموزشی همراه با احساسی که بیان می کنند برای آموزش یک طبقه بندی کننده SVM استفاده می شوند.

در نهایت هر جمله جدید با استفاده از SVM جمله را به کلاس های احساسی نسبت می دهد و هر جمله به بیشترین امتیازی که از هر کدام از سه دسته احساسات داشته باشد نسبت داده خواهد شد.

رویکرد ما با بسیاری از رویکردهای دیگر یادگیری ماشین با استفاده از مجموعه داده مشابه مقایسه شد. که نتایج دقت آن ها در جدول زیر ارائه شده است.


بالاترین دقت به دست آمده با رگرسیون لجستیک (LR) حدود 71 درصد بود.

در شکل زیر دقت های بدست آمده از روش پیشنهادی با تمام روش های شباهت گراف که بالاتر توضیح داده شد آمده است که در این آزمایش ها با یک قاب که عددی بین دو تا ده بود انجام شد. البته در مقاله [8] نیز جملات ابتدایی را در ۲ دسته کلی تحلیل کرده است و جمع آوری تمام ایدهای برپایه الگوریتم بوده است و دقت حدود ۷۰ الی ۸۰ درصد را رسیده بودند.


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

BERT

Bidirectional Encoder Representations from Transformers

در وبلاگ گوگل در لینک [4] این معماری به این صورت توصیف شده است که

یک معماری شبکه عصبی است که برای پردازش زبان طبیعی و متن استفاده می‌شود. این معماری توسعه داده شده توسط شرکت Google و به صورت اولیه در سال ۲۰۱۸ معرفی شد.

با استفاده از مدل BERT قادر خواهیم بود بهبود قابل توجهی در فهم مفهوم جملات و کلمات به دست آوریم.

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

در مقالات و مطالعاتی که از مدل BERT برای تشخیص احساس جملات استفاده می‌کنند، دقت‌های متفاوت گزارش شده‌اند. این دقت‌ها معمولاً در محدوده‌هایی مانند 80% تا 90% قرار می‌گیرند، اما برای هر مجموعه داده، دقت میانگین ممکن است متفاوت باشد.

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

در ابتدای کار ما یک دیتاست از جملات همراه با احساسات از لینک[1] برداشت کردیم در این دیتاست تمام جملات با یکی از سه احساس زیر دسته‌بندی شده‌اند.

fear = "fear",

joy = "joy",

love = "love",

anger = "anger",

sadness = "sadness",

surprise = "surprise",

سه دسته فایل برای ارزیابی جملات وجود دارد ما از دو دیتاست آن استفاده کردیم یکی فایل train و دیگری test با فایل train ما مدل گراف‌ها را ایجاد کردیم و با مدل train ارزیابی انجام دادیم. به طور کلی به کمک دیتاست موجود در لینک [1] ما دو سری دیتاست ایجاد کردیم و هر کدام را ارزیابی کردیم و به مقادیر جداگانه ای از دقت رسیدیم.

گراف‌هایی که در ادامه مقاله بررسی شده‌اند به کمک ایده مطرح شده در مقاله [2] شکل گرفته اند و ارزیابی شده‌اند البته در مقاله [3] نیز بیان شده است که گراف کلمات و ساختار جمله نیازمند یک گراف جهت دار نیز می‌باشد لذا ما هر کسی را فقط به ۱۰ کلمه بعدی خودش اتصال داده‌ایم.

هر گراف ساختار زیر را در دل خود دارد:

  1. هر node نماینده از یک کلمه می‌باشد
  2. هر یال وزندار نشان دهنده این است که دو کلمه در یک جمله آیا با هم آمده‌اند یا خیر و تعداد دفعاتی که با یکدیگر آمده‌اند را وزن یال قرار میدهیم.

ما در ادامه به کمک تعریف و فایل train بالا ۶+۱ مدل گراف ایجاد کردیم تمام جملاتی که در یکی از ۶ صفت (fear,joy,love,anger,sadness,surprise) آمده‌اند را دسته‌بندی کرده‌ایم و سپس برای هر دسته یک گراف با نام خود احساس ایجاد کردیم از طرف دیگر ۱ مدل گراف ایجاد کردیم که تمام جملات را در کنار هم بدون در نظر داشتن بار احساسات در یک دسته قرار دادیم و گراف مورد نظر آن را ایجاد کردیم. و اسم این گراف را all قرار دادیم.

در ابتدای کار برای پی‌بردن و پیدا کردن شناخت نسبت به گراف تمام مقادیر و ویژگی‌های گراف fear را پیدا کردیم و بررسی کردیم :

انتظار ما به این صورت بود که کلمات کلیدی که بار احساسی بیشتری دارند در ارزیابی‌های centrality پیدا شوند اما همانطور که از جدول پیدا می‌باشد کلماتی که بار احساسی کمی دارند بعد از بررسی ما متوجه مطالب زیر شدیم:

  • در جملات احساسی احتمال به کار رفتن دو کلمه احساسی بسیار کم می‌باشد. به عنوان مثال فرض کنید کلمه x , y دارای بار احساسی هستند و به عنوان مثال احساس fear را از داخل جمله به ما میدهد احتمال استفاده x , y در یک جمله بسیار کم می‌باشد لذا هیچگاه این کلمات در ۷ گراف ساخته شده به یکدیگر یال ندارند و اگر هم یالی وجود داشته باشد وزن آن یال بسیار پایین می‌باشد.
  • از طرفی دیگر وقتی شما جملات را مشاهده می‌کنید کلمه( I و i )تقریبا در تمام جملات استفاده‌شده است لذا این گره در تمامی ۷ گراف ساخته شده از مرکزیت بالایی برخوردار است.

پس ما تلاش کردیم گره‌هایی که در تمام ۷ مدل گراف ایجاد شده از یک اولویت betweenness centrality هستند را از گراف حذف کنیم. البته این باعث شد همبندی در گراف ها کمی به مشکل بخورد لذا ما کمی گراف را تغییر دادیم و تمام ۶ گراف احساسات را به صورت زیر تغییر دادیم:

  • ما از تمام ۶ مدل گراف یک کپی ایجاد کردیم و سپس یک گره برای این گراف ها اضافه کردیم که به تمام گره های دیگر یال دارد و وزن این یال برابر است با تعداد تکرار این کلمه در جملات با بار احساسی مطرح شده در گراف.

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

این حذف گرها را ما تاجایی ادامه دادیم که در الگوریتم Louvain ما به پارامترهای زیر رسیدیم.

Modularity: 0.41440865613294325

Coverage: 0.4669390292641769

Performance: 0.9302603189493434

و این نشان میدهد دسته بندی احساسات تا حد معقولی بهبود پیدا کردند. پس ما در حال حاضر ۷*۲ عدد گراف ساختیم (۱ گراف که تمام گره ها و جملات را در دل خود داشته است و ۶ گراف که از روی جملات هر احساس ساخته شده است و این ۷ گراف یکبار دیگر کپی شدند و گرهایی با اهمیت مرکزی بالا حذف شدند پس در کل از این جا به بعد ۱۴ عدد گراف خواهیم داشت) در مقاله [7] نیز اهمیت کلمات را بر اساس مرکزیت درجه و نزدیکی (Closeness) بررسی کرده است.

علاوه بر این ما گراف احساسات را با الگوریتم‌های مدل سازی بررسی کردیم تا از ساختار داخلی این گراف‌ها بیشتر آشنا شویم بعد از شبیه‌سازی و بررسی گراف ما بیشترین شباهت را با گراف watts-strogatz داشت و این نشان می‌دهد ساختار داخلی این گراف‌ها اصلا خاصیت community بالایی ندارد زیرا شباهت گراف ما با مدل barabasi albert بسیار کم بود و این نشان میدهد کلمات احساسی در دل خود گروه بندی خوبی ندارند.

بعد از مراحل بالا ما برای هر جمله ۵*۶ تا پارامتر ایجاد کردیم پارامترها به این صورت ایجاد می‌شوند که برای هر احساس ما ۵ پارامتر را برحسب گراف مدل شده و ساختار جمله ارزیابی می‌کنیم و سپس در بخش train مدل برحسب این ۳۰ پارامتر دسته‌بندی‌ها شکل گیری می‌شوند و سپس در بخش test جملات را دریافت می‌کنیم و ۳۰ پارامتر را ارزیابی می‌کنیم و سپس در دسته‌ای که شباهت بیشتری داشته باشد قرار میگیرد و این دسته‌ها نشان دهنده یکی از ۶ احساس کلی ما می‌باشد

برای شکل گیری این دسته‌ها ما سه مدل الگوریتم دسته بندی را پیاده سازی کردیم یک الگوریتم svm و سپس الگوریتم bayesian و الگوریتم random forest چون پارامترهای ارزیابی ما از یک جمله ۳۰ مورد می باشد و آنها را نمی توانیم به صورت یک تابع خطی باهم ترکیب کنیم و ضریب ارزش هر پارامتر را به راحتی نمی‌توانیم بدست بیاوریم لذا الگوریتم‌های k-means , bayesian اصلا برای دسته‌بندی جملات ما خوب نیستند و الگوریتم جنگل رندم و svm دقت بیشتری را به ما می‌دهند.

ارزیابی:

در ابتدای کار ما از دیتاست [1] دو دیتاست مختلف ایجاد کردیم اولین دیتاست ما نرمال نبود در کل ۲۰۰۰ جمله در اختیار داشتیم و به دقت ۶۸.۱ درصد رسیدیم که در مقایسه با مقاله [2] بسیار بهتر عمل کرده‌است. و ما در این ارزیابی تمام مراحل مقاله [2] را پیاده سازی کردیم و یک ایده خلاقانه دیگر به آن اضافه کردیم تا به این درصد رسیدم و آن اینکه اگر ارزش بار معنایی گرها بالا بود میزان ارزش را جمع می کردیم با وزن بین یال آنها. به عبارت بهتر ما یک جمله وقتی دریافت می‌کنیم آن را به شکل یک گراف مانند مقاله [2] ایجاد می کنیم. سپس سعی می‌کنیم این گراف را در ۶ گراف موجود از احساسات match کنیم و میزان شبهات را ارزیابی کنیم طبق مقاله[2] و نقطه قوت ما نسبت به مقاله [2] در این ارزیابی اولیه این می‌باشد که ما گرهایی که ارزش معنایی یا مرکزیت بالایی دارند را به صورت خطی در وزن یال بین این دو مورد تاثیر قرار می‌دهیم.

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

Falt:{

{

'joy':{

'sadness': 31,

'fear': 5,

'anger': 10,

'love': 15,

'surprise': 1

},

'fear': {

'joy': 61,

'anger': 6,

'sadness': 69,

'love': 1,

'surprise': 1

},

'anger': {

'joy': 78,

'sadness': 66,

'love': 1,

'fear': 3

},

'sadness': {

'joy': 104,

'love': 1,

'anger': 17,

'fear': 5

},

'love': {

'sadness': 23,

'joy': 88,

'anger': 4,

'fear': 2

},

'surprise': {

'joy': 30,

'sadness': 17,

'love': 1,

'fear': 7,

'anger': 1

}

}

}

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

Correct sentences:{

'sadness': 454,

'joy': 633,

'fear': 86,

'anger': 127,

'love': 42,

'surprise': 10

}

پس ما یک دیتاست دیگر ایجاد کردیم با این تفاوت که تعداد جملات از هر احساس برابر دقیق ۱۱۰۰ عدد باشد. بعد از انجام این کار تمام گراف های ما به صورت نرمال تبدیل شدند و قابلیت قیاس بین آنها بهتر شکل گرفت و ما در این دیتاست با کمک الگوریتم قبل به دقت ۲۰ درصد رسیدیم و این برای ما اصلا مورد قبول نبود.

پس تصمیم گرفتیم تعداد پارامترهای متنوع‌تری را نسب به گذشته ارزیابی کنیم و به کمک الگوریتم های مطرح شده در بخش گذشته که عبارت هستند از الگوریتم svm و سپس الگوریتم bayesian و الگوریتم random forest پیشرفت خود را ارزیابی کنیم.

همانطور که در بخش قبل هم بیان کردیم ما ۵*۶ پارامتر را برای هر جمله ارزیابی میکنیم مقدار این پارامترها به صورت زیر می‌باشد:

ما برای هر جمله یک گراف ایجاد می‌کنیم سپس سعی میکنیم این گراف را در ۶گراف احساسات match کنیم که برای این کار ۵ پارامتر زیر رو ارزیابی می‌کنیم برای هر گراف جمله و احساس که در کل می‌شود ۵*۶ پارامتر برای یک جمله.

نکته‌ای که در ادامه مهم است ما گراف احساس را از این به بعد F مینامیم و گراف جمله را S می نامیم

  • ارزش راس‌های موجود در s را در f بر اساس درجه کلی آن ها ارزیابی میکنیم و جمع همه آن را به عنوان یک پارامتر مدنظر قرار می‌دهیم
  • تمام یالهای موجود در گراف s را در f پیدا می کنیم و سپس وزن های آنها را جمع میکنیم و این نیز می شود پارامتر دیگر ما
  • تعداد راس هایی که قابلیت match شدند نداشتند را جمع می‌کنیم.(البته این تعداد در صورتی افزایش پیدا می کند که این راس در بقیه ۵ گراف دیگر F قابلیت match را داشته باشد)
  • تعداد یالهایی که قابلیت match شدن نداشته باشند را جمع می‌کنیم(البته این تعداد در صورتی افزایش پیدا می‌کند که این یال در گراف‌های دیگر قابلیت match شدن را داشته باشد)
  • در گراف‌هایی که copy ایجاد کردیم و سپس راس هایی که از betweenness centrality بالایی برخوردار بودند را حذف کرده بودیم میزان مرکزیت راس‌های s را در این گراف‌ها بررسی میکنیم و جمع تمام مقادیر مرکزیت ها را در کنار هم به عنوان یک پارامتر ارزیابی قرار میدهیم.

به کمک پارامترهای مطرح شده بالا ما مدل‌های زیر را ساختیم:

SVM

Random forest

Bayesian

و دادهای تست را به این سه مدل دادیم و در انتها به نتیجه‌گیری زیر رسیدیم جالب بر این است که چون ساختار منطقی جملات خیلی شرایط ادبی در آنها مطرح می‌باشد لذا الگوریتم random forest و سپس svm و سپس Bayesian بهتر عمل می کند و این نشان میدهد بسیار شرط های دستور زبان وجود دارد تا ما احساس یک جمله را متوجه بشویم و دقت ها به شرح زیر است:

Accuracy random forest: 41.45٪

Accuracy SVM: 34.25٪

Accuracy naveBayesian: 29.9٪

اما وقتی داده‌ها را به صورت غیر نرمال به این مدلها میدهیم تا train شوند به شرایط دیگری می رسیم که بسیار جالب می‌باشد.

Accuracy naveBayesian: 61.05٪

Accuracy SVM: 55.9٪

Accuracy random forest: 41.65٪

که این نشان میدهد که داده ها بیشتر در احساس joy تمرکز دارند و الگوریتم Bayesian توانسته است این تمرکز را به خوبی تشخیص بدهد البته دادهای تست ما نیز بیشتر بر این احساس تمرکز دارند و این نیز مزید بر علت این اتفاق می‌باشد.

جمع بندی:

در ابتدای کار ما چندین مقاله در این حوزه را مورد بررسی قراردادیم و سپس ما بهترین دقتی که یافت کردیم در این مقالات دقت ۷۴ درصد بوده است که این دقت برای دسته بندی جملات در + و - و خنثی صرفا بوده است اما ما در کاری که انجام دادیم این بوده است که جملات را در ۶ دسته متفاوت قراردادیم (fear , joy , love , anger , sadness , surprise) و به دو صورت متفاوت الگورتیم خود را اجرا کردیم ایده مقاله [2] به همراه ایده خلاقانه وزن دهی گره‌ها بر اساس میزان مرکزیت آنها و به دقت ۶۸ درصد رسیدم البته جملات در این مورد نرمال نبودند و بعد از آن الگوریتم این مقاله را برای دیتاست نرمال مورد ارزیابی قرار دادیم و متوجه این موضوع شدیم که ایده این مقاله بسیار به داده‌ها و حجم اطلاعات تست وابستگی دارد زیرا به دقتی در حدود ۲۰ درصد رسیدم و سپس با رویکرد های ۵ گانه برای هر احساس و استفاده از الگوریتم random forest ما دقت را به ۴۱ درصد رساندیم و این پارامترهای ۵ گانه به کمک الگوریتم های شبکه‌های پیچیده پویا مورد ارزیابی قرارگرفته شدند الگوریتم هایی از قبیل community detection توسط الگوریتم Louvain مورد ارزیابی قرار گرفت و به کمک حذف راس هایی که از betweenness بالایی داشتند گراف را بهبود دادیم و کلمات با بار احساسی بیشتر را پیدا کردیم و همچنین به کمک الگوریتم و پارامترهای ارزیابی مرکزیت اهمیت معنایی کلمات را پیدا کردیم و سپس از الگوریتم های matching گراف ها استفاده کردیم تا بتوانیم میزان شباهت یک جمله را در یک گراف بدست بیاوریم. علاوه بر این برای شناخت ساختار داخلی گراف‌های ایجاد شده با مدل های WS و BA و forest fire گراف‌ها را شبیه‌سازی کردیم و متوجه این موضوع شدیم که ساختار داخلی ۶ مدل گراف احساسات ما ساختار commuinity در دل خود ندارند و بیشتر از آن شبیه به مدل ws هستند ولی خاصیت جهان کوچک در دل آنها قرار دارد.

مراجع:

1)https://www.kaggle.com/datasets/praveengovi/emotions-dataset-for-nlp?select=test.txt

2)Violos, John, et al. "Sentiment analysis using word-graphs." Proceedings of the 6th International Conference on Web Intelligence, Mining and Semantics. 2016.

3)Oerder, Martin, and Hermann Ney. "Word graphs: An efficient interface between continuous-speech recognition and language understanding." 1993 IEEE International Conference on Acoustics, Speech, and Signal Processing. Vol. 2. IEEE, 1993.‏

4)https://blog.google/products/search/search-language-understanding-bert/

5) Aisopos, F. et al. 2012. Content vs. Context for Sentiment Analysis: A Comparative Analysis over Microblogs. Proceedings of the 23rd ACM Conference on Hypertext and Social Media (New York, NY, USA, 2012), 187–196.

6) Conte, D. et al. Challenging Complexity of Maximum Common Subgraph Detection Algorithms: A Performance Analysis of Three Algorithms on a Wide Database of Graphs.

7)Castillo, Esteban, et al. "UDLAP: sentiment analysis using a graph-based representation." Proceedings of the 9th international workshop on semantic evaluation (SemEval 2015). 2015.‏

8)Rosenthal, Sara, et al. "Semeval-2015 task 10: Sentiment analysis in twitter." Proceedings of the 9th international workshop on semantic evaluation (SemEval 2015). 2015.‏

شبکه پیچیده پویاکامپیوترتحلیل دیتا
شاید از این پست‌ها خوشتان بیاید