دليل تصنيف النصوص على الويب

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

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

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

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

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

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

حِزم JavaScript

تتوفّر رمز Text Classifier من خلال حزمة @mediapipe/tasks-text. يمكنك العثور على هذه المكتبات وتنزيلها من الروابط المتوفرة في دليل الإعداد الخاص بالنظام الأساسي.

يمكنك تثبيت الحزم المطلوبة باستخدام الرمز التالي للتقسيم المرحلي المحلي باستخدام الأمر التالي:

npm install @mediapipe/tasks-text

وإذا كنت ترغب في النشر على خادم، يمكنك استخدام خدمة شبكة توصيل المحتوى (CDN)، مثل jsDelivr، لإضافة رمز مباشرةً إلى صفحة HTML، كما يلي:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
    crossorigin="anonymous"></script>
</head>

الطراز

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

حدد نموذجًا ونزّله ثم خزنه في دليل المشروع:

<dev-project-root>/assets/bert_text_classifier.tflite

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

baseOptions: {
        modelAssetPath: `/assets/bert_text_classifier.tflite`
      }

إنشاء المهمة

استخدِم إحدى وظائف TextClassifier.createFrom...() في "مصنِّف النص" لإعداد المهمة لتشغيل الاستنتاجات. يمكنك استخدام الدالة createFromModelPath() مع مسار نسبي أو مطلق إلى ملف النموذج المدرَّب. يوضح مثال التعليمة البرمجية أدناه استخدام الدالة TextClassifier.createFromOptions(). لمزيد من المعلومات عن خيارات الضبط المتاحة، يُرجى الاطّلاع على خيارات الضبط.

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

async function createClassifier() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textClassifier = await TextClassifier.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
      },
      maxResults: 5
    }
  );
}
createClassifier();

خيارات الضبط

تتضمن هذه المهمة خيارات التهيئة التالية لتطبيقات الويب وJavaScript:

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

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

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

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

const inputText = "The input text to be classified.";

تنفيذ المهمة

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

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

// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
  inputText
);

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

يُخرج "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".