خانه / علم داده / پردازش زبان طبیعی / دست به کد: جمع آوری و تحلیل داده‌های توئیتر فارسی در چند دقیقه

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

از حدود یکسال پیش که کدهای اولیه خواندن و پردازش توئیت‌های فارسی را در قالب نوشتاری در مهندسی داده منتشر کرده‌ام، هر از گاهی با سوالات خوانندگان عزیز سایت راجع به برخی مشکلات در اجرای این کدها مواجه شده‌ام. سیاستهای اخیر توئیتر که محدودیتهایی را برای ساخت برنامه‌های کاربردی جدید ایجاد کرده است هم انگیزه‌ مضاعفی شد که کل این پروژه را به کتابچه‌های پایتون آنلاین مایکروسافت منتقل کنم تا علاقه‌مندان به کار با داده‌های فارسی به سرعت و در کمتر از پنج دقیقه بتوانند به جمع آوری و تحلیل داده‌ها و اعمال الگوریتم‌های مختلف بر روی آنها به صورت آنلاین و بدون محدودیت‌های تحریم و فیلترینگ، بپردازند.

کتابچه‌های پایتون که البته امروزه با نام کتابچه‌های ژوپیتر شناخته می‌شوند، یکی از ابزارهای دم دستی تحلیلگران داده است که به کمک آن، می‌توانید کدهای خود را درون مرورگر وب نوشته و اجرا کنید، توضیحاتی راجع به آنها کنار کدها اضافه کرده و خروجی هر بخش را همراه با کدها ذخیره کنید. جهت آشنایی و نحوه استفاده از این کتابچه‌ها به این مقاله رجوع کنید.

سرویس‌های آنلاین زیادی برای اجرا و نوشتن آنلاین کدهای پایتون در قالب کتابچه‌های ژوپیتر فراهم شده است که از جمله معروف ترین آنها سرویس مایکروسافت و گوگل است که از این بین کار با محصولات مایکروسافت را ساده‌تر و بدون دردسرتر یافتم. بخصوص اینکه مدیریت هر پروژه در بخش کتابچه‌های مایکروسافت، به صورت مدون و پوشه بندی شده است که به ما امکان میدهد داده‌ها و خروجی‌های خود را به صورت دلخواه سازماندهی کنیم و آنها را با بقیه به اشتراک بگذاریم.

بنابراین اگر قصد جمع‌آوری و تحلیل داده‌های توئیتر فارسی را دارید، می‌توانید بدون نیاز به نصب نرم افزار خاصی و یا حتی آشنایی با زبان پایتون، مراحل زیر را برای جمع آوری و تجزیه و تحلیل اولیه داده‌های فارسی در توئیتر انجام دهید:

۱- مراجعه به آدرس پروژه تحلیل داده‌های توئیتر سایت مهندسی داده

کافی است با کلیک بر روی این لینک، به صفحه پروژه تحلیل داده‌های توئیتر سایت مهندسی داده مراجعه کنید.

۲- بر روی دکمه کلون (یا همان کپی) در بالای صفحه کلیک کنید

با اینکار، به مایکروسافت اعلام می‌کنید که قصد کپی گرفتن از این پروژه را بر روی فضای کاربری خود دارید تا بتوانید کدها را تغییر داده و خروجی‌ها را ذخیره کنید.

۳- با اکانت مایکروسافت خود لاگین کنید

بعد از زدن روی دکمه کلون، پنجره‌ای باز می‌شود و از شما میخواهد که یکی از شناسه‌های کاربری مرتبط با مایکروسافت مانند شناسه اسکایپ، ایمیل هات‌میل و یا شناسه سرویس ایمیل اوتلوک مایکروسافت را وارد کنید. اگر هم حساب کاربری در مایکروسافت ندارید، در همان صفحه می‌توانید به ساختن این حساب مبادرت کنید.

۴- اگر قصد بررسی داده‌های دریافتی توئیتر را دارید، بر روی گام صفر کلیک کنید

حال که پروژه به حساب کاربری شما منتقل شده است، کافی است که بر روی My Projects در بالای صفحه کلیک کنید تا وارد فضای کاربری شما شود، بر روی پروژه فوق کلیک کنید تا لیست فایلهای پروژه به شما نشان داده شود.

برای مشاهده ساختار داده‌های ارسالی از توئیتر کافیست بر روی فایل twitter-step-0-Get-Your-Hands-Dirty.ipynb کلیک کنید تا صفحه اجرایی کتابچه مرحله صفر کار باز شود.
بر روی هر سلول به ترتیب کلیک کنید و گزینه Run را بزنید یا با زدن آیکون Run All تمام کدها را ابتدا به صورت خودکار اجرا کنید. در آخرین سلول، کلماتی که توئیت‌ها را بر اساس آن از توئیتر درخواست می‌کنیم را می‌بینید که می‌توانید به دلخواه، آنرا تغییر دهید.
باید در انتهای کار مشاهده کنید که توئیت‌ها در حال دریافت هستند و اطلاعات کامل هر توئیت شامل اطلاعات کاربر، میزان ریتوییت، میزان لایک ، هشتگ‌ها و مانند آن به شما در سلول آخر این کتابچه نمایش داده شود.

اگر احیاناً با کلیک بر روی هر فایل، مجددا به همین صفحه برگشت، از حالت Private Browsing یا مرور ناشناس استفاده کنید و مجدداً آدرس پروژه را وارد کنید، وارد فضای کاربری خود شوید و دوباره امتحان کنید.

۵- شروع به دریافت توئیت‌ها کنید

در گام یک این فرآیند، شروع به دریافت توئیت‌ها و ذخیره آنها در فایلی با نام روز جاری در پوشه tweets می‌کنیم. روی فایل twitter-step-1-Get-Tweets.ipynb کلیک کرده، کتابچه را اجرا کنید. توئیت‌ها شروع به دریافت شدن و نمایش به شما و همزمان ذخیره در پوشه tweets‌ خواهند شد.! به همین راحتی …
اگر سایر اطلاعات یک توئیت را هم نیاز دارید، به مرحله صفر بازگشته، نام آیتم داده مورد نظر را یافته و به خروجی اضافه کنید. نمونه ای از این کار در فایل twitter-step-1-Get-Tweets-Hashtags انجام داده‌ام که در آن فایل هشتگ‌های هر توئیت هم در فایل خروجی اضافه شده است. (البته خروجی این فایل دوم در پوشه tweets-hashtags ریخته می‌شود)
برای اطمینان از درستی کار، اگر بخش مدیریت فایلهای پروژه برگردید، درون پوشه tweets باید فایل جدیدی ایجاد شده باشد که با کلیک بر روی آن، پیش‌نمایش محتوای آن به شما نشان داده خواهد شد.

۶- پردازش اولیه توئیت‌های دریافت شده

در گام دوم این فرآیند، شروع به حذف کاراکترهای خاص و ایموجی‌ها و مانند آن از توئیت‌ها و ذخیره آنها در پوشه output‌ پوشه step1 می‌کنیم.

۷ – تحلیل و پردازش توئیت‌های آماده شده

در گام آخر این پروژه، به کمک امکانات کتابخانه معروف pandas‌ در پایتون، که داده‌ها را به صورت جدولی در آورده و امکان کار بر روی هر ستون را به صورت جداگانه به ما میدهد، چند پردازش و تحلیل ساده بر روی داده‌ها انجام دادیم.

تحلیل‌هایی مانند اینکه میانگین طول کلمات هر توئیت چقدر است، تعداد کلمات هر توئیت چندتاست، کدام کلمات بیش از همه در توئیت‌ها تکرار شده اند و مانند آن را در این گام انجام داده‌ایم که کدهای ساده و قابل فهمی دارد و اگر هم با پانداز و پایتون، قبلا کار نکرده‌اید با نگاه به این کدها، خودتان روند کار و نحوه تغییردادن آنها را تا حدود زیادی فراخواهید گرفت.

۸- کتابچه‌ها و گام‌های خود را به این پروژه اضافه کنید

ابتدا گام پنجم را در روزهای متوالی اجرا کنید تا تعداد معتنابهی توییت جمع آوری نمایید. سپس با بازکردن هر کتابچه، گزینه make a copy را بزنید و گام‌ها و تغییرات خود را از روی کدهای موجود ایجاد کنید و یا در صفحه اصلی پروژه، از منوی ساخت کتابچه، یک کتابچه با پایتون ۳٫۶ ایجاد و شروع به ایجاد کدها و تولید خروجی‌های مخصوص خود نمایید

۹- دادن ستاره به ما در پروژه تحلیل داده‌ها

برای اینکه دلگرم‌تر از گذشته به کار ادامه دهیم، از دادن ستاره به این پروژه که لینک آن در گام اول آمده است، یادتان نرود….

حمایت از تولید محتوای تخصصی

نوشتن یک مقاله کاربردی گاهی چندین روز از ما زمان میگیرد. اگر مایل به تداوم این مقالات، افزایش کیفیت و سرعت تولید و نیز دلگرم کردن اعضای تیم کوچک ما هستید، ممنون میشویم با حمایتی هر چند اندک، فراغ بال بیشتری به ما برای پرداختن به مباحث کاربردی و عملی هدیه دهید.

۱۷ نظرات

  1. سلام. برای ساخت اکانت مایکروسافت هم باید شماره تلفن رو وارد کنیم تا کد تایید برای ارسال بشه. شماره رو وارد کردم اما کد تایید ارسال نمیشه.

    • سلام. من الان مجددا تست کردم. کافیه به جای شماره تلفن، ایمیلی از خودتون را وارد کنید تا کد فعالسازی به شما ایمیل زده بشه.
      اگر هم نشد، می تونید توی سایت اوتلوک یک اکانت برای خودتون ایجاد کنید و بعد اینجا با همون ایمیل و پسورد لاگین کنید.

      • خیلی ممنون که جواب دادید.
        من میخواهم ۲۰۰۰۰ توییت با حس شادی، ۲۰۰۰۰ توییت با حس غم، ۲۰۰۰۰ توییت با حس خشم و …. جمع آوری کنم میشه لطفا راهنمایی کنید که دقیقا چکار باید بکنم. تاریخ توییت ها هم مهم نیست.
        خیلی ممنون میشم که لطف کنید بازهم جواب بدید

        • سلام. متاسفانه در زمینه تحلیل احساسات فارسی کار نکرده ام. با توجه به حجم بیست هزارتایی مورد نیاز شما، بهتر است از بین دویست هزار توییتی که در آدرس این پروژه در آژور مایکروسافت در پوشه tweets ذخیره شده است به صورت دستی و با صرف وقت نه چندان زیاد (حدود چهار پنج ساعت)، داده ها را سه برچسب غم، شادی و خشم بزنید (مثلا در آنها را در اکسل ایمپورت کنید و سه ستون غم و شادی و خشم اضافه کنید و اگر توییتی یک یا چند تا از این احساسات را داشت آن ستون را برای آن توییت مقدار یک بدهید). با این کار بخش آموزش شبکه عصبی شما آماده است (به عنوان یک راه حل دم دستی) و می توانید با آموزش یک شبکه عصبی، بقیه توییت ها را به طور خودکار تحلیل احساس کنید.

          • یعنی این امکان وجود نداره که یکی از این برنامه ها رو به نحوی تغییر بدم که به صورت خودکار برام توییت ها با احساس خاص یا حداقل حاوی یک سری کلمات کلیدی مرتبط با یک احساس خاص برام جمع آوری کنه؟

          • کافیست در خط آخر برنامه به جای ایست واژه های «از ، به ، را» کلمات نشان دهنده یک احساس خاص یا حتی کد مربوط به یک ایموجی را بنویسید

  2. سلام ببخشید من کلی با این برنامه ور رفتم اما بلد نیستم باهاش کار کنم ، مثلا من میخوام یه هشتگ خاص رو استخراج کنم بعد فایلش رو ببرم به گفی و گرافش رو ترسیم کنم اما متاسفانه نمیتونم ، میشه یه راهنمایی جامع به بنده ارائه بدید . ممنون 

    • سلام. برای کار با این برنامه که فقط کافیست از سلول اول شروع کنید و دکمه اجرا یا Run‌ را بزنید و اگر قصد فیلتر کردن بر اساس هشتگ یا کلمه خاصی دارید در سلول آخر به جای کلمات از به را و … این کلمات را (هشتگ ها را با علامت #‌ قرار دهید) جایگزین کنید. برای خواندن توئیت های گذشته با هشتگ خاص فایل twitter-filter-by-special-hashtag را به مخزن کد اصلی اضافه کرده ام که آنرا درون پوشه پروژه خودتان کپی کنید و هشتگ سرچ شده در آن و تاریخ را تغییر دهید (خروجی در قالب یک فایل csv در پوشه tweets-hashtags ریخته میشود) اما تا جایی که بررسی کرده ام تنها توئیت های یکی دو ماه اخیر را با آن هشتگ مورد نظر بر می گرداند و خواندن تمام توئیت ها با هشتگ خاص شاید با این کتابخانه امکان پذیر نباشد.
      برای تغییر در برنامه و نوشتن کدهای اختصاصی خودتان نیاز به دانستن کمی پایتون خواهید داشت.موفق باشید .

  3. NameError: name ‘api’ is not definedسلام مجدد با این پیغام که رو به رو میشم چطور باید api رو به برنامه معرفی کنم ؟بازم ممنون از صبر و حوصله و راهنمایی شما

    • کدهای فعلی بدون خطا هستند چون خودم بارها همین کتابچه ها را اجرا کرده‌ام
      احتمال زیاد از سلول اول شروع به اجرا نکرده‌اید کافیست بر روی اولین سلول کد کلیک کنید و دکمه اجرا را بزنید و سلول به سلول به همین ترتیب حرکت کنید
      بعد از اجرای همه سلول های اولیه که متغیرها را مقداردهی می‌کنند می‌توانید هر سلول دلخواه را تغییر داده و همان سلول یا سلول های بعد از آنرا اجرا کنید
      اگر مشکل حل نشد بفرمایید که مجددا بررسی کنم

  4. با عرض سلام
    آیا این امکان وجود دارد که توییت های سالها و ماههای قبل رو جمع آوری کنیم؟

    • با این کتابخانه تویی‌پای که در این پروژه استفاده شده، امکان محدودی وجود داره . اما دو تا مثال جدید برای همین منظور به پروژه اضافه کرده ام که با نام twitter-filter-by می تونید اونها را پیدا و اجرا کنید

  5. سلام 
    ببخشید من با دولوپر کردن اکانت تویتترم مشکل دارم و با اموزشی که شما قرار دادید هماهنگ نیست خود سایت توییتر ، گویا تغییراتی اعمال شده ، لطفا راهنمایی بفرمایید 

    • بنده هم انتهای مقاله این موضوع را یادآور شده ام که اخیراً تغییراتی در سیاستهای امنیتی توئیتر داده شده . فعلاً و برای مقاصد آکادمیک از مشخصات بنده استفاده بفرمایید تا مراحل ساخت اکانت شما و تایید اون انجام بشه.
      همین پروژه را توی آژور کلون بفرمایید و اجرا کنید. بدون اشکال در حال حاضر داره کار می کنه.

  6. سلام وقت شما بخیر در گام شماره ۰ با این ارور مواجهه میشم میشه لطفا راهنمایی کنید ؟ —————————————————————————
    NameError Traceback (most recent call last)
    <ipython-input-1-21556e21fa55> in <module>
    —-> 1 twitter_stream = Stream(auth, TweetListener())
    ۲ twitter_stream.filter(languages=[‘fa’], track=[‘چهارشنبه’])

    NameError: name ‘Stream’ is not defined

    • سلام . حتما از سلول اول شروع کنید به اجرا که این کتابخانه ها ایمپورت شوند. یا از منوی run‌ گزینه اجرای همه سلول ها را انتخاب کنید که به طور خودکار از ابتدای کتابچه شروع به اجرا کند و این مشکل برطرف شود.( پروژه کلون شده شما را نگاه کردم و مشکلتون همین بود. کتابخانه Stream‌ توی سلول دوم اگه دقت کنید import‌ شده و حتما باید این سلول در ابتدای کار اجرا بشه و بقیه هم به همین ترتیب تا برسه به سلول آخر)

  7. سلام
    من چندصد مقاله فارسی دارم و میخوام موضوع کار، روش کار پژوهشی، جامعه آماری و نتیجه تایید شدن یا نشدن فرضیات را استخراج کنم.
    ممنون میشم راهنمایی بفرمایید.

دیدگاهتان را بنویسید

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

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.