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

تتيح لك مهمة أداة تضمين النص 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@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. في معظم الحالات، يكون هذا هو الحال بالفعل يتم تحقيق تسوية المستوى 2 من خلال استنتاج TFLite بدون الحاجة إلى لهذا الخيار. Boolean False
quantize ما إذا كان يجب قياس التضمين الذي يتم عرضه بوحدات البايت عبر الكمية الكمّية. يتم الافتراض ضمنيًا أن التضمينات تستند إلى معيار وحدة وبالتالي، يمكن ضمان توفُّر قيمة لأي سمة في [ -1.0، 1.0]. استخدام خيار l2Conditionize إذا لم يكن هذا هو الحال. 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]);

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