Fasttext في PHP \ بيثون. الخطوات الأولى

لماذا لماذا




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

Fasttext - تطوير من Facebook. الهدف الرئيسي من البرنامج هو تصنيف النص. قد تكون هناك حاجة إلى تصنيف النص ل:

  1. دمج المعلومات النصية في مجموعات "التشابه" (أخبار حول موضوع واحد)
  2. تجميع النص مع مواضيع مماثلة في مجموعة واحدة (أخبار عن السيارات)
  3. البحث عن المعلومات التي قد تكون غير مرغوب فيها
  4. البحث clickbait
  5. ...

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

التدريب الأول


يوجد على صفحة المكتبة تثبيت خطوة بخطوة وتعليمات التدريب الأولى . لن أسهب عليهم.

كعكة
لديهم أيضًا نماذج جاهزة بلغات مختلفة للتصنيف هنا.

إعداد المكتبة


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

تجريبيا فقط يمكنك اختيار المعلمات التي تناسبك. فيما يلي قائمة بالأشخاص الذين يؤثرون بشكل كبير على النتيجة:

يتحكم البعد الخافت في حجم المتجهات ( الزبدة ): كلما زاد عددهم ، زادت المعلومات التي يمكنهم التقاطها ، لكن هذا يتطلب المزيد من البيانات. ولكن إذا كان هناك الكثير من البيانات ، فستكون عملية التدريب أبطأ. الافتراضي هو 100 القياسات. ابدأ بـ 150 واختر القيمة المثالية لك.

- سرعة التعلم. إذا كانت المعلمة صغيرة جدًا ، يصبح النموذج أكثر حساسية للنص وقد لا يميز النصوص المتشابهة ، ولكن إذا كانت المعلمة كبيرة جدًا ، على العكس من ذلك ، يمكن أن "يقول" أن النصوص متشابهة ، رغم أن هذا لن يكون كذلك في الواقع. ابدأ بـ 0.1 (الافتراضي 0.05).

- عصر - عدد العصور. هذا هو عدد مرات المرور وفقًا لبياناتك. أكثر - أفضل (ولكن ، للأسف ، ليس دائمًا). هذا يزيد من وقت التدريب. ابدأ من 150 (الافتراضي هو 5).

- نموذج التعلم . اقرأ الوصف من Facebook. إنه واضح تماما.

- الخسارة - كيف ستحدث المقارنة. كل شيء هنا فردي للغاية ويعتمد على البيانات.

استطراد صغير
إنه لأمر رائع أنه حتى بدون المعرفة الكافية في تصنيف النصوص والآليات الداخلية للشبكة العصبية ، يمكنك الحصول على نموذج يعمل بالكامل.

إعداد النص


نص الإدخال مهم أيضا. كلما كان النص أفضل ، كانت المعلومات من النموذج أفضل. القواعد الأساسية لإعداد النص للتدريب:

  • حذف جميع العلامات
  • يلقي إلى أحرف صغيرة
  • إزالة علامات الترقيم
  • إزالة علامات التجزئة ، وصلات
  • استبعاد كلمات التوقف
  • استبعاد الكلمات الصغيرة (1،2،3 حرفًا. هنا يقرر الجميع بياناته)

يكتب البعض أنه يمكنك ببساطة تحويل النص إلى نموذج وتدريب. هذا الخيار لم يناسبني. أنا أميل إلى الاعتقاد بأنه بدون المعالجة المسبقة يتم الحصول على نموذج ذو جودة رديئة.

إعداد النص للتصنيف


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

لغة البرمجة


أكثر من صحيح
كما قيل في عائلة غي: "نعم ، لا أحد يهتم "

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

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

بدلا من الاستنتاج


لديّ نموذج مبني فقط على محتوى الأخبار على مدار الأيام القليلة الماضية. حجم الكلمات في حوالي 40،000 . يمكنك اللعب معها. ولكن ، ضع في اعتبارك أن:

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

Source: https://habr.com/ru/post/ar469917/


All Articles