Sentiment Analysis using Deep Learning on Persian Text

تغییرات پروژه از تاریخ 1396/10/09 تا تاریخ 1396/11/21
**استفاده از متد‌های یادگیری عمیق در نظرکاوی متون فارسی  **
 # مقدمه
 در سال‌های اخیر، با توجه به افزایش روز افزون داده‌های متنی و همچنین اهمیت اطلاعات استخراج شده از این داده‌ها، کاربرد طبقه بندی متون بیسیار بیش از پیش احساس میشود.  نظرکاوی[^Sentiment Analytic] هم یکی از استفاده های طبقه بندی متون میباشد که کاربرد‌های آن در ارزیابی کالاها و اقبال جمعی از یک موضوع یا یک اتفاق بسیار به چشم می‌آید[2][1].
تا به حال تمرکز بیشتر روش‌های ارایئه شده بر روی زبان انگلیسی بوده است که در آن‌ها چالش‌های موجود در دیگر زبان‌ها مورد توجه قرار گرفته نشده است. یکی از عمده‌ترین چالش‌های موجود در زبان فارسی، تعداد زیاد پسوندها برای فرم‌های مختلف کلمات است مانند "من می‌روم" و " تو میروی"[4].در این مقاله تمرکز بر استفاده از روش‌هایی برپایهاست که بتوان بر این چالش‌های موجود در زبان فارسی است.فائق آمد. 
تقریبا تا به حال بیشتر روش‌های معرفی شده در بحث نظرکاوی از روش‌های و الگوریتم‌های سنتی یادگیری ماشین مثل logistic regression ، Naive Bayes و  ماشین بردار پشتیبان[^SVM] استفاده میکردند. که هر سه این الگوریتم‌ها با توجه به نحوه عملکردشان نیاز به بردار ویژگی‌ها با طول ثابت دارند[3]. برای استجراج بردار ویژگی‌ها با طول ثابت، یک روش بسیار ساده و معقول استفاده از متد سبد واژگان است[3]، که در آن. در این روش ساخت بردار‌ها بدون توجه به مکان حضور کلمات در جمله و شباهت معنایی بین کلمات صورت میگیرد. در نظر نگرفتن این ترتیب کلمات باعث میشود، امکان تشخیص و تمیز دادن جملات با ترکیب کلمات یکسان و بار معنایی متفاوت وجود نداشته باشد[8]. که این موضوع باعث ایجاد خطا در روند انجام طبقه‌بندی می‌شود.
یکی دیگر از مشکلات موجود در نظرکاوی برایدر زبان فارسی، نبود دادگان[^DataSet] بزرگ برای کار در این حوزه است. در این مقاله دادگانی متشکل از ۲۰۰۷۶۱ نظر در مورد کالاهای دیجیتال معرفی شده است. که شامل ۵۰۰۰۰ نظر به همراه برچسب است. نتیجه نهایی این مقاله با NBSVM-bi که یکی از روش‌های قدمی در نظرکاوی است مقایسه میشود[9].
در این مقاله از دو روش مخلف شبکه عصبی عمیقژرف استفاده شده است، این روش‌ها Bidirectional Long Short Term Memory) LSTM) و Convolutional Neural Network) CNN) هستند که استفاده از آن‌ها در کاربرد‌های دگیر همچون بینایی ماشین و تشخیص گفتار، منجر به بدست آمدن نتایج بسیار قابل قبولی شده است[5][6].

 # معرفی دادگان
داده‌های این مقاله که شامل ۲۰۰۷۶۱ نظر درمورد کالاهای دیجیتال است، که با استفاده از وب کرالر از سایت دیجیکالا  گردآوری شده است. این دادگان شامل ۵۰۰۰۰ دارای برچسب‌های مثبت با منفی میباشد. برچسب‌های این داده‌ها با استفاده از امتیازات ثبت شده همراه نظرات استخراج شده است، که با توجه به برسی‌های صورت گرفته بر روی دادگان این مقاله مشاهده شد که این دادگان کاملا بی‌اشکال نبوده و در برخی موارد به دلیل نبود تناسب معنایی بین امتیاز ثبت شده و نظر بیان شده برچسب‌های اختصاص یافته به نظر درست نبوده است. که این موضوع به وضوح در روند یادگیری و نتیجه الگوریتم تاثیر گذار خواهد بود. همچنین دادگان معرفی شده غیر متعادل بوده است و داده‌ها با برچسب مثبت تقریبا ۱۰ برابر داد‌ه‌ها با برچسب منفی است.
جدول زیر برسی آماری دادگان است که نشان دهنده تعداد نظرات مثبت منفی و بدون برچسب است. در جدول زیر l$l$ نشان دهنده میانگین قطعه‌های برای هر نظر است و $V$ بیان‌گر تعداد قطعه‌ها[^token] های غیر یکسان در کل پیکره[^Corpus] است.
![برسی آماری دادگان](https://boute.s3.amazonaws.com/288-tabel1.png)
 # کارهای مرتبط

در بحث نظرکاوی تا کنون الگوریتم‌ها و روش‌های مختلفی ارایئه شده است که در تعداد کمی از آن‌ها از روش‌های آماری و قاعده‌بنیاد بهره‌ میگیردند، در صورتی که اکثر آن‌ها بر پایه متد‌های یادگیری ماشین هستد. و همچون مقاله Bo Pang ،که نظرکاوی را یک شکل از طبقه بندی متن میداند و با آن همانند طبقه بندی متون برخورد میکند، الهام بخش بیسیاری از این روش‌ها بوده است[7]. این روش‌ها عمدتا از الگوریتم‌های با نظارت NaIve Bayes ، Maximum Entropy، مانند آنتروپی بیشینه، NaIve Bayes و  ماشین بردار پشتیبان بهره میگیرند[8]. معمولا در موضوعات مرتبتط با متن در یادگیری ماشین از روش سبد واژگان استفاده میشود که مشکلات آن در مقدمه ذکر شد. همنطور که ذکر شد به واسطه  مشکل ساخت بردار‌ها بدون توجه به مکان حضور کلمات در جمله در متد سبد واژگان[^bag-of-words]، این روش را  در بدست آوردن درک عمیق معنایی با مشکل مواجه میکند.
این مقاله شامل دو بخش است. بخش اول آموزش بدون نظارت نمایش برداری داده‌هامتون، به وسیله  مدل چندتایی پرشی [^skip-gram] است[11],. و بخش دوم آموزش با  نظارت نظرکاوی اسناد[^document sentiments] با استفاده از متد‌های LSTM و CNN هست.

 # توضیح مدل
 در این بخش کمی به توضیح و شرح مدل‌های استفاده شده در این مقاله میپردازیم. 
 **الف : مدل چندتایی پرشی**
 ![معماری مدل چندتایی پرشی](https://boute.s3.amazonaws.com/288-skip_gram_arch.png)
 این مدل برای یادگیری و ساخت یک نمایش برداری از کلمات داخل متن بصورت  بدون ناظر استفاده میشود[11] . که معمولا مرحله یادگیری، بر روی داده‌های بسیار زیاد انجام میگیرید . به طور کلی مدل چندتایی پرشی سعی میکند با پیشبینی کلمات همسایه‌ی کلمه اصلی، یک نمایش برداری برای آن بدست بیاورد. به بیان دیگر اگر توالی کلمات داخل متن مجموعه آموزشی را به صورت $w1,w2,...,wt$ در نظر بگیریم، در مرحله آموزش این مدل سعی بر بیشینه کردن مقدار معادله زیر(۱) خواهد کرد . که در واقع میانگین احتمال حضور کلمات در دنیای لوگاریتمی میباشد[11].
![(۱)](https://boute.s3.amazonaws.com/288-fo_12.png)
در فرمول بالا $c$ برابر با اندازه پنجره اطراف کلمه‌ اصلی است . که مدل در  این محدوده سعی در پیش‌بینی احتمال حضور کلمات اطراف کلمه اصلی میکند. همچنین در فرمول بالا برای محاسبه احتمال شرطی از  تابع بیشینهٔ هموار (2) استفاده میکنیم[11].
![(۲)](https://boute.s3.amazonaws.com/288-fo_21.png)
در فرمول بالا $W$ اندازه مجموعه واژگان است .$Vw$ و $V'w$ دو نوع نمایش برداری از کلمه w هستند که اولی نمایش برداری ورودی و دومی نمایش برداری خروجی است[11]. بیشینه کردن احتمال شرطی بیان شده در فرمول (۲) به معنی کمینه کردن کردن فاصله کسینوسی بردار‌های دو کلمه است. که در نتیجه این امر بعد از اتمام مرحله آموزش و ساخته شدن نمایش برداری کلمات، کلمات مشابه موجود در  مجموعه آموزشی بردار‌های مشابه و نزدیک به هم خواهند داشت.
در جدول زیر چندین بردار از کلمات نمایش داده شده است که به وسیله متد تحلیل اجزای اصلی به بعد‌های قابل نمایش در جدول تبدیل شده‌اند. با تحلیل و برسی این جدول متوجه روابط و اطلاعات معنایی موجود بین کلمات خواهیم شد. مثلا برای نمونه کلماتی همچون " سونی " ، " اپل " ، " هوا وی " که تمامی آن‌ها از برندها تلفن همراه هستند، دارای بردار‌های تقریبا مشابهی میباشند. همچنین در مدل چندتایی پرشی ارتباطات معنایی دیگری هم وجود دارد که در مقاله [11] بخشی از آن ذکر شده است. از جمله این ارتباطات میتوان ارتباط میان کشور و پایتخت آن‌ها را نام برد. به طور کلی این ارتباطات معنایی موجود در بردار‌های نهایی دلیل بسیار مناسب و محکمی برای استفاده از این مدل در حوزه‌های مختلف  پردازش زبان طبیعی همچون عقیده کاوی است.
![جدول نمایش برخی از بردار‌ها پس از مرحله آموزش که به وسیله متد تحلیل اجزای اصلی به دو بعد کاهش داده‌ شده‌اند](https://boute.s3.amazonaws.com/288-table_2.png)
**ب : شبکه عصبی حافظه کوتاه-مدت ماندگار دوسویه (bidirectional LSTM)**
معماری کلی این مدل شبیه به معماری مدل‌های شبکه های عصبی مکرر میباشد[6] با این تفاوت که در این مدل بجای واحد‌های مخفی خودمتصل یک نوع واحد حافظه وجود دارد . هر چند که در ابتدا  شبکه های عصبی مکرر برای پردازش سیگنال های دنباله دار به وجود آمدند، اما در این امر با محدودیت‌هایی مواجه شدند. در واقع کم شدن و یا از بین رفتن اثر دنباله ورودی پس از چرخیدن و حرکت در لایه‌های مخفی یکی از اصلی‌ترین مشکلات این شبکه است که آن را با نام ناپدید شدن گرادیان میشناسند[10]. این مشکل باعث ناتوانی شبکه‌های عصبی مکرر در  یادگیری وابستگی‌های بلند مدت میشود. مدل شبکه عصبی حافظه کوتاه-مدت ماندگار این مشکل را با استفاده از واحد حافظه حل کرده است که در ادامه معادلات (۳) روند محاسبه خروجی واحد مخفی شبکه عصبی حافظه کوتاه-مدت ماندگار $ht$ را با توجه به ورودی $xt$ نشان میدهد[12].
![۳. روند محاسبه خروجی واحد مخفی شبکه عصبی حافظه کوتاه-مدت ماندگار](https://boute.s3.amazonaws.com/288-fromul4.png)
در بالا i  ورودی ، o خروجی و f گیت فراموشی هستند. $Xt $ورودی واحد حافظه در لحظه t است. g حالت مخفی میانی است. C نمایانگر حافظه داخلی واحد مخفی است. $σ$ نیز تابع سیگموید لجستیک میباشد. همچنین $W$،$U$ ماتریس‌های وزن‌دار و b بردار سوگیری میباشد.
همانطور که میدانید در شبکه‌های عصبی مکرر خروجی واحد مخفی به صورت $ (ht =tanh(Wxt +Uht-1  $ .  محاسبه میگردد. که در مقایسه با محاسبه خروجی واحد مخفی شبکه عصبی حافظه کوتاه-مدت ماندگار از پیچیدگی بیشتری برخوردار است. در واقع این مکانیسم پیچیده است که  شبکه عصبی حافظه کوتاه-مدت ماندگار امکان ذخیره سازی اطلاعات برای مدت زمان طولانی را میدهد. که این امر امکان یادگیری وابستگی‌های بلند مدت را برای این مدل فراهم میکند[12] [10]. 
در مدل شبکه حافظه کوتاه-مدت ماندگار که در بالا مشاهده کردیم، تنها مقداریر دنباله‌های گذشته در محاسبه خروجی لایه مخفی به کار گرفته میشوند. اما چون در این عملیات طبقه‌بندی (نظرکاوی) ما جملات را یکجا دریافت میکنیم امکان استفاده از دنباله‌های آینده را نیز خواهیم داشت که بسیار مفید خواهد بود. با توجه به این موضوع در این مقاله از مدل شبکه عصبی حافظه کوتاه-مدت ماندگار دوسویه استفاده شده است. معماری این مدل را در شکل (۴) مشاهده میکنید. در این معماری از دو واحد حافظه مجزا استفاده شده است که یکی وظیفه محاسبه خروجی با توجه به دنباله پیش را بر عهده دارد ($\overrightarrow{h}$) و دیگری وظیفه محاسبه خروجی با توجه به دنباله قبل را بر عهده دارد ($\overleftarrow{h}$). سپس در نهایت این خروجی‌ها با یکدیگر ترکیب شده و با  اعمال mean pooling بردار نمایش کلی جمله را بدست می‌آوریم. این نمایش برداری شامل اطلاعات سطح بالایی است که در آن خلاصه‌ای از اطلاعات متن موجود است. این نمایش برداری را میتوان به عنوان ویژگی در عملیات طبقه‌بندی استفاده کرد[12] [10].
بعد از محاسبه این بردار نمایش با استفاده از یک لایه بیشینه هموار (۴) میتوان احتمال تعلق به هر یک از کلاس‌ها را مخشص کرد.
![۴](https://boute.s3.amazonaws.com/288-formul4.png)
یکی از راه‌کار‌های مورد استفاده برای جلوگیری از یادگیری افراطی، اضافه کردن متد دورریزی(dropout) به مدل است. که این متد کاری شبیه به عمل منظم‌سازی را انجام میدهد[5]. این متد به صورت تصادفی با احتمال $p$ مقدار برخی از واحد‌های مخفی را برابر صفر قرار میدهد. به صورت کلی در مدل  شبکه عصبی حافظه کوتاه-مدت ماندگار توصیه میشود عمل دورریزی بر روی لایه‌های بازگشتی اعمال نشود. در این مقاله نیز عمل دورریزی بر روی خروجی هر یک از لایه‌های شبکه عصبی حافظه کوتاه-مدت ماندگار انجام گرفته است.
**ج : شبکه عصبی مکرر(CNN) **
در زیر معماری شبکه عصبی مکرر برای طبقه‌بندی متون نمایش داده شده است (۵).
![۵ . معماری شبکه عصبی مکرر برای طبقه‌بندی متون](https://boute.s3.amazonaws.com/288-shape.png)
در شکل بالا ورودی شبکه به صورت ماتریس است که هر سطر آن برداری است که بیانگر یک قطعه از متن است. معمولا این قطعه از متن نمایانگر یک کلمه است. پس در هر سطر از وردی یک بردار از  قطعه متن وجود خواهد داشت. فرض کنید که هر متن دارای حداکثر $N$ قطعه باشد. و هر یک از این قطعه‌ها به صورت بردار‌های d بعدی نمایش داده شده باشند، در نتیجه ورودی یک ماتریس $N \times D$ خواهد بود. با توجه به این موضوع میتوان ورودی را مانند یک عکس در نظر گرفت. و میتوان فیلتر‌ها خطی با اندازه پنجره $h$ را بر روی این ماتریس اعمال کرد. که با توجه به اینکه هر سطر برداری از یک قطعه است طبیعی است که عرض فیلتر‌ها برابر با اندازه بردار قطعه‌ها باشد[5][13].. برای اعمال عملیات convolution بر روی h کلمه باید فیلتری به اندازه‌ی $h \times d$ را اعمال کرد. فرض میکنیم $[A[i:j$ برابر است با پنجره‌ای از قطعه‌ها است از قطعه iام تا قطعه jام موجود در ماتریس متن $A$  [5][13].. با توجه به موارد ذکر شده ویژگی $Ci$ با توجه به پنجره‌ی از قطعه‌ها با اندازه $h$ مانند فرمول (۶) محاسبه میشود.
![۶](https://boute.s3.amazonaws.com/288-formul_5.png)
در فرمول بالا i از ۱ تا $N-h+1 $تغییر میکند و $w$ برابر است با ماتریس وزن‌های فیلتر. b بردار سوگیری میباشد. f تابع فعال‌سازی است.
پس از اعمال فیلتر w بر روی تمام پنجره کلمات ممکن در متن و محاسبه ویژگی‌های آن‌ها از طریق فرمول بالا مقدار ویژگی‌ها را در داخل  بردار(۷) قرار خواهیم داد. 
![۷](https://boute.s3.amazonaws.com/288-formul_7.png)
اندازه متن و اندازه پنجره فیلتر اعمال شده بر روی متن مشخص کننده اندازه نگاشت(map) ویژگی‌ها است. با توجه به بوجود آمدن بردار‌های ویژگی با اندازه‌های مختلف، برای رفع این مشکل یک لایه ائتلاف‌گر (pooling) در اخرین لایه قرار میدهیم .این عمل باعث ثابت شدن اندازه بردار‌های ویژگی استخراج شده میشود. در این معماری از هر یک از نگاشت‌ها بالاترین ویژگی با بالاترین مقدار انتخاب میشود.
در این معماری برخی افراد برای پیاده‌سازی عمل منظم‌سازی از عملیات دورریزی استفاده میکنند. این افراد عمل دورریزی را در لایه یکی مانده به اخر اعمال میکنند که در مرحله آموزش مقدار نسبتی از واحد‌های مخفی را برابر صفر قرار میدهند. اگر $z$ را لایه یکی مانده به آخر فرض کنیم، خروجی لایه که با $y$ مشخص شده است در مرحله انتشار رو به جلو از طریق فرمول (۸) محاسبه میگردد.
![۸](https://boute.s3.amazonaws.com/288-formul_8.png)
در فرمول(۸) $r$ یک بردار از متغیر‌های تصادفی با توزیع برنولی است. $w$ ماتریس‌ وزن‌ و $b$ بردار سوگیری لایه خروجی میباشد.[10][13]

 # مرحله‌ آموزش
 با توجه به این امر که برای نظرکاوی در زبان فارسی  دادگان بزرگ با ناظر وجود ندارد، این مقاله در ابتدا بردار‌های کلمات خود را به صورت بدون ناظر بر روی تمام پیکره خود آموزش داده است. برای این امر از مدل چندتایی پرشی استفاده شده است. پس از استخراج بردار‌های کلمات و ساخت مدل چندتایی پرشی از آن به عنوان ورودی به مدل‌های شبکه عصبی مکرر و شبکه عصبی حافظه کوتاه-مدت ماندگار دوسویه میدهیم. سپس این مدل‌ها را با استفاده از داده‌های برچسب دار آموزش میدهیم. در این مقاله برای مرحله آموزش ۹۰٪ از داده‌های به صورت تصادفی برای آموزش انتخاب شده و مابقی داده‌ها برای عملیات آزمون استفاده میشود. برای هر دوی این مدل‌ها سعی شده که تابع اتلاف آنتروپی متقاطع(۹) را بین لایه‌ی softmax و برچسب‌های آن کمینه شود.
 ![۹](https://boute.s3.amazonaws.com/288-formul_ss.png)
در این مقاله ابعاد بردار ویژگی برابر ۱۵۰ فرض شده است. همچنین برای ساخت مدل چندتایی پرشی نیز اندازه پنجره را برابر با ۵ قرار میدهیم. در مرحله یادگیری با ناظر نسبت منظم‌سازی برابر با ۰.۱ است. همچنین در این مقاله برای به حداقل رساندن تابع اتلاف از الگوریتم بهینه‌سازی آدام با نرخ یادگیری ۰.۰۰۱ استفاده شده است. همچنین نرخ دورریزی بر روی ۰.۵تنظیم شده است. لازم به ذکر است که دورریزی تنها در مرحله آموزش اجرا شده است. در مدل  شبکه عصبی مکرر از فیلتر‌هایی با ارتفاع ۳ ، ۴ و ۵ بهره گرفته شده.
همچنین در مدل شبکه عصبی حافظه کوتاه-مدت ماندگار دوسویه تعداد لایه‌های مخفی ۲۰۰ عدد تظیم شده است.

#معیارهای ارزیابی
دادگان معرفی شده در این مقاله غیر متعادل بوده و از این رو برای ارزیابی نتایج از معیار‌های دقت (precision)، فراخوانی(recall)، یک نوع واحد حافظه وجود دارد . هر چند که در ابتدا  شبکه های عصبی مکرر برای پردازش سیگنال های دنباله دار به وجود آمدند، اما در این امر با محدودیت‌هایی مواجه شدند. در واقع کم شدن و یا از بین رفتن اثر دنباله ورودی پس از چرخیدن و حرکت در لایه‌های مخفی یکی از اصلی‌ترین مشکلات این شبکه است که آن را با نام ناپدید شدن گرادیان میشناسند[10]. این مشکل باعث ناتوانی شبکه‌های عصبی مکرر در  یادگیری وابستگی‌های بلند مدت میشود. مدل شبکه عصبی حافظه کوتاه-مدت ماندگار این مشکل را با استفاده از واحد حافظه حل کرده است که در ادامه معادلات (۳) روند محاسبه خروجی واحد مخفی شبکه عصبی حافظه کوتاه-مدت ماندگار $ht$ را با توجه به ورودی $xt$ نشان میدهد[12].
![۳. روند محاسبه خروجی واحد مخفی شبکه عصبی حافظه کوتاه-مدت ماندگار](https://boute.s3.amazonaws.com/288-fromul4.png)
در بالا $i$  ورودی ، $o$ خروجی و $f$ گیت فراموشی هستند. $Xt $ورودی واحد حافظه در لحظه $t$ است. $g$ حالت مخفی میانی است. $C$ نمایانگر حافظه داخلی واحد مخفی است. $σ$ نیز تابع سیگموید لجستیک میباشد. همچنین $W$،$U$ ماتریس‌های وزن‌دار و $b$ بردار سوگیری میباشد.
همانطور که میدانید در شبکه‌های عصبی مکرر خروجی واحد مخفی به صورت $ ht =tanh(Wxt +Uht-1)  $ .  محاسبه میگردد. که در مقایسه با محاسبه خروجی واحد مخفی شبکه عصبی حافظه کوتاه-مدت ماندگار، از پیچیدگی بسیار کمتری برخوردار است. در واقع این مکانیسم پیچیده موجود در شبکه عصبی حافظه کوتاه-مدت ماندگار است که به این شبکه امکان ذخیره سازی اطلاعات برای مدت زمان طولانی را میدهد. که این امر امکان یادگیری وابستگی‌های بلند مدت را برای این مدل فراهم میکند[12] [10]. 
![معماری شبکه عصبی حافظه کوتاه-مدت ماندگار دوسویه ](https://boute.s3.amazonaws.com/288-lstm.png)
در مدل شبکه حافظه کوتاه-مدت ماندگار که در بالا مشاهده کردیم، تنها مقداریر دنباله‌های گذشته در محاسبه خروجی لایه مخفی به کار گرفته میشوند. اما چون در این عملیات طبقه‌بندی (نظرکاوی) ما جملات را یکجا دریافت میکنیم، امکان استفاده از دنباله‌های آینده را نیز خواهیم داشت. که بسیار مفید خواهد بود. با توجه به این موضوع در این مقاله از مدل شبکه عصبی حافظه کوتاه-مدت ماندگار دوسویه استفاده شده است. معماری این مدل را در شکل (۴) مشاهده میکنید. در این معماری از دو واحد حافظه مجزا استفاده شده است که یکی وظیفه محاسبه خروجی با توجه به دنباله پیش را بر عهده دارد ($\overrightarrow{h}$) و دیگری وظیفه محاسبه خروجی با توجه به دنباله قبل را بر عهده دارد ($\overleftarrow{h}$). سپس در نهایت این خروجی‌ها با یکدیگر ترکیب شده و با  اعمال mean pooling بردار نمایش کلی جمله را بدست می‌آوریم. این نمایش برداری شامل اطلاعات سطح بالایی است که در آن خلاصه‌ای از اطلاعات متن موجود است. این نمایش برداری را میتوان به عنوان ویژگی، در عملیات طبقه‌بندی استفاده کرد[12] [10].
بعد از محاسبه این بردار نمایش با استفاده از یک لایه بیشینه هموار (۴) میتوان احتمال تعلق به هر یک از کلاس‌ها را مخشص کرد.
![۴](https://boute.s3.amazonaws.com/288-formul4.png)
یکی از راه‌کار‌های مورد استفاده برای جلوگیری از یادگیری افراطی[^over train]، اضافه کردن متد دورریزی[^dropout] به مدل است. این متد کاری شبیه به عمل منظم‌سازی[^regularization] را انجام میدهد[5]. این متد به صورت تصادفی با احتمال $p$ مقدار برخی از واحد‌های مخفی را برابر صفر قرار میدهد. به صورت کلی در مدل  شبکه عصبی حافظه کوتاه-مدت ماندگار توصیه میشود عمل دورریزی بر روی لایه‌های بازگشتی اعمال نشود. در این مقاله نیز عمل دورریزی بر روی خروجی هر یک از لایه‌های شبکه عصبی حافظه کوتاه-مدت ماندگار انجام گرفته است.
**ج : شبکه عصبی مکرر(CNN) **
در زیر معماری شبکه عصبی مکرر برای طبقه‌بندی متون نمایش داده شده است (۵).
![۵ . معماری شبکه عصبی مکرر برای طبقه‌بندی متون](https://boute.s3.amazonaws.com/288-shape.png)
در شکل بالا ورودی شبکه به صورت ماتریس است، که هر سطر آن برداری است که بیانگر یک قطعه‌ای از متن است. معمولا این قطعه از متن، نمایانگر یک کلمه است. پس در هر سطر از وردی یک بردار از  قطعه متن وجود خواهد داشت. فرض کنید که هر متن دارای حداکثر $N$ قطعه باشد. و هر یک از این قطعه‌ها به صورت بردار‌های d بعدی نمایش داده شده باشند، در نتیجه ورودی یک ماتریس $N \times D$ خواهد بود. با توجه به این موضوع میتوان ورودی را مانند یک عکس در نظر گرفت. و میتوان فیلتر‌های خطی با اندازه پنجره $h$ را بر روی این ماتریس اعمال کرد. که با توجه به اینکه هر سطر، برداری از یک قطعه است. طبیعی خواهد بود که عرض فیلتر‌ها برابر با اندازه بردار قطعه‌ها باشد[5][13]. برای اعمال عملیات convolution بر روی $h$ کلمه باید فیلتری به اندازه‌ی $h \times d$ را اعمال کرد. فرض میکنیم $[A[i:j$ برابر است با پنجره‌ای از قطعه‌ها است از قطعه iام تا قطعه jام موجود در ماتریس متن $A$  [5][13].. با توجه به موارد ذکر شده ویژگی $Ci$ با توجه به پنجره‌ی از قطعه‌ها با اندازه $h$ مانند فرمول (۶) محاسبه میشود.
![۶](https://boute.s3.amazonaws.com/288-formul_5.png)
در فرمول بالا i از ۱ تا $N-h+1 $تغییر میکند و $w$ برابر است با ماتریس وزن‌های فیلتر. $b$ بردار سوگیری میباشد. $f$ تابع فعال‌سازی است.
پس از اعمال فیلتر $w$ بر روی تمام پنجره کلمات ممکن در متن و محاسبه ویژگی‌های آن‌ها از طریق فرمول بالا مقدار ویژگی‌ها را در داخل  بردار(۷) قرار خواهیم داد. 
![۷](https://boute.s3.amazonaws.com/288-formul_7.png)
اندازه متن و اندازه پنجره فیلتر اعمال شده بر روی متن مشخص کننده اندازه نگاشت[^map] ویژگی‌ها است. با توجه به بوجود آمدن بردار‌های ویژگی با اندازه‌های مختلف، برای رفع این مشکل یک لایه ائتلاف‌گر [^pooling] در اخرین لایه قرار میدهیم .این عمل باعث ثابت شدن اندازه بردار‌های ویژگی استخراج شده میشود. در این معماری از هر یک از نگاشت‌ها بالاترین ویژگی با بالاترین مقدار انتخاب میشود.
در این معماری برخی افراد برای پیاده‌سازی عمل منظم‌سازی از عملیات دورریزی استفاده میکنند. این افراد عمل دورریزی را در لایه یکی مانده به اخر اعمال میکنند که در مرحله آموزش نسبتی از واحد‌های مخفی را برابر صفر قرار میدهند. اگر $z$ را لایه یکی مانده به آخر فرض کنیم، خروجی لایه که با $y$ مشخص شده است در مرحله انتشار رو به جلو از طریق فرمول (۸) محاسبه میگردد.
![۸](https://boute.s3.amazonaws.com/288-formul_8.png)
در فرمول(۸) $r$ یک بردار از متغیر‌های تصادفی با توزیع برنولی است. $w$ ماتریس‌ وزن‌ و $b$ بردار سوگیری لایه خروجی میباشد.[10][13]

 # مرحله‌ آموزش
 با توجه به این امر که برای نظرکاوی در زبان فارسی  دادگان بزرگ با ناظر وجود ندارد، این مقاله در ابتدا بردار‌های کلمات خود را به صورت بدون ناظر بر روی تمام پیکره خود آموزش داده است. برای این امر از مدل چندتایی پرشی استفاده شده است. پس از استخراج بردار‌های کلمات و ساخت مدل چندتایی پرشی از آن. این بردار‌ها را  به عنوان ورودی به مدل‌های شبکه عصبی مکرر و شبکه عصبی حافظه کوتاه-مدت ماندگار دوسویه میدهیم. سپس این مدل‌ها را با استفاده از داده‌های برچسب دار آموزش میدهیم. در این مقاله برای مرحله آموزش ۹۰٪ از داده‌های به صورت تصادفی برای آموزش انتخاب شده و مابقی داده‌ها برای عملیات آزمون استفاده میشود. برای هر دوی این مدل‌ها سعی شده که تابع اتلاف آنتروپی متقاطع(۹) را بین لایه‌ی softmax و برچسب‌های آن کمینه شود.
 ![۹](https://boute.s3.amazonaws.com/288-formul_ss.png)
در این مقاله ابعاد بردار ویژگی برابر ۱۵۰ فرض شده است. همچنین برای ساخت مدل چندتایی پرشی نیز اندازه پنجره را برابر با ۵ قرار میدهیم. در مرحله یادگیری با ناظر نسبت منظم‌سازی برابر با ۰.۱ است. همچنین در این مقاله برای به حداقل رساندن تابع اتلاف از الگوریتم بهینه‌سازی آدام[^adam optimization algorithm] با نرخ یادگیری ۰.۰۰۱ استفاده شده است. نرخ دورریزی نیز بر روی ۰.۵تنظیم شده است. لازم به ذکر است که دورریزی تنها در مرحله آموزش اجرا شده است. در مدل  شبکه عصبی مکرر از فیلتر‌هایی با ارتفاع ۳ ، ۴ و ۵ بهره گرفته شده.
در مدل شبکه عصبی حافظه کوتاه-مدت ماندگار دوسویه تعداد لایه‌های مخفی بر روی ۲۰۰ عدد تظیم شده است.

#معیارهای ارزیابی
دادگان معرفی شده در این مقاله غیر متعادل بوده و از این رو برای ارزیابی نتایج از معیار‌های دقت [^precision]، فراخوانی[^recall] و F-score استفاده شده است.
همچنین به دلیل ۱۰ برابر بودن داده‌ها با برچسب مثبت نسبت به برچسب‌های منفی این معیار‌ها برای داده‌ها با برچسب منفی محاسبه شده است. همچنین ماتریس درهمریختگی هر یک از مدل‌ها و ماتریس درهمریختگی کلی در بخش نتیجه ذکر شده است.

 # نتیجه آزمایش‌ها
 نتایج بدست‌ آمده با یکی از بهترین متد‌ها سنتی در زمینه نظرکاوی یعنی  NBSVM-bi مقایسه شده است. این متد بر روی داده‌گان بزرگ نظرات بررسی فیلم[9] دقتی معادل ۹۱.۲۲٪ دارا میباشد. 
 در جدول III نتایج هر یک از مدل‌ها به صورت جداگانه ذکر شده است. ماتریس‌های درهمریختگی نیز در جداول IV ، V و VI نمایش داده شده‌اند. در بین نتایج بدست آمده مدل  NBSVM-bi بیشترین میزان دقت را دارا میباشد، گرچه بیشترین میزان F-score در بین مدل‌های ذکر شده مربوط به مدل شبکه عصبی مکرر میباشد. همانطور که میدانید در محاسبه میزان F-score هم معیار دقت و هم معیار فراخوانی استفاده میشود. پس با توجه به مقادیر F-score میتوان نتیجه گرفت در بین مدل‌های یادگیری ژرف مورد آزمایش مدل شبکه عصبی مکرر بهترین عملکرد را به خود اختصاص داده است.
 لازم به ذکر است یکی از علل دقت نسبتا پایین طبقه‌بندی برچسب‌های منفی در این متون، غیر متعادل بودن دادگان است. اما همانطور که از نتایج میتوان متوجه شد، در برخورد با داده‌ها با برچسب منفی مدل‌های یادگیری ژرف موفقتر ظاهر شده‌اند. که یکی از دلایل اصلی آن میتواند استفاده از یادگیری بدون ناظر برای بدست آوردن بردار‌های نمایشگر کلمات باشد. 
 ![III اندازه دقت، فراخوانی و F-score بر روی نظرات در متون فارسی ](https://boute.s3.amazonaws.com/288-table1.png)
 ![IV جدول ماتریس‌های درهمریختگی برای مدل  NBSVM-bi ](https://boute.s3.amazonaws.com/288-tabel2.png)
 ![V جدول ماتریس‌های درهمریختگی برای مدل شبکه عصبی حافظه کوتاه-مدت ماندگار دوسویه  ](https://boute.s3.amazonaws.com/288-tabel3.png)
 ![VI جدول ماتریس‌های درهمریختگی برای مدل شبکه عصبی مکرر](https://boute.s3.amazonaws.com/288-tabel4.png)
 
 #نتیجه
 در این مقاله دو مدل معماری یادگیری ژرف برای طبقه‌بندی متون با توجه به قطبیت آن‌ها مورد آزمایش قرار گرفت.که با توجه به نتایج، F-score بدست آمده در مدل‌های یادگیری ژرف بیشتر از طبقه‌بند NBSVM-bi میباشد. همانطور که ذکر شد یکی از دلایل اصلی اصلی این تنیجه میتواند استفاده از یادگیری بدون ناظر برای بدست آوردن بردار‌های نمایشگر کلمات باشد. همچنین بدلیل استفاده از یادگیری بدون ناظر مشکل کوچک بودن دادگان اهمیت چندانی نخواهد داشت. و در نهایت در این مقاله دادگان جدیدی از نظرات کاربران درباره کالا‌های دیجیتال معرفی شده است.
 # پیشنهادات
 یکی از مشکلات اصلی روش‌های ذکر شده در نظر نگرفتن غیر متعادل بودن دادگان است. این مشکل میتواند به وسیله استفاده از متد‌هایی همچون SMOTE برطرف کرد یا بهبود داد[14]. در این روش داده‌هایی کلاس اقلیت را در مرحله آموزش به صورت مصنوعی افزایش میدهیم تا تعادل در دادگان بطور نسبی برقرار شود[14].
 همچنین دادگان معرفی شده دارای مقداری نویز میباشد که این نویز‌ها به واسطه در نظر گرفتن نمره کاربران به عنوان برچسب متون پیش آمده است. که میتوان با برسی دقیق‌تر و حل این مشکل، خوشبین به افزایش دقت بود.

#مراجع

[1] B. Pang and 1. Lee, "Opinion Mining and Sentiment Analysis,"Foundations and trends in information retrieval. vol. 2(1-2), pp. 1-135, January 2008.

[2]  B. Liu, "Sentiment Analysis and Opinion Mining," Synthesis lectures on human language technologies, vol. 5(1), pp. 1-167, May 2012.

[3]  Q. Le and T. Mikolov, "Distributed Representations of Sentences and	Documents," ICML, vol. 14, pp. 1188-1196, June 2014.

 [4]  A. Bagheri, M. Saraee, and F. De Jong, "Sentiment Classification in Persian: Introducing a Mutual Information-based Method for Feature	Selection." 21st Iranian Conference on Electrical Engineering (ICEE), pp. 1-6, May 2013

 [5]  Y. Kim, "Convolutional Neural Networks for Sentence	Classification," arXiv preprint arXiv: 1408.5882,2014.

[6]  O. Irsoy and C. Cardie, "Opinion Mining with Deep Recurrent Neural Networks," EMNLP, pp. 720-728,2014.

[7]  B. Pang, 1. Lee, and S. Vaithyanathan, "Thumbs up?: sentiment classification using machine learning techniques,"Proceedings of the ACL-02 conference on Empirical methods in natural language processing, vol. 10, pp. 79-86, July 2002.

[8]  R. Socher, 1. Pennington, E. H. Huang, A. Y. Ng, and C. D. Manning, "Semi-Supervised Recursive Autoencoders for Predicting Sentiment Distributions," Proceedings ofthe Conference on Empirical Methods in Natural Language Processing, pp. 151-161, July 2011,	Association for Computational Linguistics.

[9]  S. Wang and C. D. Manning, "Baselines and Bigrams : Simple, Good	Sentiment and Topic Classification," Proceedings ofthe 50th Annual Meeting of the Association for Computational Linguistics: Short 	Papers, vol. 2, pp. 90-94, July 2012, Association for Computational	Linguistics .

[10]  P. Wang, Y. Qian, F. K. Soong, 1. He, and H. Zhao, "A Unified Tagging Solution: Bidirectional LSTM Recurrent Neural Network with Word Embedding," arXiv preprint arXiv:1511.00215, 2015.

[11]  T. Mikolov, K. Chen, G. Corrado, and 1. Dean, "Distributed Representations of Words and Phrases and their Compositionality,"	Advances in neural information processing systems, pp. 3111-3119,	2013.

[12]  W. Zaremba, I. Sutskever, and O. Vinyals, "Recurrent neural network regularization," arXiv preprint arXiv: 1409.2329,2014.

[13]  Y. Zhang and B. C. Wallace, "A Sensitivity Analysis of (and	Practitioners' Guide to) Convolutional Neural Networks for Sentence Classification," arXiv preprint arXiv: 1510. 03820, 2015.

[14] N. V. Chawla, K. W. Bowyer, L. O. Hall and W. P. Kegelmeyer (2002) "SMOTE: Synthetic Minority Over-sampling Technique", Volume 16, pages 321-357