تطبيقات عملية لـ `collections.Counter`: من تحليل النصوص إلى بيانات الويب


📚 مراجعة سريعة: هذا التطبيق العملي مبني على مفهوم برمجي أساسي. راجع الدرس النظري من هنا أولاً.



مقدمة افتتاحية: بعد أن تعرفنا نظرياً على قوة collections.Counter وكيف يمكنه تبسيط عملية عد تكرار العناصر، حان الوقت لننتقل إلى الجانب العملي. في هذا الدرس، سنستكشف كيف يمكننا استخدام هذه الأداة في سيناريوهات واقعية تتجاوز مجرد عد الفواكه، وكيف يمكننا عرض هذه البيانات بطرق مفيدة.

الدالة الأساسية مرة أخرى:

دعونا نُذكِّر أنفسنا بالدالة التي بنيناها في الدرس السابق، فهي جوهر عملنا:


from collections import Counter

def count_items(items_list):
    item_counts = Counter(items_list)
    return item_counts

سيناريوهات عملية لاستخدام Counter:

1. تحليل الكلمات في نص:

تخيل أن لديك مقالاً وتريد معرفة الكلمات الأكثر استخداماً فيه. Counter يجعل هذا سهلاً للغاية:


text = "هذا مثال على نص يحتوي على كلمات مكررة. هذا النص سيوضح كيف يعمل Counter مع الكلمات."
words = text.lower().replace('.', '').split() # تحويل النص إلى كلمات صغيرة وإزالة النقطة
word_counts = count_items(words)
print("أكثر الكلمات تكراراً:")
for word, count in word_counts.most_common(3): # عرض أكثر 3 كلمات تكراراً
    print(f"الكلمة '{word}' تكررت {count} مرات")

هنا استخدمنا most_common(n) وهي ميزة رائعة في Counter لتعرض لك أكثر n عناصر تكراراً.

2. إحصاء زيارات الصفحات (مثال مبسط لـ Web Analytics):

في تطوير الويب، قد تحتاج لتتبع الصفحات الأكثر زيارة. يمكن تمثيل سجلات الزيارة كقائمة:


page_visits = ['/home', '/about', '/products', '/home', '/contact', '/products', '/home']
visit_counts = count_items(page_visits)
print("\nإحصائيات زيارات الصفحات:")
for page, count in visit_counts.items():
    print(f"الصفحة '{page}' زارت {count} مرات")

هذا يعطيك رؤية سريعة للصفحات الأكثر شعبية على موقعك.

3. تحليل تفضيلات المستخدمين:

إذا كان لديك قائمة بالمنتجات التي اشتراها المستخدمون، يمكنك معرفة المنتجات الأكثر شيوعاً:


user_purchases = ['لابتوب', 'ماوس', 'كيبورد', 'لابتوب', 'شاشة', 'ماوس', 'لابتوب']
product_counts = count_items(user_purchases)
print("\nإحصائيات المنتجات الأكثر مبيعاً:")
for product, count in product_counts.items():
    print(f"المنتج '{product}' بيع {count} مرات")

عرض البيانات بطرق متقدمة (ما بعد print):

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


import json
# باستخدام visit_counts من المثال السابق
json_output = json.dumps(dict(visit_counts), ensure_ascii=False, indent=4)
print("\nالنتائج بصيغة JSON:")
print(json_output)

هذا يفتح الباب لإرسال البيانات المحللة بسهولة إلى الواجهة الأمامية (Frontend) لعرضها بطريقة تفاعلية وجذابة للمستخدمين.

خاتمة:

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