دست به کد: جمع آوری و تحلیل دادههای توئیتر فارسی در چند دقیقه
از حدود یکسال پیش که کدهای اولیه خواندن و پردازش توئیتهای فارسی را در قالب نوشتاری در مهندسی داده منتشر کردهام، هر از گاهی با سوالات خوانندگان عزیز سایت راجع به برخی مشکلات در اجرای این کدها مواجه شدهام. سیاستهای اخیر توئیتر که محدودیتهایی را برای ساخت برنامههای کاربردی جدید ایجاد کرده است هم انگیزه مضاعفی شد که کل این پروژه را به کتابچههای پایتون آنلاین مایکروسافت منتقل کنم تا علاقهمندان به کار با دادههای فارسی به سرعت و در کمتر از پنج دقیقه بتوانند به جمع آوری و تحلیل دادهها و اعمال الگوریتمهای مختلف بر روی آنها به صورت آنلاین و بدون محدودیتهای تحریم و فیلترینگ، بپردازند.
کتابچههای پایتون که البته امروزه با نام کتابچههای ژوپیتر شناخته میشوند، یکی از ابزارهای دم دستی تحلیلگران داده است که به کمک آن، میتوانید کدهای خود را درون مرورگر وب نوشته و اجرا کنید، توضیحاتی راجع به آنها کنار کدها اضافه کرده و خروجی هر بخش را همراه با کدها ذخیره کنید. جهت آشنایی و نحوه استفاده از این کتابچهها به این مقاله رجوع کنید.
سرویسهای آنلاین زیادی برای اجرا و نوشتن آنلاین کدهای پایتون در قالب کتابچههای ژوپیتر فراهم شده است که از جمله معروف ترین آنها سرویس مایکروسافت و گوگل است که از این بین کار با محصولات مایکروسافت را سادهتر و بدون دردسرتر یافتم. بخصوص اینکه مدیریت هر پروژه در بخش کتابچههای مایکروسافت، به صورت مدون و پوشه بندی شده است که به ما امکان میدهد دادهها و خروجیهای خود را به صورت دلخواه سازماندهی کنیم و آنها را با بقیه به اشتراک بگذاریم.
بنابراین اگر قصد جمعآوری و تحلیل دادههای توئیتر فارسی را دارید، میتوانید بدون نیاز به نصب نرم افزار خاصی و یا حتی آشنایی با زبان پایتون، مراحل زیر را برای جمع آوری و تجزیه و تحلیل اولیه دادههای فارسی در توئیتر انجام دهید:
۱- مراجعه به آدرس پروژه تحلیل دادههای توئیتر سایت مهندسی داده
کافی است با کلیک بر روی این لینک، به صفحه پروژه تحلیل دادههای توئیتر سایت مهندسی داده مراجعه کنید.
۲- بر روی دکمه کلون (یا همان کپی) در بالای صفحه کلیک کنید
با اینکار، به مایکروسافت اعلام میکنید که قصد کپی گرفتن از این پروژه را بر روی فضای کاربری خود دارید تا بتوانید کدها را تغییر داده و خروجیها را ذخیره کنید.
۳- با اکانت مایکروسافت خود لاگین کنید
بعد از زدن روی دکمه کلون، پنجرهای باز میشود و از شما میخواهد که یکی از
شناسههای کاربری مرتبط با مایکروسافت مانند شناسه اسکایپ، ایمیل هاتمیل و
یا شناسه سرویس ایمیل اوتلوک مایکروسافت را وارد کنید. اگر هم حساب کاربری در مایکروسافت ندارید، در همان صفحه میتوانید به ساختن این حساب مبادرت کنید.
۴- اگر قصد بررسی دادههای دریافتی توئیتر را دارید، بر روی گام صفر کلیک کنید
حال که پروژه به حساب کاربری شما منتقل شده است، کافی است که بر روی 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 را بزنید و
گامها و تغییرات خود را از روی کدهای موجود ایجاد کنید و یا در صفحه اصلی
پروژه، از منوی ساخت کتابچه، یک کتابچه با پایتون ۳٫۶ ایجاد و شروع به
ایجاد کدها و تولید خروجیهای مخصوص خود نمایید
۹- دادن ستاره به ما در پروژه تحلیل دادهها
برای اینکه دلگرمتر از گذشته به کار ادامه دهیم، از دادن ستاره به این پروژه که لینک آن در گام اول آمده است، یادتان نرود….
پ.ن : میتوانید به کدهای نوشته شده در این آدرس گیتهاب دسترسی داشته باشید.
سلام. برای ساخت اکانت مایکروسافت هم باید شماره تلفن رو وارد کنیم تا کد تایید برای ارسال بشه. شماره رو وارد کردم اما کد تایید ارسال نمیشه.
سلام. من الان مجددا تست کردم. کافیه به جای شماره تلفن، ایمیلی از خودتون را وارد کنید تا کد فعالسازی به شما ایمیل زده بشه.
اگر هم نشد، می تونید توی سایت اوتلوک یک اکانت برای خودتون ایجاد کنید و بعد اینجا با همون ایمیل و پسورد لاگین کنید.
خیلی ممنون که جواب دادید.
من میخواهم ۲۰۰۰۰ توییت با حس شادی، ۲۰۰۰۰ توییت با حس غم، ۲۰۰۰۰ توییت با حس خشم و …. جمع آوری کنم میشه لطفا راهنمایی کنید که دقیقا چکار باید بکنم. تاریخ توییت ها هم مهم نیست.
خیلی ممنون میشم که لطف کنید بازهم جواب بدید
سلام. متاسفانه در زمینه تحلیل احساسات فارسی کار نکرده ام. با توجه به حجم بیست هزارتایی مورد نیاز شما، بهتر است از بین دویست هزار توییتی که در آدرس این پروژه در آژور مایکروسافت در پوشه tweets ذخیره شده است به صورت دستی و با صرف وقت نه چندان زیاد (حدود چهار پنج ساعت)، داده ها را سه برچسب غم، شادی و خشم بزنید (مثلا در آنها را در اکسل ایمپورت کنید و سه ستون غم و شادی و خشم اضافه کنید و اگر توییتی یک یا چند تا از این احساسات را داشت آن ستون را برای آن توییت مقدار یک بدهید). با این کار بخش آموزش شبکه عصبی شما آماده است (به عنوان یک راه حل دم دستی) و می توانید با آموزش یک شبکه عصبی، بقیه توییت ها را به طور خودکار تحلیل احساس کنید.
یعنی این امکان وجود نداره که یکی از این برنامه ها رو به نحوی تغییر بدم که به صورت خودکار برام توییت ها با احساس خاص یا حداقل حاوی یک سری کلمات کلیدی مرتبط با یک احساس خاص برام جمع آوری کنه؟
کافیست در خط آخر برنامه به جای ایست واژه های «از ، به ، را» کلمات نشان دهنده یک احساس خاص یا حتی کد مربوط به یک ایموجی را بنویسید
سلام ببخشید من کلی با این برنامه ور رفتم اما بلد نیستم باهاش کار کنم ، مثلا من میخوام یه هشتگ خاص رو استخراج کنم بعد فایلش رو ببرم به گفی و گرافش رو ترسیم کنم اما متاسفانه نمیتونم ، میشه یه راهنمایی جامع به بنده ارائه بدید . ممنون
سلام. برای کار با این برنامه که فقط کافیست از سلول اول شروع کنید و دکمه اجرا یا Run را بزنید و اگر قصد فیلتر کردن بر اساس هشتگ یا کلمه خاصی دارید در سلول آخر به جای کلمات از به را و … این کلمات را (هشتگ ها را با علامت # قرار دهید) جایگزین کنید. برای خواندن توئیت های گذشته با هشتگ خاص فایل twitter-filter-by-special-hashtag را به مخزن کد اصلی اضافه کرده ام که آنرا درون پوشه پروژه خودتان کپی کنید و هشتگ سرچ شده در آن و تاریخ را تغییر دهید (خروجی در قالب یک فایل csv در پوشه tweets-hashtags ریخته میشود) اما تا جایی که بررسی کرده ام تنها توئیت های یکی دو ماه اخیر را با آن هشتگ مورد نظر بر می گرداند و خواندن تمام توئیت ها با هشتگ خاص شاید با این کتابخانه امکان پذیر نباشد.
برای تغییر در برنامه و نوشتن کدهای اختصاصی خودتان نیاز به دانستن کمی پایتون خواهید داشت.موفق باشید .
NameError: name ‘api’ is not definedسلام مجدد با این پیغام که رو به رو میشم چطور باید api رو به برنامه معرفی کنم ؟بازم ممنون از صبر و حوصله و راهنمایی شما
کدهای فعلی بدون خطا هستند چون خودم بارها همین کتابچه ها را اجرا کردهام
احتمال زیاد از سلول اول شروع به اجرا نکردهاید کافیست بر روی اولین سلول کد کلیک کنید و دکمه اجرا را بزنید و سلول به سلول به همین ترتیب حرکت کنید
بعد از اجرای همه سلول های اولیه که متغیرها را مقداردهی میکنند میتوانید هر سلول دلخواه را تغییر داده و همان سلول یا سلول های بعد از آنرا اجرا کنید
اگر مشکل حل نشد بفرمایید که مجددا بررسی کنم
با عرض سلام
آیا این امکان وجود دارد که توییت های سالها و ماههای قبل رو جمع آوری کنیم؟
با این کتابخانه توییپای که در این پروژه استفاده شده، امکان محدودی وجود داره . اما دو تا مثال جدید برای همین منظور به پروژه اضافه کرده ام که با نام twitter-filter-by می تونید اونها را پیدا و اجرا کنید
سلام
ببخشید من با دولوپر کردن اکانت تویتترم مشکل دارم و با اموزشی که شما قرار دادید هماهنگ نیست خود سایت توییتر ، گویا تغییراتی اعمال شده ، لطفا راهنمایی بفرمایید
بنده هم انتهای مقاله این موضوع را یادآور شده ام که اخیراً تغییراتی در سیاستهای امنیتی توئیتر داده شده . فعلاً و برای مقاصد آکادمیک از مشخصات بنده استفاده بفرمایید تا مراحل ساخت اکانت شما و تایید اون انجام بشه.
همین پروژه را توی آژور کلون بفرمایید و اجرا کنید. بدون اشکال در حال حاضر داره کار می کنه.
سلام وقت شما بخیر در گام شماره ۰ با این ارور مواجهه میشم میشه لطفا راهنمایی کنید ؟ —————————————————————————
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 شده و حتما باید این سلول در ابتدای کار اجرا بشه و بقیه هم به همین ترتیب تا برسه به سلول آخر)
سلام
من چندصد مقاله فارسی دارم و میخوام موضوع کار، روش کار پژوهشی، جامعه آماری و نتیجه تایید شدن یا نشدن فرضیات را استخراج کنم.
ممنون میشم راهنمایی بفرمایید.
کارتون عالی هست، بسیار متشکر
یه شروع خوب بود واسم
سلام وقت شما بخیر ،
ممنون از پاسخگوییتون
توییت هایی که در قسمت twitter-step-1-Get-Tweet قرار بر استخراج هست به جای از با به در هشتگ استفاده میکنیم جوابگو نیست و سوال بعدی اینکه همین توییت های که استخراج میشود توسط {از با به در} کدان قسمت ذخیره میشه یعنی اگع بخواییم به صورت csv یا در EXEL از ان استفاده کنیم باید چه کار کنیم ، چون مثلا میخوام همه این ها بیارم توی GEPHI
تو این خط ،تعیین می کنیم که توی کدوم پوشه، توئیت های ما ذخیره شوند :
“` Tweet_File_Name = ‘tweets/’+datetime.now().strftime(“%Y-%m-%d”)+”.txt”“`
پوشه tweets و داخل اون هم به ازای هر روز،یک فایل txt
سلام وقت شما بخیر
ببخشید من میخوام از طریق api توییتر داده بگیرم . درخواست ساختن app منو توییتر ریجکت کرد الان چکار باید کنم؟
قبلا هم دوستان به این نکته اشاره کردن که توئیتر سیاستهای امنیتی اش را سختگیرانه تر کرده است. فعلا از مشخصات کلیدهایی که بنده گذاشته ام و توی کدهای فوق، موجوده استفاده کنید.
تشکر.ببخشید من از مشخصات کلید شما در کد خودم استفاده کردم اما به من ارور داد .
من الان مجددا پروژه را روی آژور طبق راهنمای مقاله، اجرا کردم و شروع کرد به گرفتن توئیت ها.
سلام. من میخوام داده های توییتر رو استخراج کنم تو یه بازه زمانی مثلا یک ماه. داده های که استخراج می کنم هم بر اساس یک سری کلید واژه هستند مثلا هشتگ ها. حدود ۲۰ هشتگ رو انتخاب کردم و میخوام طبق اونها داده استخراج کنم. باید چیکار کنم؟ طبق این روشی که گفتید میشه انجام داد؟ ممنون میشم اگه پاسخ بدید. تشکر
با روش گفته شده فقط جریانهای توئیت را می توانید استخراج کنید (آن هم حدود ده درصد از آنها را ) و برای مشاهده توئیت های گذشته، با کتابخانه tweepy تنها در حد یک یا دو هفته اخیر، قادر به بررسی توئيت ها خواهید بود. احتمالا با سلنیوم که رفتار کاربر را روی یک صفحه وب شبیه سازی می کند،بتوانید مشکلتون را حل کنید . این مثال را ببینید.
سلام. من قصد دارم توئیت های دوسال گذشته سایت(شبکه اجتماعی) سهامیاب را دانلود کنم، این توئیت ها امکان فیلتر بر اساس تاریخ را ندارند، آیا راهکاری برای دانلود کامل این اطلاعات وجود داره؟
با توجه به اینکه بنده محدودیت زمانی دارم، ممنون میشم سریعتر پاسخ بنده را بدید( در صورت امکان پاسخ را ایمیل کنید.)
اگر قصد بازیابی توئیتهای یک یوزر خاص را دارید، می توانید از تابع تایم لاین کتابخانه tweepy استفاده کنید. کافی است از کد زیر برای بازیابی ماکزیمم توئیتهایی که توئیتر به شما بر می گرداند استفاده کنید (اطلاعات اتصال به توئیتر در کدهای مقاله اصلی آمده است و می توانید از آنها استفاده کنید):
import tweepy
# Consumer keys and access tokens, used for OAuth
consumer_key = ''
consumer_secret = ''
access_token = ''
access_token_secret = ''
# OAuth process, using the keys and tokens
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
# Creation of the actual interface, using authentication
api = tweepy.API(auth)
for pages in tweepy.Cursor(api.user_timeline, id='id', count=200).pages():
print(pages)
سلام ممنونم از این امکان عالی که فراهم کردید. برای استخراج توییت به زبان انگلیسی چه تغییرات باید در کد اعمال کنم؟
ممنونم. تنها در قسمت انتهای کد که بر اساس کلمات فارسی جستجو می کند شما بر اساس کلمات پرتکرار انگلیسی یا موضوعی که به دنبال آن هستید سرچ کنید.
متاسفانه در همون ابتدا خطای ۴۲۰ میدهد که به معنی rate limiting است. بعد از اتپ کردن برنامه و گذشت ۱۲ ساعت هنوز با اولین اجرا با همان خطا مواجه میشوم.بنظرتون مشکل از کجاست و چه باید کرد؟
نمیدونم محدودیت بر اساس پروژه هست یا اکانت کاربر؟گیر پایان نامه هستم و برام حکم مرگ و زندگی داره؟
سلام
ممنونم بابت اموزشهاتون
خروجی که دریافت کردم ۴۰۱ هست که ورود غیر مجاز هست. باید چه کاری انجام بدم
با تشکر
متاسفانه بابت استفاده زیاد و نامناسب از اکانت بنده ، مجبور شدم کلیدهای رمز ارتباطی با توئیتر را تغییر دهم.
با سلام و تشکر از بابت اطلاعاتی که در اختیار همه قرار می دهید
میشه در مورد دسته بندی اکانت اسپم و غیر اسپم چطوری از دیتاست شما استفاده کنم به شدت دنبال دیتاستی هستم که هم متن های توییت در اون باشه و هم تعداد ری توییت ها ، تعداد دوستان، تعداد فالورهاو ….
ممنون میشم با توجه به تجربه ای که دارید راهنمایی بفرمایید.
درود. دیتاستی که آدرس را از گیتهاب در مقاله گذاشته ام، حاوی دادههای ماههای گذشته توئیتر فارسی است (البته درصد کمی از آنها اما تعداد کل توئیت ها به بالای چند میلیون عدد میرسد) که دقیقا این خصوصیاتی که برشمرده اید را داراست اما اینکه چگونه آنها را به اسپم و غیر اسپم تقسیم کنید احتمالا نیاز به دسته بندی دستی و یا روش های هیورستیک خواهید داشت که اگر پایان نامه یا تحقیق تان در این مورد است احتمالا روشهایی برای این منظور به ذهنتان رسیده است.
با سلام و تشکر از مطالب ارزنده تان
بنده میخواهم موضوعات جالب را از هشتگ های موجود توئیتر استخراج کنم و خوشه بندی انجام دهم
به چه صورت این موضوع امکان پذیره؟
اگر با پایتون آشنایی کافی دارید، این مقاله می تواند به شما در این موضوع کمک کند. هر چند تعریف موضوعات جالب را باید مشخص کنید که از لحاظ عملیاتی به چه موضوعی، موضوع جالب اطلاق می شود (تعداد تکرار در روز یا میزان لایک یا … )
سلام؛ مقاله جالبی بود. من چندماه پیش درخواست دادم به توئیتر و ریجکت شدم؛ چه اهدافی رو باید عنوان کنیم تا بهمون اجازه استفاده از API رو بده؟ امکانش هست کمک کنید که یک درخواست قابل قبول به چه شکل هست؟ من بیشتر به منظور یادگیری و انجام یکسری کارهای روتین میخواستم از API استفاده کنم.
سیاستهای توئیتر روز به روز سختگیرانه تر شده است و احتمالاً اگر با ایمیل دانشگاهی بتوانید درخواست بدهید و اهداف آموزشی (متنکاوی، داده کاوی، سنجش احساسات ) را دلیل اصلی درخواست خود قرار دهید، با شانس بیشتری روبرو خواهید بود.
سلام درحال حاضر امکان دسترسی به این پروژه وجود داره؟
من به آدرسی که اعلام شده رفتم میزنه The Azure Notebooks preview has ended.
راهی دیگه برای دسترسی به این پروژه وجود داره؟ ممنون
بخش نوتبوکهای آژور در حال حاضر غیرفعال شده است. آدرس پروژه در گیتهاب در انتهای مقاله آمده است و میتوانید از آن استفاده کنید .