در این مطلب به منظور انجام تحلیل احساسات (Sentiment Analysis) در شبکه اجتماعی «توئیتر»، با اتصال به Twitter Streaming API، توئیت‌ها (Tweets) را گردآوری (بر اساس یک کلیدواژه) و احساسات هر توئیت را محاسبه کرده و یک دشبورد «زمان واقعی» (real-time) با استفاده از «الاستیک‌سرچ» (Elasticsearch) و «کیبانا» (Kibana) به منظور بصری‌سازی نتایج ساخته می‌شود. ابزارهای مورد استفاده در این راستا به شرح زیر هستند.

  • Docker v1.3.0 (+)
  • boot2docker v1.3.0 (+)
  • Tweepy v2.3.0 (+)
  • TextBlob v0.9.0 (+)
  • Elasticsearch v1.3.5 (+)
  • Kibana v3.1.2 (+)

معرفی ابزارهای مورد استفاده

در ادامه، سه ابزار اصلی مورد استفاده در این راهنما به صورت اجمالی معرفی شده‌اند.

داکر

«داکر» (Docker)، یک برنامه کامپیوتری برای انجام مجازی‌سازی در سطح سیستم‌عامل است که به آن «containerization» نیز گفته می‌شود. داکر برای اجرای بسته‌های نرم‌افزاری که «ظرف» (کانتینر | container) نامیده می‌شوند مورد استفاده قرار می‌گیرد.

کیبانا

«کیبانا» (Kibana) یک پلاگین بصری‌سازی داده‌های متن‌باز برای Elasticsearch است. این پلاگین، قابلیت «بصری‌سازی» (visualization) را براساس محتوای اندیس‌گذاری شده در خوشه Elasticsearch فراهم می‌کند. کاربران می‌توانند «نوار» (bar)، نمودارهای نقطه‌ای، خطی، نمودار دایره‌ای و نقشه‌ها را براساس حجم بالایی از داده‌ها ایجاد کنند.

الاستیک سرچ

«الاستیک سرچ» (Elasticsearch) یک موتور جست‌و‌جو بر اساس کتابخانه بازیابی اطلاعات «متن‌باز» (Open Source) «آپاچی لوسین» (Apache Lucene) و دارای قابلیت «چند مستاجری» (Multitenancy) تمام متن با یک رابط وب HTTP و مستندات JSON است.

محیط داکِر

برای نصب «داکِر» (Docker) و boot2docker مطالعه مستندات رسمی آن (+) توصیه می‌شود. پس از نصب، با boot2docker در حال اجرا، باید دستور docker version را برای بررسی نصب داکر (Docker) در «شِل» (Shell) وارد کرد. همچنین، کاربران باید یک دایرکتوری برای نگهداری پروژه خود بسازند و Dockerfile را از مخزن گرفته و یک «ایمیج» (image) ایجاد کنند.

پس از ساخت، «کانتینر» (container | ظرف) را می‌توان با بهره‌گیری از دستور زیر اجرا کرد.

در نهایت، باید دو دستور بعدی را در ترمینال جدید ویندوز برای نگاشت آدرس port combo/IP استفاده شده در boot2docker VM در «لوکال‌هاست» (localhost) (متعلق به کاربر)، اجرا کرد.

اکنون، می‌توان به Elasticsearch در مسیر http://localhost:9200 و Kibana در مسیر http://localhost:8000 دسترسی داشت.

Twitter Streaming API

به منظور دسترسی داشتن به Twitter Streaming API، نیاز به نصب ثبت یک نرم‌افزار کاربردی در اینجا (+) است. پس از ساخت، کاربر باید به صفحه برنامه کاربردی خودش هدایت شود که در آنجا می‌تواند «کلید مصرف‌کننده» (consumer key) و «رمز مصرف‌کننده» (consumer secret) را دریافت کند و یک توکن دسترسی در «سربرگ» (tab) با نام «Keys and Access Tokens» بسازد. این موارد را باید به یک فایل جدید با نام config.py افزود.

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

مطابق مستندات Twitter Streaming (+)، راه‌اندازی یک اتصال به streaming API به معنای ایجاد یک درخواست HTTP با طول عمر بالا و تجزیه پاسخ به صورت افزایشی است. به لحاظ مفهومی، می‌توان به آن به عنوان دانلود کردن یک فایل بی‌نهایت بلند از طریق HTTP نگاه کرد. بنابراین، کاربر باید یک درخواست ایجاد و آن را با کلیدواژه‌های خاص، کاربر و یا ناحیه جغرافیایی فیلتر کند، و سپس اتصال را باز نگه دارد تا بتواند به اندازه ممکن توییت گردآوری کند. این کار ظاهرا پیچیده به نظر می‌رسد اما Tweepy انجام آن را آسان ساخته است.

Tweepy Listener

Tweepy از یک «listener» نه فقط برای گردآوری توئیت‌های استریم شده، بلکه فیلتر کردن آن‌ها نیز استفاده می‌کند.

کد

کاربر باید کد زیر را با نام sentiment.py ذخیره کند.

آنچه در کد بالا اتفاق می‌افتد به صورت موجز به شرح زیر است:

  • اتصال به Twitter Streaming API
  • فیلتر کردن داده‌ها با کلیدواژه «congress»
  • «رمزگشایی» (دیکد | Decode) کردن نتایج (توئیت‌ها)
  • محاسبه تحلیل احساسات با TextBlob
  • تعیین اینکه احساسات کلی مثبت، منفی و یا خنثی هستند.
  • در نهایت داده‌های توییت‌ها و احساسات مرتبط به آن ها به Elasticsearch DB افزوده می‌شود.

برای آگاهی از جزئیات بیشتر، مطالعه «توضیحات» (Comments) موجود در کد توصیه می‌شود.

مبانی محاسبه احساسات با TextBlob

برای محاسبه عواطف کلی، باید به درجه قطبش (قطبیت) نگاه شود:

  1. مثبت: از ۰/۰1 تا 1/۰
  2. خنثی: ۰
  3. منفی: از ۰/۰1- تا 1/۰-

برای آگاهی از جزئیات چگونگی محاسبه احساسات توسط TextBlob، مراجعه به صفحه رسمی آن توصیه می‌شود.

تحلیل‌های الاستیک‌سرچ

در طول یک بازه زمانی دو ساعتی، ۹۵۰۰ توئیت با کلیدواژه «congress» گردآوری شده است. پژوهشگران می‌توانند از کلیدواژه مورد نظر خود برای گردآوری توئیت‌ها استفاده کنند. پس از آنکه حجم قابل توجهی توئیت گردآوری شد، می‌توان به کار اسکریپت پایان داد. سپس، این امکان وجود دارد که اندکی تحلیل روی نتایج انجام داد. با استفاده از اندیس «sentiment» از اسکریپت «sentiment.py»، می‌توان از Elasticsearch search API برای گردآوری بینش اولیه استفاده کرد. برای مثال:

  • متن کامل جست‌و‌جو برای «obama» (+)
  • جست‌و‌جوی نام کاربری توییتر/نویسنده (+)
  • جست‌و‌جوی احساسات (+)
  • جست‌و‌جوی «obama» و احساسات (+)

کارهای بسیار زیادی وجود دارد که می‌توان صرفا با جست‌و‌جو و فیلتر کردن نتابج با استفاده از الاستیک‌سرچ (Elasticsearch) انجام داد. برای دریافت اطلاعات بیشتر پیرامون چگونگی تحلیل و مدل‌سازی داده‌ها مطالعه «Elasticsearch – The Definitive Guide» (+) توصیه می‌شود.

بصری‌سازی با کیبانا

«کیبانا» (Kibana)، امکان مشاهده و تعامل با داده‌ها را در زمان واقعی و در حقیقت در حالیکه گردآوری می‌شوند می‌دهد. به دلیل اینکه کیبانا با جاوااسکریپت نوشته شده، می‌توان به آن مستقیما از طرریق مرورگر دسترسی داشت. مبانی کار با کیبانا را می‌توان از راهنمای رسمی آغاز کار با آن (+) مطالعه کرد. نمودار دایره‌ای موجود در تصویر زیر با Kibana ساخته شده و نسبت هر احساس – شامل مثبت، منفی و خنثی – را نسبت به کل توئیت‌های گردآوری شده نشان می‌دهد.

تحلیل عواطف در توییتر

در ادامه نمودارهای دیگری از کیبانا ارائه شده است.

تحلیل عواطف با توییتر
توئیت‌های فیلتر شده با کلمه «obama»
تحلیل احساسات در توییتر
کاربران با بیشترین توییت در این حوزه

کاربری که در صدر لیست قرار دارد، دارای ۷۶ توییت است. این نشان می‌دهد که نیاز به بررسی عمیق‌تر در میان توئیت‌های انجام شده طی دو ساعت گذشته وجود دارد. به هر حال، کاربر مذکور یک توییت را ۷۶ بار تکرار کرده، بنابراین شاید بهتر باشد ۷۵ مورد از آن‌ها را فیلتر کرد زیرا نتایج کلی دچار «چولگی» (Skewness) شده‌اند. علاوه بر نمودارهای ارائه شده، بصری‌سازی احساسات با استفاده از «مکان» (location) نیز می‌تواند دربردارنده اطلاعات جالب توجهی باشد. در این راستا باید اطلاعات بیشتری گردآوری کرد. همچنین، می‌توان با ترسیم نمودار هیستوگرام داده‌ها نیز اطلاعات جالبی به دست آورد. برای دریافت کد کامل استفاده شده در این راهنما، مراجعه به مخزن گیت آن (+) توصیه می‌شود.

اگر مطلب بالا برای شما مفید بوده، آموزش‌های زیر نیز به شما پیشنهاد می‌شود:

^^

آیا این مطلب برای شما مفید بود؟

برچسب ها :

یک نظر ثبت شده در “تحلیل احساسات در توییتر با پایتون — راهنمای جامع و کاربردی

  1. با سلام مطلب بسیار با ارزشی بود فقط برای بدست آوردن چهارتا توکن هیچ راه دیگه ای وجود ندارد ؟
    چون تویتر از ژون 2۰1۸ سختگیری اعمال کرده و به هر کسی توکن نمی دهد. درخواست من برای بدست آوردن توکن ها رد شد.
    اگه راه دیگه ای رو سراغ دارید لطفا ذکر نمایید.

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *