در سال های گذشته NLP توجه های زیادی را سمت خود جذب کرده است. در این روش چهار مدل با یکدیگر ترکیب شده اند از جمله ++K-meansبرای برای دسته بندی کردن به تعداد k کلاس، SMOTE برای از بین بردن imbalance بودن بین کلاس ها، CNN و Bi-LSTM برای تعیین کردن نهایی text sentiment. در اینجا به صورت خلاصه به مراحلی که مدل KSCB انجام میدهد میپردازیم.
1) ارائه یک مدل unsupevised برای مساله sentiment analysis
2) بر طرف کردن مشکل imbalance بودن کلاس ها و به صورت خودکار برچسب هر یک از کامنت ها را مشخص میکند.
3) در نهایت ساخت یک معماری end to end مطابق با یک تابع loss و KSCB عملکرد بهتری نسبت به مدل های supervised دارد برای استفاده در sentiment analysis
گام هایی که برای پیاده سازی Kmeans++ داریم به شکل زیر است:
1) در ابتدا نقطه u1 را به صورت کاملا رندم از دیتاست اتخاب کرده و آن را به عنوان مرکز اولیه در نظر میگیریم و سپس یک نقطه دیگر x را در نظر گرفته و فاصله بین این دو نقطه را محاسبه میکنیم.
2) سپس احتمال نقطه مرکزی خوشه بعدی را بر اساس روش roulette حساب میکنیم در نهایت این عمل را آنقدر تکرار کرده تا به بهینه ترین نقاط برای مرکز خوشه ها دست پیدا کنیم.
1) برای هر یک از نمونه های موجود در کلاس های فرعی (x) فاصله اقلیدوسی بین x و نمونه های دیگر آن کلاس حساب میکنیم تا در نهایت مقدار h نزدیک ترین همسایه ها را بیابیم.
2) نا متوازن بودن کلاس هارا بر اساس نسبت بین کلاس ها تعیین میکنیم و سپس برای کلاس های فرعی در بازه همسایگی داده های جدید را تولید کرده تا در نهایت مشکل imbalance بودن حل شود.
در ابتدا متن را به بردار تبدیل کرده و وارد CNN کرده که شامل چهار لایه input, convolutional, dropout, fully connected میباشد.
در این مدل مشکل حافطه بلند مدت حل شده و برای استفاده در sentiment analysis کاربرد داردو خروجی آن مجموع Hf و Hb میباشد.
در ابتدا تمامی text ها را کلمه کلمه جدا و آن را به بردار تبدیل کرده سپس با استفاده از ++K-means کلاس ها را به K قسمت تقسیم بندی می کنیم و با به کار گیری SMOTE موجب از بین رفتن imbalance بودن بین کلاس ها میشویم. سپس loss function را بین دو مدل اول و دو مدل اخر صدا میرنیم. در نهایت خروجی مدل CNN وارد Bi-LSTM شده و نظر نهایی را اعلام میکند. اگر یک دیتاست جدید داخل همان K دسته قبلی قرار گیرد مقدار بتا که مشخصه loss function است یک و در غیر این صورت صفر است.
برای تابع loss باید احتمال هر یک از کلاس هارا در لایه Output تعیین کنیم و با استفاده از p(i) های تعیین شده {i = 1, 2, 3, ..., K } مقدار loss(T) را تعیین میکنیم.
از روش های ACC, Recall, F1-score و AUC استفاده کرده ایم. در نهایت به بالاتریم دقت مورد نظر رسیدهایم با در نظر گرفت سه دیتاست متفاوت.