جمع وتحليل البيانات من تويتر

جمع مجموعة من البيانات من شبكة تويتر، وذلك باستخدام أداة  NodeXL، ومن ثم تحليلها ورسمها بواسطة برنامج Gephi.

تناقش هذه المقالة مثالاً عملياً موضحاً بالصور لسحب مجموعة من البيانات من شبكة تويتر، وذلك باستخدام أداة  NodeXL، ومن ثم تحليلها ورسمها بواسطة برنامج Gephi. حيث أنّ أداة NodeXL  هي عبارة عن قالب Excel متاح مجاناً يجعل من جمع بيانات تويتر أمراً  في غاية السهولة، ويتطلب أن يكون لديك مجرد حساب على تويتر للقيام بسحب البيانات بواسطته، أما برنامج Gephi ، فهو برنامج لعرض البيانات بشكل رسومي، أو ما يسمى بالغراف، حيث يرسمها على شكل عقد وخطوط واصلة بينها، ويمكن العودة للمقالات السابقة للتعرف على البرنامجين أكثر.

سنشرح في  هذه المقالة تحليل بيانات من تويتر  من خلال خمسة  خطوات رئيسية:

الخطوة 0: وجود حساب تويتر     

إن لم يكن لديك حساب على تويتر، فأول شئ عليك القيام به هو الذهاب إلى موقع توبتر، وإنشاء حساب جديد، بالإضافة إلى أن امتلاكك لحساب جديد يمكنك من الحصول على البيانات بشكلٍ أسرع، فإنه من الجيد أيضاً أن تمر بتجربة استخدام تويتر كبداية قبل الخوض في جمع وعرض البيانات، بمجرد أن تنشئ الحساب ستود متابعة بعض الأشخاص، ولا تنس أن تنشر بعض التغريدات إن كنتَ حقاً مستخدماً جاداً.

الخطوة 1: الحصول على NodeXL

سوف نستخدم  NodeXLلجمع البيانات من تويتر. بالإضافة لتحميل البيانات فإنه بإمكانك أيضاً استخدام NodeXL لعرض وتحليل بيانات الشبكة، لكنني من الأفضل تجربة تحميل البيانات ، ومن ثم ستخدام برنامج آخر للقيام بمهمة عرض وتحليل البيانات مثل Gephi . تجدر الإشارة أن   NodeXL هو قالب Excel، لكن لسوء الحظ أنه يعمل فقط بالـExcel ، وبالتالي عليك أن تكون قد نصّبت برنامج إكسيل مسبقاً على نظام التشغيل windows.  يمكنك تحميل القالب من خلال هذا الرابط ، وبمجرد أن تقوم بتحميل بيانات التشغيل وتثبيتها على جهازك بإمكانك فتح البرنامج من خلال اختيار NodeXL template في مجلد NodeXL  من قائمة  البرامج All programs.، أخيراُ  بمجرد أن يفتح البرنامج قم باختيار شريط  NodeXL، كما توضح الصورة التالية.

الخطوة 2: جمع  البيانات من تويتر

الآن نريد الحصول على بعض البيانات من تويتر. يمكن أم تكون البيانات مثلاً أي شيء متوافر في تويتر، يمكن مثلاً جمع بيانات الأشخاص الذين يتابعون شخصاً، شركةً، أو منتجاً ما، وبإمكانك أن تجرب ذلك على حسابك الشخصي( سيكون ذلك مفيداً فقط إذا كان لك وجوداً قوياً على تويتر).

للبدء في جمع البيانات ، انقر على import  واختر من شبكة مستخدمي تويتر، ستحتاج أن تعطي NodeXL  إمكانية الوصول إلى الحساب الخاص بك على تويتر، وذلك بالضغط على الخيار بالأسفل، ومن  ثم اتباع التعليمات التي تظهر على الشاشة. بمجرد الحصول على إذن الوصول لحسابك، عليك أن تجد شركة أو منتجاً يهمك على تويتر( وبإمكانك فعل ذلك عبر تويتر من خلال المتصفح)، أدخل اسم ذلك المستخدم في المربع الحواري :

