تتيح مهمة "تصنيف النصوص" في MediaPipe تصنيف النصوص إلى مجموعة من الفئات المحدّدة، مثل المشاعر الإيجابية أو السلبية. يتم تحديد الفئات حسب النموذج الذي تستخدمه وطريقة تدريب هذا النموذج. توضّح لك هذه التعليمات كيفية استخدام أداة "مصنِّف النصوص" لتطبيقات الويب وتطبيقات JavaScript.
يمكنك الاطّلاع على هذه المهمة أثناء تنفيذها من خلال مشاهدة العرض التوضيحي. لمزيد من المعلومات حول إمكانات هذه المهمة ونماذجها وخيارات الإعداد، يُرجى الاطّلاع على نظرة عامة.
مثال على الرمز
يقدّم نموذج الرمز البرمجي الخاص بأداة Text Classifier عملية تنفيذ كاملة لهذه المهمة بلغة JavaScript لتستعين بها. يساعدك هذا الرمز البرمجي في اختبار هذه المهمة والبدء في إنشاء تطبيقك الخاص لتصنيف النصوص. ويمكنك عرض مثال "أداة تصنيف النصوص" وتشغيله وتعديله باستخدام متصفّح الويب فقط.
الإعداد
يوضّح هذا القسم الخطوات الرئيسية لإعداد بيئة التطوير ومشاريع الرموز البرمجية لاستخدام Text Classifier على وجه التحديد. للحصول على معلومات عامة حول إعداد بيئة التطوير لاستخدام MediaPipe Tasks، بما في ذلك متطلبات إصدار النظام الأساسي، يُرجى الاطّلاع على دليل الإعداد للويب.
حِزم 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 نموذجًا مدرَّبًا متوافقًا مع هذه المهمة. لمزيد من المعلومات حول النماذج المدرَّبة المتاحة في "مصنِّف النصوص"، اطّلِع على قسم "النماذج" في نظرة عامة على المهمة.
اختَر نموذجًا ونزِّله، ثم خزِّنه في دليل مشروعك:
<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-classifier على النص المدخل:
"an imperfect but overall entertaining mystery".