دليل تصنيف النصوص في بايثون

تتيح لك مهمة MediaPipe Text Classife تصنيف النص إلى مجموعة من الفئات المحددة، مثل الآراء الإيجابية أو السلبية. تحدد الفئات النموذج الذي تستخدمه وكيفية تدريب هذا النموذج. توضح لك هذه التعليمات كيفية استخدام مصنِّف النص مع بايثون.

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

مثال الرمز البرمجي

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

في حالة تنفيذ Text Classifier لـ Raspberry Pi، يُرجى الرجوع إلى مثال على تطبيق Raspberry Pi.

ضبط إعدادات الجهاز

يصف هذا القسم الخطوات الأساسية لإعداد بيئة التطوير ومشاريع الرموز البرمجية لاستخدام "أداة تصنيف النص" على وجه التحديد. للحصول على معلومات عامة حول إعداد بيئة التطوير لاستخدام مهام MediaPipe، بما في ذلك متطلبات إصدار النظام الأساسي، راجع دليل إعداد Python.

الطرود

يستخدم "Text Classifier" حزمة الوسائط (pip) لهذه الحزمة. يمكنك تثبيت هذه التبعيات باستخدام ما يلي:

$ python -m pip install mediapipe

عمليات الاستيراد

قم باستيراد الفئات التالية للوصول إلى وظائف مهمة Text Classifier:

from mediapipe.tasks import python
from mediapipe.tasks.python import text

الطراز

تتطلب مهمة MediaPipe Text Classife نموذجًا مدرَّبًا متوافقًا مع هذه المهمة. للحصول على مزيد من المعلومات حول النماذج المدربة المتاحة لأدوات تصنيف النص، راجع نظرة عامة على المهمة في قسم النماذج.

اختَر نموذجًا ونزِّله، ثم خزِّنه في دليل محلي:

model_path = '/absolute/path/to/text_classifier.tflite'

حدِّد مسار النموذج باستخدام معلَمة model_asset_path للعنصر BaseOptions، كما هو موضّح أدناه:

base_options = BaseOptions(model_asset_path=model_path)

إنشاء المهمة

تستخدم مهمة MediaPipe Text Classifier الدالة create_from_options لإعداد المهمة. تقبل الدالة create_from_options قيمًا لخيارات الإعداد لضبط خيارات المصنِّف. يمكنك أيضًا إعداد المهمة باستخدام وظيفة create_from_model_path الأصلية. تقبل الدالة create_from_model_path مسارًا نسبيًا أو مطلقًا إلى ملف النموذج المدرَّب. لمزيد من المعلومات حول خيارات الضبط، يُرجى الاطّلاع على خيارات الضبط.

يوضح الرمز التالي كيفية إنشاء هذه المهمة وتكوينها.

base_options = python.BaseOptions(model_asset_path=model_path)
options = text.TextClassifierOptions(base_options=base_options)

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

خيارات الضبط

تشمل هذه المهمة خيارات الضبط التالية لتطبيقات Android:

اسم الخيار الوصف نطاق القيمة القيمة التلقائية
display_names_locale تحدِّد هذه السياسة لغة التصنيفات التي سيتم استخدامها للأسماء المعروضة في البيانات الوصفية لنموذج المهمة، إذا كان ذلك متاحًا. الإعداد التلقائي هو en للغة الإنجليزية. يمكنك إضافة تصنيفات مترجَمة إلى البيانات الوصفية لنموذج مخصّص باستخدام TensorFlow Lite Metadata Scriptr API. رمز اللغة en
max_results يضبط الحد الأقصى الاختياري لعدد نتائج التصنيف ذات أعلى الدرجات التي تريد عرضها. وإذا كانت القيمة أقل من 0، سيتم عرض جميع النتائج المتاحة. أي أرقام موجبة -1
score_threshold لتعيين الحد الأدنى لدرجة التنبؤ الذي يتجاوز الحد المقدم في البيانات الوصفية للنموذج (إن يتوفر). يتم رفض النتائج التي تقلّ عن هذه القيمة. أي عائم لم يتم الضبط.
category_allowlist تُحدِّد القائمة الاختيارية لأسماء الفئات المسموح بها. وإذا لم يكن هذا الحقل فارغًا، ستتم فلترة نتائج التصنيف التي لا يكون اسم فئتها ضمن هذه المجموعة. ويتم تجاهل أسماء الفئات المكررة أو غير المعروفة. لا يمكن استخدام هذا الخيار مع category_denylist، ويؤدي استخدام كلاهما إلى حدوث خطأ. أي سلاسل لم يتم الضبط.
category_denylist تُحدِّد القائمة الاختيارية لأسماء الفئات غير المسموح بها. وإذا لم تكن نتائج التصنيف فارغة، فستتم تصفية نتائج التصنيف التي يوجد اسم فئتها في هذه المجموعة. ويتم تجاهل أسماء الفئات المكررة أو غير المعروفة. لا يمكن استخدام هذا الخيار إلّا مع category_allowlist، ويؤدي استخدام كلا الخيارين إلى حدوث خطأ. أي سلاسل لم يتم الضبط.

إعداد البيانات

تعمل أداة Text Classifier مع البيانات النصية (str). تتعامل المهمة مع المعالجة المسبقة لإدخال البيانات، بما في ذلك إنشاء الرموز المميزة والمعالجة المسبقة للتوتر.

وتتم معالجة كل عمليات المعالجة المسبقة ضمن دالة classify. ليست هناك حاجة إلى معالجة مسبقة إضافية للنص المدخل مسبقًا.

input_text = 'The input text to be classified.'

تنفيذ المهمة

يستخدم "مصنِّف النص" الدالة classify لعرض الاستنتاجات. بالنسبة لتصنيف النص، هذا يعني عرض الفئات المحتملة لنص الإدخال.

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

with python.text.TextClassifier.create_from_options(options) as classifier:
  classification_result = classifier.classify(text)

التعامل مع النتائج وعرضها

يُخرج "Text Classifier" كائن TextClassifierResult يحتوي على قائمة بالفئات المحتملة لنص الإدخال. يتم تحديد الفئات من خلال النموذج الذي تستخدمه، لذلك إذا كنت تريد فئات مختلفة، فاختر نموذجًا مختلفًا أو أعد تدريب نموذج موجود.

ويوضح ما يلي مثالاً على بيانات المخرجات من هذه المهمة:

TextClassificationResult:
  Classification #0 (single classification head):
    ClassificationEntry #0:
      Category #0:
        category name: "positive"
        score: 0.8904
        index: 0
      Category #1:
        category name: "negative"
        score: 0.1096
        index: 1

تم الحصول على هذه النتيجة عن طريق تشغيل مصنِّف BERT على نص الإدخال: "an imperfect but overall entertaining mystery".