دليل تضمين النص للويب

تتيح لك مهمة MediaPipe Text inlineer إنشاء تمثيل رقمي للبيانات النصية لالتقاط معناها الدلالي. توضِّح لك هذه التعليمات كيفية استخدام أداة تضمين النص لتطبيقات الويب و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@latest/index.js"
    crossorigin="anonymous"></script>
</head>

الطراز

تحتاج مهمة أداة تضمين النص MediaPipe إلى نموذج مدرب متوافق مع هذه المهمة. للحصول على مزيد من المعلومات حول النماذج المدربة المتاحة لأداة تضمين النص، راجع النظرة العامة على المهمة إلى قسم النماذج.

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

<dev-project-root>/app/shared/models

إنشاء المهمة

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

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

async function createEmbedder() {
  const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  textEmbedder = await TextEmbedder.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_embedder/universal_sentence_encoder.tflite`
      },
      quantize: true
    }
  );
}
createEmbedder();

خيارات الضبط

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

اسم الخيار الوصف نطاق القيمة القيمة التلقائية
l2Normalize ما إذا كان سيتم تسوية الخط المتجه للميزة الذي تم إرجاعه باستخدام معيار L2. لا تستخدم هذا الخيار إلا إذا لم يكن النموذج يحتوي على L2_NORMALIZATION TFLite Op أصلي. في معظم الحالات، يتم تسوية L2 من خلال استنتاج TFLite بدون الحاجة إلى هذا الخيار. Boolean False
quantize ما إذا كان يجب تحديد قيمة التضمين التي تم إرجاعها إلى وحدات البايت من خلال تحديد كمّية عددية ومن المفترض ضمنيًا أن تكون عمليات التضمين عبارة عن معيار وحدة، وبالتالي يمكن أن يكون لأي سمة قيمة في [ -1.0, 1.0]. واستخدِم الخيار l2normalize إذا لم يكن الأمر كذلك. Boolean False

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

تعمل أداة تضمين النص مع البيانات النصية (string). تتعامل المهمة مع المعالجة المسبقة لإدخال البيانات، بما في ذلك إنشاء الرموز المميزة والمعالجة المسبقة للتوتر. وتتم معالجة كل عمليات المعالجة المسبقة ضمن دالة embed. ليست هناك حاجة إلى معالجة مسبقة إضافية للنص المدخل مسبقًا.

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

تنفيذ المهمة

تستخدم "أداة تضمين النص" الدالة embed لعرض الاستنتاجات. بالنسبة إلى تضمين النص، يعني هذا عرض متجهات التضمين لنص الإدخال.

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

// Wait to run the function until inner text is set
const embeddingResult = textEmbedder.embed(
  inputText
);

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

تعمل "أداة تضمين النص" على إخراج TextEmbedderResult تحتوي على قائمة من عمليات التضمين (سواء كانت نقطة عائمة أو كمّية كمّية) لنص الإدخال.

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

TextEmbedderResult:
  Embedding #0 (sole embedding head):
    float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
    head_index: 0

يمكنك مقارنة التشابه الدلالي بين تضمينين باستخدام الدالة TextEmbedder.cosineSimilarity. انظر التعليمة البرمجية التالية للحصول على مثال.

// Compute cosine similarity.
const similarity = TextEmbedder.cosineSimilarity(
  embeddingResult.embeddings[0],
  otherEmbeddingResult.embeddings[0]);

يوضح الرمز "مثال على أداة تضمين النص" كيفية عرض نتائج أداة التضمين التي تم إرجاعها من المهمة. يمكنك الاطّلاع على مثال الرمز البرمجي للحصول على التفاصيل.