همیشه یکی از سوالاتی که دور سرم می چرخید این بود : آیا کامپیوتر ها می تونن احساسات موجود در یک متن رو بفهمن؟!
مثلا براش بنویسم : خدایا شکرت!
و تشخیص بده که این یک جمله مثبت هست.
یا براش بنویسم : اه این دیگه چه وضعشه اینم شد زندگی؟!!!
و در نهایت جمله رو منفی تشخیص بده.
در ظاهر پاسخ به این پرسش کمی عجیب به نظر می رسه! چرا که کامپیوتر ها موجوداتی بی احساس هستند و چطور میشه این موجود بی احساس، به یک متن نگاه کنه و بگه محتوای متن مثلا مثبت هست یا منفی!
باید بگم با کمی مطالعه و جستجو در اینترنت به نکات جالبی رسیدم. در واقع علم این اجازه و امکان رو می ده که کامپیوتر ها بتونن متن های مختلف رو بخونن و در نهایت تحلیل احساس انجام بدن.
شما امروز شاهد نوشته ای خواهید بود که هدف بالا یعنی تحلیل احساس توسط کامپیوتر ها رو به تصویر می کشه!
از همراهیتون صمیمانه سپاسگزارم ...
برای دستیابی به هدفی که در بالا شرح داده شد، از api یی که توسط سایت monkeylearn ارائه می شه استفاده کردم. خب این سایت خارجی هست و مشخصا از زبان فارسی نباید پشتیبانی کنه!
من برای مشکل عدم پشتیبانی از زبان فارسی از یک حقه کوچک استفاده کردم و در ادامه شرح دادم.
شما برای استفاده و دریافت api این سایت، نیاز به ثبت نام دارید.
از طرفی api یی که در سایت برای Sentiment Analysis یا تحلیل احساس ارائه شده به دو صورت رایگان (با تعداد ریکوئست های محدود و کم) و پولی (با تعداد ریکوئست های بالاتر) تعبیه شده.
از اونجایی که ما نمی تونیم هزینه دلاری پرداخت کنیم و از طرفی حتی اگه بتونیم هم، هزینه خیلی بالایی برای ما تمام میشه،
پس، از اکانت رایگان استفاده می کنیم.
بعد از ثبت نام و انتخاب ماژول Sentiment Analysis برای استفاده از api سایت، API Key و Model ID برای شما تخصیص داده می شه.
حالا ما نیاز به نوشتن برنامه ای داریم که اطلاعات و جملات رو به این api با متد post بفرسته و در نهایت نتیجه تحلیل احساس رو تحویل بگیرم.
من برای اینکار از زبان برنامه نویسی پایتون استفاده می کنم. همچنین برای تعامل راحت تر با api، از ماژولی که سازندگان وب سایت برای این کار نوشتند استفاده می کنم. برای نصب ماژول می تونید از اینجا مشاهده بفرمایید.
توجه: همونطور که در ابتدای نوشته اشاره کردم، این سایت از زبان فارسی پشتیبانی نمی کنه. من برای اینکه با متن های فارسی بتونم کار کنم، از ماژول googletrans استفاده می کنم. در واقع متن رو به صورت فارسی به برنامه می دم و در نهایت توسط این ماژول به برنامه گوگل ترنسلیت می فرستم و ترجمه انگلیسیش رو دریافت می کنم. در حقیقت با این حقه کوچک می تونم از امکانات برنامه برای فارسی زبانان استفاده کنم!
همونطور که در تصویر زیر مشاهده می کنید، من دو جمله مثبت و منفی به برنامه می دم.
با استفاده از کد های زیر دو جمله بالا رو از فارسی به انگلیسی تبدیل می کنیم.
در ادامه توسط کد های زیر، تحلیل رو انجام می دم. در قسمتی که به رنگ قرمز مشخص کردم باید API Key و در قسمت سبز رنگ Model ID قرار می گیره.
نتیجه خیلی جالب و شگفت انگیزه!
جمله اول رو
یعنی ( سلام من ابوالفضل وکیلی هستم و از دیدار شما بسیار خوشحالم و امیدوارم همیشه موفق باشید ) جمله ای مثبت
و جمله دوم ( کویید 19 جان خیلی از آدم ها گرفته است و من ناراحت هستم )
رو جمله ای منفی تشخیص می ده!
در این نوشته سعی کردم شمایی کلی از پروژه معروف تحلیل احساس رو بدون استفاده از کد های خیلی پیچیده برای شما به نمایش دربیارم.
پس از پایان این نوشته داشتم به این فکر می کردم که چی میشه اگر همچین چیزیو برای تحلیل نظر سنجی ها، شبکه های اجتماعی و ... پیاده سازی کنیم؟!
قطعا برای استفاده تجاری باید از الگوریتم هایی که مختص این کار تعبیه شده استفاده کنیم. باید از الگوریتم هایی مثل TF IDF یا Word2Vec و ... استفاده بشه.
امیدوارم نوشته امروز براتون جالب بوده باشه...
نویسنده : ابوالفضل وکیلی