تنظيف الضجيج لا تنظيف اللغة

ما تعلّمته من بناء مجموعة بيانات عربية من 330 ألف مراجعة — اللهجات، والسخرية، ولماذا تُعدّ القرارات التي تتّخذها أثناء التنظيف جزءًا من البيانات نفسها.

Arabic NLP · Datasets · Sentiment analysis

كنت أحتاج مراجعات عربية. كثيرة.

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

كان أمامي مخرجان: أن أغيّر المشكلة لتناسب البيانات الموجودة، أو أن أبني البيانات. فبنيت البيانات.

ثلاثة مواقع، وثلاثة برامج جمع

جاءت المراجعات من Amazon وNoon وJumia.

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

وهذه معلومة تستحق أن تُعرف قبل البدء، لأنها تغيّر التقدير. الجمع من ثلاثة مصادر ليس عملًا واحدًا يتكرّر ثلاث مرات. هو ثلاثة أعمال.

البيانات الخام لم تكن غير مرتّبة فحسب

كنت أتوقّع أخطاءً إملائية وحقولًا ناقصة. ما وجدته كان أطرف من ذلك.

المعنى الواحد يصل في صور شتّى. هناك التشكيل. وهناك الإيموجي. وهناك الكلمات الممدودة — حلوووو، بعدد من حرف الواو يختاره الكاتب على مزاجه. وهناك الفرانكو، أي العربية مكتوبة بحروف لاتينية وأرقام، حيث 7abibi تعني حبيبي.

الخطوة البديهية أن تسمّي ذلك كله ضجيجًا وتمسحه. وكدت أفعل.

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

فتوقّف السؤال عن أن يكون كيف أنظّف هذا، وصار: ما الضجيج هنا فعلًا، وما اللغة وهي تؤدّي عملها؟

القاعدة: نظّف الضجيج لا اللغة

هذه هي الجملة التي انتهيت إلى العمل بها، وهي التي حسمت معظم ما بعدها.

التشكيل يُعالَج أو يُزال بحسب ما يحتاجه ما بعده في المسار. الإيموجي والمدّ يبقيان، لأنهما يحملان المشاعر. والفرانكو يبقى، لأن استبعاد مراجعة لأنها ليست مكتوبة بالحرف العربي هو استبعاد لطريقة حقيقية يكتب بها أناس حقيقيون.

واللهجات تبقى منفصلة. المصري يبقى مصريًا، والخليجي خليجيًا، والشامي شاميًا، والفصحى فصحى. والميل إلى ردّ كل شيء إلى الفصحى ميل قويّ، لأنه يجعل البيانات تبدو أنظف. وهو يجعلها أيضًا تمثّل لغة لا يكتب بها أحد في المراجعات.

بالغ في التوحيد، تحصل على مجموعة بيانات أنظف على الورق، وأسوأ وصفًا للشيء الذي على النموذج أن يتعامل معه.

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

النجوم تغلب الكلمات

اعتمدت على تقييم النجوم بوصفه الإشارة الأساسية للمشاعر، لا على النصّ.

يبدو ذلك خيار الكسول، إلى أن تقابل السخرية.

يكتب أحدهم «المنتج تحفههههه»، ويضيف إيموجي ضحك، ثم يمنحه نجمة واحدة. اقرأ النصّ وحده تجده مديحًا خالصًا. اقرأ النجوم تجد العكس تمامًا. الكلمات تفعل شيئًا لا تقوله الكلمات.

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

وتقييم النجوم ليس حكمًا معصومًا هو الآخر. الناس يخطئون في الضغط، والناس يقيّمون التوصيل بدل المنتج. لكنه إشارة مستقلّة، صادرة عن الشخص نفسه في اللحظة نفسها، وهو يختلف مع النصّ في المواضع التي يكون فيها النصّ أقلّ جدارة بالثقة.

ما الذي لا تمثّله

انتهت مجموعة البيانات إلى نحو 330 ألف مراجعة، مصنّفة إيجابية وسلبية.

إن استخدمتها، فالأمر الذي يستوجب الحذر هو أن تعاملها كوصف للعربية عمومًا. وجود عدّة لهجات لا يعني أنها حاضرة بنسب متساوية. والمصادر ثلاثة مواقع تجارة إلكترونية، أي نوع محدّد من الكتابة، من نوع محدّد من الكتّاب، عن نوع محدّد من الأشياء. وهذا تحيّز، وهو ليس عيبًا — هو ما تكونه هذه البيانات.

قبل التدريب أو التقييم عليها، انظر إلى التوزيع وإلى المصادر. فأيًّا كان ما يخرج، هو قول عن مراجعات المنتجات على تلك المنصّات، لا عن اللغة.

في أي مجموعة بيانات، عليك أن تعرف ما الذي تمثّله. والأهمّ: ما الذي لا تمثّله.

ما كنت سأفعله على نحو مختلف

كنت سأوثّق القرارات وأنا أتّخذها.

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

في المرّة القادمة سأكتب الإرشادات أولًا وأدعها تنمو مع ورود الحالات الغريبة، كي ينجو المنطق إلى جانب البيانات.

ما فاجأني

ظننت أن الجزء الصعب هو الوصول إلى رقم كبير.

لم يكن كذلك. جمع 330 ألف مراجعة مسألة استخراج بيانات، ومسائل الاستخراج مزعجة لكنها قابلة للحلّ. الجزء الصعب كان كل ما جاء بعد ذلك: اللهجات، وأساليب الكتابة، والسخرية، والفرانكو، والإيموجي، والمدّ، وأن تقرّر لكل واحد منها أين يقع الخطّ بين الإشارة والضجيج.

وهذا غيّر نظرتي إلى مجموعات البيانات. مجموعة البيانات ليست كومة نصوص. هي بناء مهندَس، تُبنى فيه قرارات وافتراضات وحدود — والقرارات التي تتّخذها أثناء بنائه جزء منه بقدر ما هي السطور نفسها.

كل الكتابات