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

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

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

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

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

إذا كنت تقوم بتطبيق مصنف النص لـ Raspberry Pi، فراجع مثال على Raspberry Pi التطبيق.

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

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

الطرود

يستخدم مصنِّف النص حزمة Mediapi pip. يمكنك تثبيت هذه التبعيات مع ما يلي:

$ python -m pip install mediapipe

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

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

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

الطراز

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

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

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

تحديد مسار النموذج باستخدام الكائن BaseOptions model_asset_path كما هو موضح أدناه:

base_options = BaseOptions(model_asset_path=model_path)

إنشاء المهمة

تستخدم مهمة مصنِّف نص MediaPipe الدالة 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 Writer API رمز اللغة en
max_results لضبط الحد الأقصى الاختياري لنتائج التصنيف الأعلى تقييمًا إرجاع. إذا كانت قيمة 0، سيتم عرض جميع النتائج المتاحة. أي أرقام موجبة -1
score_threshold لتعيين الحد الأدنى لنتيجة التنبؤ الذي يلغي الحد المقدم في بيانات التعريف للنموذج (إن وجدت). يتم رفض النتائج التي تكون أدنى من هذه القيمة. أي عدد عائم لم يتم ضبط الوضع
category_allowlist تضبط هذه السياسة القائمة الاختيارية لأسماء الفئات المسموح بها. إذا لم تكن فارغة، سيتم وضع نتائج التصنيف التي لا يوجد اسم فئته بها في هذه المجموعة بفلترته. ويتم تجاهل أسماء الفئات المكرّرة أو غير المعروفة. لا يمكن لأحد الطرفين استخدام هذا الخيار إلا بعد استخدام category_denylist. يؤدي كلا الخيارين إلى خطأ. أي سلاسل لم يتم ضبط الوضع
category_denylist تحدِّد هذه السياسة القائمة الاختيارية لأسماء الفئات غير المسموح بها. في حال حذف نتائج التصنيف التي يكون اسم فئتها في هذه المجموعة غير فارغة، ستتم فلترتها . ويتم تجاهل أسماء الفئات المكرّرة أو غير المعروفة. يتوفّر هذا الخيار حصرية مع category_allowlist واستخدام النتيجتين معًا إلى حدوث خطأ. أي سلاسل لم يتم ضبط الوضع

تجهيز البيانات

يعمل "مصنِّف النص" مع البيانات النصية (str). تتعامل المهمة مع إدخال البيانات المعالجة المسبقة، بما في ذلك الترميز والمعالجة المسبقة لـ Tenor.

تتم معالجة جميع عمليات المعالجة المسبقة ضمن الدالة 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)

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

يُخرج "مصنِّف النص" كائن 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"