الأدوات المستخدمة لتحليل بيانات مستخدمي تويتر

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

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

إستخدمت لغة البرمجة Python مع مكتبة Tweepy للتواصل مع خدمة تويتر. بعد جلب بيانات المستخدمين و تحميلها على Redis قمت بالمرور على كل حساب و استخرجت الكلمات الموجودة فيه. كل كلمة تمر على عدة فلاتر لتقليل الإختلافات الإملائية قدر الإمكان (مثلاً حرف التاء المربوطة يتم استبداله بهاء ليتم التعامل مع الكلمتان “طالبة” و “طالبه” على انهما نفس الكلمة), أخيراً كل كلمة تعطى معرف (ID) خاص بها، استخدمت خوازمية SHA-1 لهذا الغرض، هذا المعرف يسهل عملية جمع المكرر بحيث أي كلمتين لهما نفس المعرف تعتبران كلمة واحدة. أخيراً، حسبت النتائج ثم حفظتها في ملف خارجي وعرضتها لكم كما رأيتم في التدوينة السابقة.

نظام Redis مرن جداً و سهل الإستخدام، كانت من حسناته أنه سرّع عملية تحليل البيانات بشكل ملحوظ. أرشحه لكل شخص يحتاج للتعامل مع بيانات كبيرة ليس لها هيكل محدد (ليست جداول و أعمدة مثل أنظمة قواعد البيانات التقليدية) و يحتاج لوصول سريع لهذه البيانات.

إستيقظ قبل دوامك بساعتين

Waking Up at 5am to Code

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

الكلمات الأكثر تكراراً في وصف (Bio) عينة من مستخدمي تويتر

قمت بإجراء تحليل سريع لعينة من حسابات أكثر من 110 آلاف مشترك في تويتر، معظم العينة كانت من السعوديين، هدف التحليل هو استخراج الكلمات الأكثر تكراراً في وصف هذه الحسابات (Bio – وهو نص بطول لايزيد عن 160 حرف يتحدث فيه الشخص عن نفسه)، الصورة التالية تظهر الثلاثين كلمة الأكثر تكراراً :

الكلمات الأكثر تكرارا في حسابات تويتر

الكثير من الكلمات الأخرى المهمة و التي قد تساعد على فهم طبيعة شريحة مستخدمي تويتر السعوديين لم تذكر في الرسم البياني أعلاه لضيق المساحة، الكلمات التي ترددت على الأقل عشرة مرات (تقريباً 7 آلاف كلمة) يمكن مشاهدتها في هذا الملف، و يمكن كذلك تنزيل ملف مضغوط يحتوي كل الكلمات (تقريباً 76 الف كلمة) مع عدد مرات تكرارها، الملف محفوظ بترميز UTF-8 و الحقول متباعدة باستخدام Tab.

هذا التحليل بسيط جداً، يمكن تحسينه بجمع الكلمات المتشابهه (مثل “هلال” و “هلالي”) و غيرها للحصول على أرقام أكثر دقة. أخيراً، يمكنك استخدام البيانات كيفما تشاء تحت ترخيص Creative Commons Attribution 3.0 Unported License.

العلم و العمل للرافعي

أبيات للرافعي لها وقع كوقع السيوف يلخص فيها مشكلة العالم الذي لا يعمل بعلمه:

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

“خوازيق” فرق العمل

“الخوازيق” بمفهومها الضيق تضم كل فعل أو قول يصدر من أحد الأفراد تجاه زميل له في العمل من وراء ظهره لأغراض غير نبيلة وهي ميزة بارز في فرق العمل غير المنتجة، من نتائجها فقد المصداقية Credibility بين أفراد الفريق، فيصبح كل فرد من أفراد الفريق متحفظ و يحسب لأفعاله و أقواله الف حساب، فتكون المحصلة النهائية إنعدام الثقة بين فريق العمل، الأمر الذي ذكره كاتب The Five Dysfunctions of a Team على أنه أول علامة من علامات فرق العمل غير المنتجة. لا أدعي خبرة طويلة في فرق العمل لكن أظن أني عاينت مافيه الكفاية، رأيت “خوازيق” في فرق عمل تطوعية دعوية! و رأيت “خوازيق” في بيئات عمل بحثية أكاديمية! و “خوازيق” في مشاريع تجارية!، أنجح فرق العمل التي شاركت فيها كانت الثقة و التماسك هي الميزة الأبرز بين أعضائها.

مقدمة مبسطة لأساس خوارزمية MapReduce

Can Your Programming Language Do This?

خوارزمية تسمى MapReduce تعتبر أحد الأساسات التي يرتكز عليها محرك البحث Google والتي سمحت له أن يقوم بفهرسة و معالجة عدد مهول من صفحات الإنترنت يقدر بأكثر من 50 بليون صفحة، هذه الخوارزمية (هي أسلوب برمجي Programming Paradigm أكثر من كونها خوارزمية) تسمح للمبرمج أن يصمم برنامجه بحيث يمكن أن يتم تقسيم العمل على عدد كبير من أجهزة الكمبيوتر تعمل كلها معاً لإنهاء العمل بشكل متوازي Parallel Computing. هذه الخوارزمية تعتبر من أهم الخوارزميات الموجودة حالياً و تستخدم في كثير من التطبيقات الكبيرة. في هذه المقالة يشرح الكاتب  بأسلوب مبسط و بعدة أمثلة متتالية الفكرة الأساسية خلف MapReduce، قد تحتاج لمراجع أخرى حتى تستوعب فكرة الخوارزمية بشكل كامل.

إستدراك: أشار الأخ “نواف البديع” في تويتر إلى أن مسمى “خوارزمية” لاينطبق على MapReduce، وهذا القول هو الصواب وقد أشرت لذلك في منتصف المقال، لكني استخدمت كلمة خوارزمية تجاوزاً و لعدم امتلاكي لترجمة جيدة لكلمة Paradigm، كل الشكر للأخ نواف على تعليقه.

كيف تنافس أبل

How to beat Apple

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

كيف تبني نظام توصية (Recommender System)

Data Mining: Finding Similar Items and Users

عندما تتصفح أحد الكتب في موقع أمازون ستجد الموقع يقدم لك توصيات لكتب أخرى قام بشرائها مستخدمين آخرين للموقع، هذه التوصيات غالباً ماتكون قريبةَ جداً من نوعية الكتب (أو السلع) التي تفضلها أنت لأنها عُرِضت عليك بناءً على تحليل البيانات المتعلقة بالسلع التي تفضلها و تفضيلات المستخدمين الآخرين، هذا النوع من تحليل البيانات يتم عبر أنظمة تسمى أنظمة التوصية Recommender Systems (كذلك يسمى Collaborative Filtering في بعض الأحيان). يقدم كاتب هذه المقالة شرحاً مختصراً عن هذه الأنظمة و يعرض مثالاً حياً (مع كود برمجي بلغة Ruby) لعدد من المقاييس (الرياضية) المستخدمة في بناء أنظمة من هذا النوع.

الإحتمالات 101 من جامعة هارفرد

Statistics 110: Introduction to Probability

الإحصاء و الإحتمالات Statistics and Probability ليس فقط من أهم أقسام الرياضيات ذات التطبيقات في شتى أنواع العلوم (حاسب، هندسة، فيزياء، كيمياء .. الخ) بل و يعتبر هذا العلم مما نستخدمه بكثرة في حياتنا اليومية دون وعي كامل منّا خصوصاً عندما نقوم باتخاذ قرارات مثل “أي سيارة يجب أن أشتري؟” أو “ما إحتمالية أن يكون الطريق الدائري مزحماً؟”. جامعة هارفارد تقدم كورس كامل يحتوي على محاضرات مسجله بالفيديو و مذكرات PDF مجاناً، يمكن تنزيلهم عن طريق iTunes.

سلسلة تعلم البرمجة بالطريقة الصعبة

LearnCodeTheHardWay.org

يقدم كاتب هذه السلسة مجموعة “تمارين” لتعليم البرمجة تبدأ بمستوى بسيط جداً ثم تزداد صعوبتها تدريجياً. السلسلة حتى الآن تحتوي على كتاب لتعليم Python، و آخر لتعليم Ruby، وتوجد ثلاثة كتب أخرى لاتزال غير مكتملة: كتاب عن لغة C، و آخر عن SQL و ثالث Regular Expressions. يمكن تصفح الكتب مجاناً عبر الإنترنت أو شراء نسخة مطبوعة  من خلال موقع الكاتب.