تشخیص لحن نظرات

تغییرات پروژه از ابتدا تا تاریخ 1396/08/29
وقتی برای یک محصول هزاران نظر توسط استفاده کننده‌ها قرار داده می‌شود، با چالش تحلیل این نظرات مواجهیم و اینکه بلاخره مخاطب چقدر از محصول ما راضی است. این مشکل وقتی شدیدتر می‌شود که مخاطب بی‌حوصله، نظرش را در چندین حرف _توییت_ می‌کند و حالا ما باید بفهمیم که منظور مخاطب از این واژه‌های اختصاری و شکلک‌های خندان یا عصبانی چیست. بگذریم از مواقعی که برای خود انسان هم فهمیدن لحن نظر، چندان آسان نیست، مثل این یکی:

> فیلم خوبی بود و مناسب برای رده‌های سنی الف تا ه!


# مقدمه

نظر چیست؟
یک بیان **ذهنی** که **باور** یا تفکر یک **انسان** را درباره‌ی یک **چیز** بیان می‌کند.
**ذهنی** در برابر عینی قرار می‌گیرد. یک بیان عینی به سادگی می‌تواند اثبات شود که صحیح است یا غلط. به عنوان مثال جمله‌ی "این لپ تاپ باتری دارد" یک جمله‌ی عینی (Subjective) و جمله‌ی "این لپ تاپ باتری خوبی دارد" جمله‌ی ذهنی (Objective) است.
آن **انسان**، نظردارنده (Opinion Holder) و آن **چیز**، هدف نظر (Opinion Target) نامیده می‌شود.
همچنین **باور** و تفکر، به مسائلی همچون فرهنگ، سبک زندگی و دیگر مسائل شخصی بستگی دارد. (که به عنوان مثال در مورد نظردادن در مورد یک فیلم می‌تواند بسیار تأثیرگذار باشد.)

----------
بنابراین هر نظر از چند بخش اصلی تشکیل می‌شود:

+ نظردارنده (Opinion Holder): این نظر، نظر کیست؟
+ هدف نظر (Opinion Target): این نظر درباره‌ی چیست؟
+ محتوای نظر (Opinion Content):نظر دقیقاً چیست؟
+ زمینه‌ی نظر (Opinion Context):در چه شرایطی (زمانی، مکانی و ...) این نظر ابراز شده؟
+ احساسات نظر (Opinion Sentiment): این نظر چه اطلاعاتی درباره‌ی احساس نظردارنده به ما می‌دهد؟ (مثبت یا منفی)

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

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

----------
حال چرا ما باید نظرکاوی کنیم و به تشخیص لحن نظرات اهمیت دهیم؟
+ کمک به تصمیم‌گیری:

	.در انتخاب یک محصول یا سرویس
	.در مسائل رای دادن
	.در اتخاذ یک سیاست
+ کمک به درک رفتار و احساسات مردم:

	.برای ارائه خدمات بهتر (مثل بهینه کردن جستجو یا پیشنهاد محصولات)
	.برای تبلیغات هوشمندانه‌تر
+ نظرسنجی داوطلبانه:

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

----------
برای انجام آزمایشات و کلاسه‌بندی احساسات ما فرض را بر این می‌گذاریم که نظردارنده، هدف نظر، محتوای نظر و زمینه‌ی نظر را می‌دانیم و از روی این‌ها احساس نظر را تشخیص می‌دهیم. (مثلاً ما می‌دانیم یک کاربر از کشور انگلستان در سال ۲۰۱۷ یک نظر برای یک فیلم خاص داده است و حال احساس نظر را تشخیص می‌دهیم)
+ ورودی:
-یک text object
+ خروجی:
-آنالیز قطبی: مثلاً {مثبت، خنثی، منفی} یا {۱، ۲، ۳ ، ۴، ۵}
-آنالیز احساسی (پیشرفته‌تر): {خوشحال، ناراحت، ترسان، عصبانی، متعجب، منزجر}


# کارهای مرتبط

برای حل این مسأله، عموماً از ۵ بخش مختلف از مباحث پردازش زبان طبیعی (Natural Language Processing) استفاده شده است که عبارتند از:

1. فضاهای برداری معنایی (Semantic Vector Spaces):
	استفاده از شباهت‌های توزیعی تک کلمه ها برای تشخیص لحن کلی یک عبارت.
2. ترکیب‌بندی در فضاهای برداری (Compositionality in Vector Spaces):
	استفاده از اصطلاحات و ترکیبات چند کلمه‌ای (معمولاً ۲تایی). در برخی موارد می‌توان با تولید ماتریس و دسته‌بندی بر اساس آن این مدل را تقویت نمود.
3. فرم منطقی (Logical Form):
	تلاش برای نگاشتن (mapping) یک جمله به یک فرم منطقی برای تشخیص محتوای آن.
4. یادگیری عمیق (Deep Learning):
	استفاده از انواع مختلف شبکه‌های عصبی مثل Recursive Neural Networks و Matrix-Vector RNNs برای ساخت مدل؛ و تشخیص و کلاسه‌بندی داده‌ها
5. تشخیص لحن (Sentiment Analysis):
	بیشتر رویکردها در تشخیص لحن، بازنمایی مجموعه‌ای از کلمات می‌باشد یعنی تشخیص فاز هر کلمه (مثبت/خنثی/منفی) و تأثیر آن روی باقی کلمات با توجه به محل قرارگیری آن کلمه در جمله.


----------
در ادامه به مقاله‌ای از Pang, Lee and Vaithyanathan در سال ۲۰۰۲ اشاره می‌کنیم که در آن برای حل این مسأله از ۳ روش کلاسه‌بندی مختلف استفاده شده است. روش‌های Naive Bayes، Maximum Entropy و Support Vector Machines.
نتایجِ حاصل حاکی از آن بود که SVM در اکثر مواقع بالاترین  و NB پایین‌ترین درصد تشخیص صحیح لحن نظر را دارد. همچنین داده‌ها در این آزمایش به صورت‌های مختلفی مانند تک‌کلمه‌ای، دوکلمه‌ای و بخشی از سخن (Part of Speech) طبقه‌بندی شده و به ۳ روش کلاسه‌بندی داده شدند؛ که تغیر بین تک‌کلمه‌ای و دوکلمه‌ای تفاوت معناداری را در نتایج حاصل نمی‌کند درحالی که POS درصد خطای NB و SVM را تا حدودی کاهش داده اما بر Max Ent تأثیری نمی‌گذارد. [۱]

![شکل ۱. چند مثال از تشخیص لحن نظرات در روش ارائه شده توسط دانشگاه Stanford](https://boute.s3.amazonaws.com/248-Stanford-Screenshot.png)

در سال ۲۰۱۲ نیز مقاله‌ای از دانشگاه Stanford در این زمینه منتشر شد. آن‌ها برای حل این مسأله از دو ابزار استفاده کردند: Stanford Sentiment Treebank و Recursive Neural Tensor Network. درخت تولید شده برای هر جمله در این‌جا از نوع دودویی است و کلمات در برگ‌های این درخت قرار می‌گیرد. هر گره یکی از مقادیر {++، +، ۰، -، --} را به خود گرفته و تنها بر مقدار گره پدرش تأثیر می‌گذارد. لحن نهایی جمله همان مقداری است که ریشه در انتها می‌گیرد. (شکل ۱)
الگوریتم RNTN در تمامی آزمایش‌ها موفق‌تر از باقی الگوریتم‌ها عمل کرده است. یکی از خواص این روش تشخیص صحیح جملات نفی منفی (Negating Negative Sentences) است مثل جمله‌ی “این فیلم بد نبود” که به این معنا نیست که فیلم خوب بود بلکه یعنی فیلم کم بد بود! ‫‫‫‫‫‫[۲]




# آزمایش‌ها

# کارهای آینده

# مراجع

[1] Pang, Bo, Lillian Lee, and Shivakumar Vaithyanathan. "Thumbs up? Sentiment Classification using Machine Learning Techniques."
[2] Richard Socher, Alex Perelygin, Jean Y. Wu, Jason Chuang, Christopher D. Manning, Andrew Y. Ng and Christopher Potts. "Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank" Stanford University, Stanford, CA 94305, USA
[3] Liu, Bing, and Lei Zhang. "A survey of opinion mining and sentiment analysis." Mining Text Data. Springer US, 2012. 415-463.

**پیوندهای مفید**

+ [پیکره فارسی تحلیل احساس سِنتی‌پِرس](http://dadegan.ir/catalog/sentipers)

+ [استفاده از یادگیری عمیق برای تشخیص لحن نظرات](http://nlp.stanford.edu/sentiment)

+ [Sentiment Analysis - University of Michigan | Coursera](https://www.coursera.org/learn/natural-language-processing/lecture/1FKPB)

+ [Sentiment Analysis with Twitter Data - Rutgers the State University of New Jersey | Coursera](https://www.coursera.org/learn/social-media-data-analytics/lecture/s7DjM)

+ [Explanations of sentiment analysis with supervised learning - Yonsei University | Coursera](https://www.coursera.org/learn/text-mining-analytics/lecture/hbTb7)

+ [Opinion Mining and Sentiment Analysis: Motivation - University of Illinois at Urbana-Champaign | Coursera](https://www.coursera.org/learn/text-mining/lecture/o93Yl)