پردازش زبان طبیعیدست به کد

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

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

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

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

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

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

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

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

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

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

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

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

حال که پروژه به حساب کاربری شما منتقل شده است، کافی است که بر روی 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. سلام. برای ساخت اکانت مایکروسافت هم باید شماره تلفن رو وارد کنیم تا کد تایید برای ارسال بشه. شماره رو وارد کردم اما کد تایید ارسال نمیشه.

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

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

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

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

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

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

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

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

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

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

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

  5. سلام وقت شما بخیر در گام شماره ۰ با این ارور مواجهه میشم میشه لطفا راهنمایی کنید ؟ —————————————————————————
    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

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

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

  7. سلام وقت شما بخیر ،
    ممنون از پاسخگوییتون 
    توییت هایی که در قسمت twitter-step-1-Get-Tweet قرار بر استخراج هست به جای از با به در هشتگ استفاده میکنیم جوابگو نیست و سوال بعدی اینکه همین توییت های که استخراج میشود توسط {از با به در} کدان قسمت ذخیره میشه یعنی اگع بخواییم به صورت csv یا در EXEL از ان استفاده کنیم باید چه کار کنیم ، چون مثلا میخوام همه این ها بیارم توی GEPHI 
     

    1. تو این خط ،‌تعیین می کنیم که توی کدوم پوشه،‌ توئیت های ما ذخیره شوند :
      “` Tweet_File_Name = ‘tweets/’+datetime.now().strftime(“%Y-%m-%d”)+”.txt”“`
      پوشه tweets و داخل اون هم به ازای هر روز،‌یک فایل txt

  8. سلام وقت شما بخیر 
    ببخشید من میخوام از طریق api توییتر داده بگیرم . درخواست ساختن app منو توییتر ریجکت کرد الان چکار باید کنم؟

    1. قبلا هم دوستان به این نکته اشاره کردن که توئیتر سیاستهای امنیتی اش را سختگیرانه تر کرده است. فعلا از مشخصات کلیدهایی که بنده گذاشته ام و توی کدهای فوق، موجوده استفاده کنید.

  9. سلام. من میخوام داده های توییتر رو استخراج کنم تو یه بازه زمانی مثلا یک ماه. داده های که استخراج می کنم هم بر اساس یک سری کلید واژه هستند مثلا هشتگ ها. حدود ۲۰ هشتگ رو انتخاب کردم و میخوام طبق اونها داده استخراج کنم. باید چیکار کنم؟ طبق این روشی که گفتید میشه انجام داد؟ ممنون میشم اگه پاسخ بدید. تشکر

    1. با روش گفته شده فقط جریانهای توئیت را می توانید استخراج کنید (آن هم حدود ده درصد از آنها را ) و برای مشاهده توئیت های گذشته، با کتابخانه tweepy‌ تنها در حد یک یا دو هفته اخیر، قادر به بررسی توئيت ها خواهید بود. احتمالا با سلنیوم که رفتار کاربر را روی یک صفحه وب شبیه سازی می کند،‌بتوانید مشکلتون را حل کنید . این مثال را ببینید.

پاسخی بگذارید

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

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

دکمه بازگشت به بالا
بستن
بستن