الدرس 7 من 10
معالجة النصوص
- 14 دقيقة
- 5 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
توحيد النصّ وتنظيفه وتقسيمه وعدّه
الشرح
النصوص الحقيقية غير مرتّبة، ففيها مسافات زائدة وعلامات ترقيم ملتصقة بالكلمات، والحاسوب يرى Python وpython كلمتين مختلفتين. لذلك يمرّ النصّ قبل العدّ بثلاث خطوات: توحيد الحروف، ثم التنظيف، ثم التقسيم.
تبدأ بالتوحيد عن طريق .lower()، وهي لا تغيّر الحروف العربية لأنها ليس فيها كبير وصغير، لكنها توحّد ما يختلط بها من الحروف اللاتينية. ثم تنظّف النصّ بـ re.sub(r"[^\w\s]", " ", text)، فيصير كل ما ليس حرفًا أو رقمًا (\w) أو مسافة (\s) مسافةً. وأخيرًا تقسّمه بـ .split() بقوسين فارغين، فتقسم على أي عدد من المسافات وتتجاهل المسافات في الطرفين كما تفعل .strip()، أما .split(" ") فتُرجع نصوصًا فارغة بين كل مسافتين.
وهناك فخّ مع العربية، فـ string.punctuation لا تحوي إلا علامات الترقيم الإنجليزية، وليس فيها «،» ولا «؟» ولا «؛»، فمن يحذف العلامات بها تبقى عنده «ممتازة،» و«ممتازة» كلمتين مختلفتين. أما \w فتعرف الحروف العربية، ولهذا إذا حذفت كل ما ليس حرفًا أو رقمًا ذهبت العلامات كلّها.
المطلوب
أكمل الدالة words(text) لتُرجع كلمات النصّ نظيفة، أي بحروف صغيرة وبلا علامات ترقيم ولا كلمات فارغة، ثم اصنع freq وهو Counter يعدّ كل كلمات reviews.
الفحوص
5 فحوص- الدالة words تحذف علامات الترقيم العربية
- الدالة words تحوّل الحروف اللاتينية إلى صغيرة
- الدالة words تتجاهل المسافات الزائدة
- الدالة words لا تُرجع كلمات فارغة
- العدّاد freq يعدّ كل كلمات التعليقات