تطبيقات
تصنيف التغريدات
لدينا ثلاثة ملفات:
- الأول يحوي تغريدات
- الثاني يحوي كلمات إيجابية
- الثالث يحوي كلمات سلبية
نريد تصنيف التغريدات بناءً على عدد الكلمات الإيجابية والسلبية فيها.
بعد النظر في شكل الملفات. يتبين لنا أن السطر الواحد يحتوي على “شيء” واحد. وبالتالي سنقسم البيانات على كل سطر.
ونلاحظ أيضًا وجود أسطر خاوية، يجب التخلص منها.
نستدعي الإجراء لقراءة الملفات الثلاث:
0 أشعر بامتنان عميق للأشخاص الرائعين في حياتي! كل يوم معهم هو هدية جميلة
1 الزهور المتفتحة تملأ المكان بألوانها الزاهية وعطرها الفواح! والعصافير تغرد بأجمل الألحان تحت أشعة الشمس الدافئة! يوم مثالي بكل تفاصيله
2 الرجل العجوز قدوة في العطاء والكرم! يسعد دائماً بمساعدة الآخرين ويترك أثراً طيباً في كل من حوله! محبوب من الجميع لطيبة قلبه
3 أتمنى لكم جميعاً يوماً مشرقاً مليئاً بالإنجازات والنجاحات! متحمس جداً لرؤية ابتساماتكم السعيدة!
4 متحمس جداً للتحديات الجديدة! كل يوم فرصة للتعلم والنمو والتطور!
5 تعذبت اليوم برحلة مزعجة في طريقي، رأيت مناظر مقرفة من حولي وأنا أتحمل ضجيج الطبيعة المزعجة
6 صباح سيئ! استيقظت متأخراً وشربت فنجان قهوة مر. متوتر وقلق من لقاء زملائي المزعجين في العمل!
7 أصوات الحياة من حولي تملأني إرهاقاً! أتعذب بالعمل من المنزل وأشعر بالملل والإحباط!
8 قضيت أمسية متعبة مع أصدقائي المزعجين! تشاجرنا كثيراً وتذكرنا أسوأ الذكريات! أشعر بالحزن والضيق من وجودهم في حياتي!
ممتن
امتنان
رائع
جميل
هدية
زاهية
فواح
أجمل
دافئة
مثالي
قدوة
عطاء
كرم
يسعد
مساعدة
طيب
محبوب
مشرق
إنجازات
نجاحات
متحمس
ابتسامات
سعيدة
تعلم
نمو
تطور
فرصة
سعيد
تعذب
مزعج
مقرف
ضجيج
سيئ
متأخر
مر
متوتر
قلق
إرهاق
أتعذب
ملل
إحباط
متعب
تشاجر
أسوأ
حزن
ضيق
مزعجين
متضايق
مرهق
فائت
غير مرتاح
وحيد
حزين
الآن نقوم بتصنيف التغريدات:
def classify(text: str) -> (int, int):
"""Returns the number of positive and negative words in the text"""
positive_count = 0
for word in positive_words:
if word in text:
positive_count += 1
negative_count = 0
for word in negative_words:
if word in text:
negative_count += 1
return positive_count, negative_count
assert classify('أنا سعيد') == (1, 0)
assert classify('أنا حزين') == (0, 1)
assert classify('سعيد حزين اليوم') == (1, 1)
assert classify('اذهب إلى الدكان') == (0, 0)
نستدعي الإجراء على التغريدات، ونفرز النتائج في ثلاثة قوائم:
positive_tweets = []
negative_tweets = []
neutral_tweets = []
for tweet in tweets:
pos, neg = classify(tweet)
score = pos - neg
print(f'-{neg} +{pos} = {score:+}')
if score > 0:
positive_tweets.append((tweet, score))
elif score < 0:
negative_tweets.append((tweet, score))
else:
neutral_tweets.append((tweet, score))
-0 +4 = +4
-0 +5 = +5
-0 +7 = +7
-0 +7 = +7
-0 +5 = +5
-4 +0 = -4
-7 +0 = -7
-5 +0 = -5
-7 +0 = -7
نعرض التغريدات بحسب التصنيف مرتبة بقوة التصنيف من الأعلى إلى الأسفل:
print('positive_tweets:')
for tweet, score in sorted(positive_tweets, key=lambda x: x[1], reverse=True):
print(f'{score:+} {tweet}')
positive_tweets:
+7 الرجل العجوز قدوة في العطاء والكرم! يسعد دائماً بمساعدة الآخرين ويترك أثراً طيباً في كل من حوله! محبوب من الجميع لطيبة قلبه
+7 أتمنى لكم جميعاً يوماً مشرقاً مليئاً بالإنجازات والنجاحات! متحمس جداً لرؤية ابتساماتكم السعيدة!
+5 الزهور المتفتحة تملأ المكان بألوانها الزاهية وعطرها الفواح! والعصافير تغرد بأجمل الألحان تحت أشعة الشمس الدافئة! يوم مثالي بكل تفاصيله
+5 متحمس جداً للتحديات الجديدة! كل يوم فرصة للتعلم والنمو والتطور!
+4 أشعر بامتنان عميق للأشخاص الرائعين في حياتي! كل يوم معهم هو هدية جميلة
print('negative_tweets:')
for tweet, score in sorted(negative_tweets, key=lambda x: x[1]):
print(f'{score:+} {tweet}')
negative_tweets:
-7 صباح سيئ! استيقظت متأخراً وشربت فنجان قهوة مر. متوتر وقلق من لقاء زملائي المزعجين في العمل!
-7 قضيت أمسية متعبة مع أصدقائي المزعجين! تشاجرنا كثيراً وتذكرنا أسوأ الذكريات! أشعر بالحزن والضيق من وجودهم في حياتي!
-5 أصوات الحياة من حولي تملأني إرهاقاً! أتعذب بالعمل من المنزل وأشعر بالملل والإحباط!
-4 تعذبت اليوم برحلة مزعجة في طريقي، رأيت مناظر مقرفة من حولي وأنا أتحمل ضجيج الطبيعة المزعجة