تجزیه و تحلیل رسانه های اجتماعی با استفاده از R و Gephi


تجزیه و تحلیل شبکه های اجتماعی در سال 1934 زمانی که جیکوب لوی مورنو ایجاد کرد، متولد شد سوسیوگرام ها، انتزاعات تعاملات اجتماعی. به طور خاص، sociogram نموداری است که در آن هر گره نشان دهنده یک شخص است و یال ها نشان دهنده تعامل بین آنها است. مورنو از sociograms برای مطالعه رفتار گروه های کوچکی از مردم استفاده کرد.

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

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

دانلود داده های توییتر برای تجزیه و تحلیل شبکه های اجتماعی در R

اگر توییتر ندارید توسعه دهنده حساب کاربری ایجاد کنید و برای آن درخواست دهید دسترسی ضروری. سپس، برای دانلود داده‌های توییتر، یک برنامه در آن ایجاد کنید پورتال توسعه دهندگان توییتر. سپس در قسمت Projects & Apps اپلیکیشن خود را انتخاب کرده و به تب Keys & Tokens بروید. در آنجا باید اعتبار خود را ایجاد کنید. اینها برای دسترسی به توییتر API و داده ها را دانلود کنید.

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

  1. igraph، برای ایجاد نمودار تعامل.
  2. مرتب، برای تهیه داده ها.
  3. rtweet، برای برقراری ارتباط با Twitter Dev API.

می توانید این کتابخانه ها را با install.packages() عملکرد. برای اهداف ما، فرض می کنیم که شما R و RStudio را نصب کرده اید، و درک اولیه ای از آنها دارید.

در نمایش خود، بحث داغ آنلاین در مورد فوتبالیست مشهور آرژانتینی را تحلیل خواهیم کرد لیونل مسی در اولین هفته خود با باشگاه فوتبال پاری سن ژرمن (PSG). توجه به این نکته مهم است که با API رایگان توییتر می‌توانید توییت‌ها را تنها هفت روز قبل از تاریخ فعلی دانلود کنید. شما نمی‌توانید همان داده‌هایی را که ما ذکر می‌کنیم دانلود کنید، اما می‌توانید بحث‌های جاری را دانلود کنید.

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

این بلوک کد نحوه اجرای هر سه مرحله را توضیح می دهد:

## Load libraries
library(rtweet)
library(igraph)
library(tidyverse)

## Create Twitter token
token <- create_token(
  app = <YOUR_APP_NAME>,
  consumer_key = <YOUR_CONSUMER_KEY>,
  consumer_secret = <YOUR_CONSUMER_SECRET>,
  access_token =<YOUR_ACCESS_TOKEN>,
  access_secret = <YOUR_ACCESS_SECRET>)

## Download Tweets
tweets.df <- search_tweets("messi", n=250000,token=token,retryonratelimit = TRUE,until="2021-08-13")

## Save R context image
save.image("filename.RData")

توجه داشته باشید: تمام تگ های بین <> را با اطلاعاتی که در مرحله اعتبارنامه قبلی ایجاد کردید جایگزین کنید.

با این کد، ما از API توییتر برای همه توییت‌هایی (حداکثر 250000) که حاوی کلمه «messi» بودند و بین 8 آگوست 2021 و 13 اوت 2021 پست شده بودند، پرس و جو کردیم. ما محدودیت 250،000 توییت تعیین کردیم زیرا توییتر به مقدار کمی و به دلیل اینکه عدد به اندازه کافی بزرگ است که امکان تجزیه و تحلیل جالب را فراهم کند.

نرخ دانلود توییتر 45000 توییت در 15 دقیقه است، بنابراین دانلود 250000 توییت بیش از یک ساعت طول کشید.

در نهایت، ما تمام متغیرهای زمینه را در یک فایل RData ذخیره کردیم تا در صورت بستن RStudio یا خاموش کردن دستگاه، بتوانیم آن را بازیابی کنیم.

ایجاد نمودار تعامل

پس از پایان دانلود، توییت ها را در داخل آن خواهیم داشت tweets.df چارچوب داده. این ماتریس دیتافریم شامل یک ردیف در هر توییت و یک ستون در هر فیلد توییت است. ابتدا از آن برای ایجاد نمودار تعاملی استفاده می کنیم که در آن هر گره یک کاربر را نشان می دهد و یال ها نشان دهنده تعامل (ریتوییت یا ذکر) بین آنها است. با tidyverse و igraph، می توانیم این نمودار را به سرعت و تنها در یک عبارت ایجاد کنیم:

## Create graph
filter(tweets.df, retweet_count > 0) %>% 
  select(screen_name, mentions_screen_name) %>%
  unnest(mentions_screen_name) %>% 
  filter(!is.na(mentions_screen_name)) %>% 
  graph_from_data_frame() -> net

پس از اجرای این خط، یک نمودار در قسمت داریم net متغیری که آماده تحلیل است. به عنوان مثال، برای دیدن تعداد گره ها و لبه ها:

summary(net) # IGRAPH fd955b4 DN-- 138963 217362 --

داده های نمونه ما 138000 گره و 217000 لبه به دست می دهد. این یک نمودار بزرگ است. اگر بخواهیم می‌توانیم تجسم‌هایی را از طریق R ایجاد کنیم، اما طبق تجربه من، محاسبه آنها خیلی طول می‌کشد و از نظر بصری به اندازه تجسم‌های Gephi جذاب نیستند. بنابراین، بیایید با جفی ادامه دهیم.

تجسم نمودار با Gephi

ابتدا باید فایلی بسازیم که Gephi بتواند بخواند. این آسان است، زیرا ما می توانیم a را ایجاد کنیم .gml فایل با استفاده از write_graph عملکرد:

write_graph(simplify(net),  "messi_network.gml", format = "gml")

اکنون، Gephi را باز کنید، به “Open graph file” بروید، آن را جستجو کنید messi_network.gml را فایل کنید و باز کنید. پنجره ای پرتاب می کند که اطلاعات نمودار را خلاصه می کند. Accept را انتخاب کنید. این ظاهر خواهد شد:

تصویری که رابط کاربری Gephi را نشان می‌دهد که کاربران می‌توانند از طریق آن یک فایل گراف جدید را باز کنند.
باز کردن یک فایل گراف جدید در Gephi

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

طرح بندی شبکه

در یک نمودار با هزاران گره و لبه، قرار دادن گره ها در گرافیک حیاتی است. هدف از چیدمان ها این است. آنها گره ها را در موقعیت هایی قرار می دهند که با معیارهای تعریف شده تعیین شده اند.

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

برای اعمال این طرح روی کیس خود، به پنجره Layout (در گوشه سمت چپ پایین) رفته، ForceAltas 2 را انتخاب کرده و روی Run کلیک می کنیم. هنگامی که این کار را انجام می دهید، می بینید که گره ها شروع به حرکت کرده و “ابرهای” زیادی را تشکیل می دهند. پس از چند ثانیه، یک الگوی بسیار پایدار خواهید داشت و می توانید بر روی Stop کلیک کنید. لطفاً توجه داشته باشید که توقف خودکار ممکن است زمان زیادی طول بکشد.

از آنجایی که این یک الگوریتم تصادفی است، در هر اجرا خروجی های کمی متفاوت خواهید داشت. خروجی شما باید مشابه این باشد:

تصویری که خروجی چیدمان ForceAtlas2 را به صورت سیاه و سفید نشان می دهد که منجر به یک نمودار بدون رنگ یا سایه خاکستری می شود.
خروجی تک رنگ Gephi با استفاده از طرح ForceAtlas2

نمودار شروع به جذاب شدن کرده است. حالا بیایید کمی رنگ به آن اضافه کنیم.

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

برای رنگ آمیزی گره ها، ابتدا باید جوامع را شناسایی کنیم. در Gephi، روی دکمه Modularity در پنجره زیر زبانه Statistics کلیک کنید – این دکمه محبوب را اعمال می کند. لووان الگوریتم خوشه گراف، یکی از سریع ترین الگوریتم های موجود، به دلیل کارایی بالا، پیشرفته ترین الگوریتم محسوب می شود. در پنجره ظاهر شده روی Accept کلیک کنید. پنجره دیگری ظاهر می شود که حاوی یک است طرح پراکنده از جوامع توزیع شده بر اساس اندازه. اکنون در هر گره یک ویژگی جدید به نام Modularity Class داریم که شامل جامعه متعلق به کاربر است.

پس از انجام مراحل قبلی، اکنون می توانیم نمودار را به صورت خوشه ای رنگ آمیزی کنیم. برای انجام این کار، در تب Appearance، روی Apply کلیک کنید.

اسکرین شات نمایش
استفاده از Gephi’s Appearance برای افزودن رنگ

در اینجا می توانیم اندازه (بر حسب درصد کاربر) هر انجمن را ببینیم. در مورد ما، جوامع اصلی (بنفش و سبز) به ترتیب شامل 11.34٪ و 9.29٪ از کل جمعیت هستند.

با استفاده از طرح و پالت فعلی، نمودار به شکل زیر خواهد بود:

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

تشخیص اینفلوئنسر توییتر

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

برای برجسته کردن کاربران با تعاملات زیاد، اندازه گره ها را با استفاده از ویژگی Degree تغییر می دهیم:

یک اسکرین شات که نحوه تغییر ویژگی Degree در Gephi را در زیر همان برگه Appearance که در شکل های قبلی ذکر شد نشان می دهد.  حداقل اندازه روی 0.1 و حداکثر اندازه روی 10 تنظیم شده است.
تغییر ویژگی Degree در Gephi

این نمودار اکنون اینفلوئنسرها را به عنوان گره هایی که توسط دایره های بزرگتر نشان داده شده اند نشان می دهد:

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

اکنون که کاربرانی را که تعداد زیادی تعامل دارند شناسایی کرده ایم، می توانیم نام آنها را فاش کنیم. برای انجام این کار، روی فلش سیاه در نوار پایین صفحه کلیک کنید:

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

سپس بر روی Labels and Configuration کلیک کنید. در پنجره ای که ظاهر می شود، کادر نام را انتخاب کرده و روی Accept کلیک کنید. بعد، روی کادر Nodes کلیک کنید. خطوط سیاه کوچکی در نمودار ظاهر می شوند. این اسامی همه کاربران است. اما ما نمی خواهیم ببینیم همه آنها، فقط مهمترین آنها

برای تعریف آنها، اندازه آنها را با استفاده از همان پنجره ای که برای اندازه گره استفاده کردیم، تغییر دهید. حداقل اندازه را از 0.1 به 10 و حداکثر اندازه را از 10 به 300 افزایش دادیم.

با اضافه کردن نام ها، نمودار به طور قابل توجهی آموزنده تر می شود، زیرا نشان می دهد که چگونه جوامع مختلف با اینفلوئنسرها تعامل دارند:

تصویری از یک نمودار رنگی با دایره‌هایی که نشان‌دهنده کاربران مهم است و نام مهم‌ترین کاربران در بالای آن قرار گرفته است.  اندازه متن با اندازه (تأثیر) هر کاربر مطابقت دارد، که برخی از بزرگترین آنها ESPNFC به رنگ بنفش، TrollFootball در خاکستری و PSG_inside به رنگ صورتی است.
افزودن نام به ما امکان می دهد تا ببینیم که چگونه جوامع مختلف با اینفلوئنسرها تعامل دارند.

ما اکنون در مورد این بحث خاص توییتر چیزهای بیشتری می دانیم. به عنوان مثال، گنجاندن جامعه سبز از حساب های مانند mundodabola و نیمارجردپره مکان برزیلی خود را آشکار کند. جوامع نارنجی و خاکستری حاوی کاربران اسپانیایی زبان هستند sc_espn و ما شکست ناپذیر هستیم. به ویژه، به نظر می رسد که جوامع خاکستری و سیاهپوست اسپانیایی زبان هستند، زیرا کاربرانی مانند آنها دارند IbaiOut، لااسکالونتا، و پخش کننده محبوب IbaiLlanos. در نهایت، به نظر می رسد که جوامع بنفش و قرمز انگلیسی زبان هستند زیرا دارای حساب هایی مانند ESPNFC و برفوتبال.

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

باز کردن پتانسیل R و Gephi

اگر از Gephi برای نمودار استفاده نمی کردیم، می توانستیم از کتابخانه Ggplot R استفاده کنیم. با این حال، از دیدگاه من، آن کتابخانه از نظر نمودار شبکه بسیار محدودتر است. مانند Gephi پویا نیست، پیکربندی آن دشوارتر است و صفحه نمایش حاصله شفافیت کمتری دارد.

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

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

ادامه مطلب در وبلاگ مهندسی تاپتال:





منبع

Matthew Newman

Matthew Newman Matthew has over 15 years of experience in database management and software development, with a strong focus on full-stack web applications. He specializes in Django and Vue.js with expertise deploying to both server and serverless environments on AWS. He also works with relational databases and large datasets
[ Back To Top ]