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

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

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

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

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

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

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

حزم JavaScript

يتوفّر رمز مُصنِّف النص من خلال @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 نموذجًا مدرّبًا متوافقًا مع هذه المهمة. لمزيد من المعلومات حول النماذج المُدرَّبة المتاحة لمصنِّف النص، يُرجى الاطّلاع على نظرة عامة على المهمة قسم النماذج.

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

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

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

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

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

يعمل "مصنِّف النص" مع البيانات النصية (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
);

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

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