“Get the Twitter network of the user with this username”      

على سبيل المثال إذا كنت تريد الحصول على بيانات تويتر الخاصة بحساب علي تويتر ” @pjlamberson”   ، فعليك إدخال pjlamberson(لا تحتاج لكتابة @)،بالنسبة للإختيارات المتبقية في النافذة المنبثقة، قم باختيار الخيارات التالية:

  • من قائمة Add a Vertex for each: قم باختيار Both.
  • من قائمة Add an edge for each: قم باختيار followed/following relationship
  • من قائمة Levels to include: اختر 1.5
  • تحديد لعدد XXX من الأشخاص : وهذا هو متغير رئيسي عليك ضبطه ويعتمد بشكل رئيسي على مدى صبرك (انظر التحذير: “تحديد معدلات تويتر” بالأسفل) إن كانت تلك هي المرة الأولى، فأنا أقترح أن تحدده بـ 200 شخص، فمع التحديدات الجديدة لمعدلات تويتر: فحتى 200 شخص سوف يستغرقون عدة ساعات لجمع بياناتهم .
  • اضغط على OK وانتظر حتى يتم تحميل البيانات.

قد يستغرق ذلك فترة من الوقت. تأكد من إعداد جهاز الكمبيوتر بحيث لا ينتقل لوضع Sleep أثناء عملية جمع البيانات.

ملاحظة وتحذير: حدود سحب البيانات  في تويترTwitter rate limiting

عليك الإتتباه للحدود التي يفرضها تويتر في عملية سحب البيانات، يقوم تويتر بتحديد عدد المرات لكل 15 دقيقة، والتي يمكنك خلالها الاستعلام عن API، قد تحتاج في وقت ما أن تطلب المزيد من البيانات، علي سبيل المثال تكون على شبكة متشعبة، أو تطلب مجموعة واحدة ، ثم تغير رأيك وتطلب مجموعة أخرى…إلخ. سيُعرّضك ذلك لتحديد المعدل، وحينها سيكون عليك الانتظار لمدة ساعة قبل أن يُمكنك تحميل أية بينات أخرى. سوف يتوقف NodeXL تلقائياً عند وصولك إلى المعدل المحدد في تويتر ويتوقف لمدة ساعة ثم يستأنف تحميل البيانات من جديد. إذا كان لديك الوقت لتدع جهاز الكمبيوتر لديك يعمل طوال الليل( أو لعدة أيام)، فبإمكانك أن تزيد الحد لعدد أكبر من الأشخاص. ولكن إن فعلت ذلك، فعليك التأكد من أن جهاز الكمبيوتر لا ينتقل إلى وضع السبات Sleep أثناء عملية جمع البيانات.

الخطوة 3: تصدير البيانات Exporting Data   

بمجرد حصولك على البيانات، فإنه بإمكانك تحليلها باستخدام NodeXL  أو تصديرها واستخدام برنامج آخر للتحليل وهو ما سنقوم به في هذه المقالة. على سبيل المثال: إذا كنت تريد تحليل البيانات باستخدام Gephi، اضغط على زر Export ، واختر صيغة GraphML، وبذلك تُنشئ ملفاً يمكن لـ Gephi أن يفتحه.

الخطوة 4: عرض وتحليل الشبكة باستخدام Gephi

الآن وبما أن لدينا البيانات، يمكننا تكوين تصور عن الشبكة باستخدام Gephi، لفتح بيانات الشبكة في Gephi، اخترOpen من قائمة File ، واختر الملف الذي قمت بإرساله من NodeXL . في البداية ستبدو الشبكة فوضوية بعض الشئ، كما توضح الصورة التالية:

الخطوة 4: تحليل الشبكة

للحصول على صورة أفضل (وأكثر فائدة)، سوف نقوم بتصنيف “العُقد” (nodes) باستخدام مركزية المتجه الذاتي “Eigenvector Centrality“، وتلوين هذه التقاطعات باستخدام خوارزمية لتقصي الشبكات ” a network community finding algorithm” ، إضافة تسميات، وتغيير التصميم.

تصنيف التقاطعات باستخدام مركزية المتجه الذاتي Sizing the nodes by eigenvector centrality

إن مركزية المتجه الذاتي هي أحد مقاييس مدى أهمية وجود تقاطع(عُقدة) في الشبكة ( يستخدم علماء الشبكات مصطلح”مركزية” للدلالة على أهمية الشبكة) . إنّ أبسط طريقة يمكن من خلالها قياس المركزية centrality  هي درجة المركزية degree centrality  : درجة المركزية للعُقدة (node  (هي عبارة عن  عدد الروابط المتصلة بتلك العقدة مقسوماً على عدد العُقد في الشبكة ناقص واحد(نقسم على n-1 لأن ذلك هو أقصى عدد من الروابط الذي يمكن لعُقدة أن تتصل به وبالتالي تُغير قياسات درجة المركزية لتقع بين(0-1) .

إن المتجه الذاتي eigenvector  لا يأخذ في الاعتبار فقط عدد الاتصالات لعقدة ما، وإنما أيضاً “أهمية” العُقد الأخرى التي ترتبط بها تلك العُقدة. لذلك لتصنيف تلك العُقد باستخدام مركزية المتجه الذاتي، علينا أولاً حساب مركزية المتجه الذاتي لجميع تلك العُقد. هناك مشكلة واحدة بسيطة وهي أن NodeXL  ينشئ عموداً فارغاً لمركزية المتجه الذاتي eigenvector centrality ، وإلى أن تقوم بحذف ذلك العمود فلن يستطيع Gephi القيام بالحسابات، وسوف يُظهر لك ذلك جدول بيانات للشبكة.

 في الجزء الأسفل من النافذة يمكنك أن ترى مجموعة من الأزرار التي تسمح لك بمعالجة هذه البيانات، انقر فوق زر “Delete column” واختر” Eigenvector Centrality” ، والآن انتقل إلى عرض لمحة عامة عن طرق النقر على زر Overview في الجزء العلوي من يسار النافذة في لوحة الإحصاءات، انقر علي زر Run  بجانب Eigenvector Centrality (إن لم تظهر  لوحة الإحصاءات، قم باختيارها من قائمة Window) ، انقر OK من النافذة المنبثقة، يجب أن يظهر لك رسمٌ بياني يوضح مركزية المتجة الذاتي للعُقد في شبكتك، ثم يمكنك إغلاق هذه النافذة.

ثم انتقل إلى لوحة الترتيب Ranking Panel واختر الرمز الذي يشبه الماس الأحمر الصغير (يتم استخدام هذا الرمز ليعني الحجم في Gephi، ليس لدي أي فكرة عن السبب). من القائمة المنسدلة التي  تقول “Choose a rank parameter”  اختر “Eigenvector Centrality” ، يمكنك تعديل مدى الحد الأقصى/الأدنى لحجم العُقد (أنا أستخدم 10-50)، ثم انقر على زر تطبيق، كما توضح الصورة التالية:

الآن يجب أن تكون العقد قد صُنفت بحيث يكون لأكبر العقد أعلى قيمة eigenvector centrality .يتم تلوين العقد باستخدام خوارزمية تقصي الشبكات “Community Finding Algorithm”. إن  واحدة من الأشياء الأكثر إثارة للاهتمام التي يمكنك أن تجدها في في شبكة تويتر هي المجتمعات المحلية المختلفة من حسابات تويتر. ونحن في طريقنا لاستخدام “نمطية خوارزمية النتائج المجتمعية ” Modularity based algorithm” والتي تستخدم لتقسيم عُقد الشبكة إلى جماعات بحيث تكون الجماعات لديها الكثير من الاتصالات داخل المجموعات ولكن عدد قليل نسبياً بين المجموعات.

إن  الخطوة الرئيسية هي الضغط على زر Run المجاور لزر Modularity في لوحة الإحصائيات.  انقر فوق OKعلى النافذة المنبثقة ثم قم بإغلاق الرسم البياني الذي سيظهر. الآن، انتقل إلى إطار التقسيم “Partition Window”وانقرعلى زر التحديث”Refresh” (يبدو كسهمين أخصرين صغيرين في شكل دائري). اختر “Modularity Class” من القائمة المنسدلة التي يظهر بها ” Choose a partition parameter”.

نلاحظ أن هناك العديد من الطرق الأخرى التي يمكنك أن تصنف بها العقد إلى مجموعات (مثلا عن طريق المنطقة الزمنية) التي قد ترغب بالعودة واستكشافها في وقت لاحق. سوف يُظهر لك Gephi المجتمعات المختلفة والتعرف عليه جنبا إلى جنب مع نسبة العقد التي تنتمي إلى كل من تلك المجتمعات.

على سبيل المثال:قسّم Gephi شبكة تويتر لديَ إلى أربعة مجتمعات. يتكون أكبر مجتمع من 38.54٪ من العُقد”nodes” ويحتوي على أصغر المجتمع 18.94٪ من العُقد.

إذا قمت بالنقر فوق زر التفاحة، فسوف يقوم Gephi بتلوين المجتمعات في الشبكة. إذا كنت ترغب في تغيير الألوان، فقط اضغط على مربع اللون في نافذةالتقسيم Partition Window. وهنا ما تبدو عليه شبكتي الآن:

إضافة تسميات Adding Labels

 إنّ الخطوة التالية هي إضافة تسميات لشبكتنا حتى نتمكن من تحديد بعض الحسابات المختلفة.وسوف يساعدنا ذلك على فهم العُقد  “nodes” الهامة في شبكتنا وما يربط بين العقد داخل المجتمعات المختلفة . لإظهار التسميات: انقر فوق  حرف الـ T الأسود في الجزء السفلي من لوحة الرسم البياني. يمكنك تغيير التسميات بواسطة شريط التمرير الأيمن في الجزء السفلي من لوحة الرسم البياني. في البداية ربما سوف تجد صعوبة في قراءة التسميات لأنها تتداخل بعضها البعض، لكننا سوف نعالج ذلك سريعاً.

استخدام خوارزمية layout algorithm

باستخدام خوارزمية تخطيط لإعادة ترتيب العقد “nodes” بشكلٍ  أكثر فائدة، سوف نستخدم واحدة من  خوارزميات التخطيط المدمجة في Gephi. وجدتُ أن خوارزمية “Force Atlas algorithm” تعمل بشكل جيد لشبكة تويتر، ولكن يجب أن تُجرب الخوارزميات الأخرى أيضاً للعثور على أكثر خوارزمية تعمل على نحو أفضل للشبكة الخاصة التي قمتَ بجمعها. يمكنك اختيار خوارزمية من القائمة المنسدلة في لوحة التخطيط Layout pane، وحاول تغييربعض معالم التخطيط المختلفة لمعرفة ما يعمل على نحو أفضل. وإليك هنا ما أستخدمه بنفسي:

اضغط على زر Run لتشغيل الخوارزمية. إذا كانت الشبكة لديها الكثير من العقد /الروابط  (أو إذا كان جهاز الكمبيوتر الخاص بك بطيء)، فإنه قد يستغرق بعض الوقت حتى تقوم الخوارزمية بترتيبهم ،  بمجرد أن تجد ترتيباً جيداً، استخدام خوارزمية ” Label Adjust” لنقل العُقد بحيث لا تغطي التسميات بعضها البعض. وهنا ما حصلت عليه الآن:

إن الشيء الوحيد المتبقي الآن  هو الذهاب الى نافذة المعاينة “Preview Window” حيث  سيعطيك Gephi  صورة جميلة بمجرد النقر فوق الزر تحديث”Refresh”. يمكنك إجراء التعديلات النهائية مثل إخفاء / إظهار التسميات وضبط أحجام التسمية من لوحة إعدادات المعاينة”Preview Settings Pane”. قد تحتاج إلى تكرار التنقل بين نافذة Overview Layout، و نافذة Preview للحصول على كل شيء بشكل صحيح تماماً . وهذا هو الشكل  النهائي:


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *