دليل تضمين النص في Python

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

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

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

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

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

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

الطرود

تستخدم أداة تضمين النص حزمة mediapip. يمكنك تثبيت التبعية مع ما يلي:

$ python -m pip install mediapipe

عمليات الاستيراد

قم باستيراد الفئات التالية للوصول إلى وظائف أداة تضمين النص:

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import text

الطراز

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

اختَر نموذجًا ونزِّله ثم خزِّنه في دليل محلي. يمكنك استخدام الموصى بها UniversalSentenceEncoder الأمثل.

model_path = '/absolute/path/to/universal_sentence_encoder.tflite'

حدِّد مسار النموذج ضمن مَعلمة model_asset_path، كما هو موضَّح أدناه:

base_options = BaseOptions(model_asset_path=model_path)

إنشاء المهمة

تستخدم مهمة أداة تضمين النص MediaPipe الدالة create_from_options لإعداد المهمة. تقبل الدالة create_from_options قيم الإعداد. الخيارات لتعيين خيارات أداة التضمين. يمكنك أيضًا تهيئة المهمة باستخدام create_from_model_path: الدالة create_from_model_path مسارًا نسبيًا أو مطلقًا إلى ملف النموذج المدرَّب. لمزيد من المعلومات، المعلومات حول خيارات التهيئة، راجع خيارات الإعداد:

يوضح الرمز التالي كيفية إنشاء هذه المهمة وإعدادها.

import mediapipe as mp

BaseOptions = mp.tasks.BaseOptions
TextEmbedder = mp.tasks.text.TextEmbedder
TextEmbedderOptions = mp.tasks.text.TextEmbedderOptions

# For creating a text embedder instance:
options = TextEmbedderOptions(
    base_options=BaseOptions(model_asset_path=model_path),
    quantize=True)
text_embedder = TextEmbedder.create_from_options(options)

خيارات الإعداد

تشتمل هذه المهمة على خيارات الإعداد التالية لتطبيقات بايثون:

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

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

تعمل أداة تضمين النص مع بيانات النصوص (str). تتعامل المهمة مع إدخال البيانات المعالجة المسبقة، بما في ذلك الترميز والمعالجة المسبقة لـ Tenor.

تتم معالجة جميع عمليات المعالجة المسبقة ضمن الدالة embed. لا توجد حاجة لإجراء مزيد من المعالجة المسبقة لنص الإدخال مسبقًا.

input_text = "The input text to be embedded."

تنفيذ المهمة

تستخدم أداة تضمين النص الدالة embed لتشغيل الاستنتاجات. للنص التضمين، وهذا يعني إرجاع متجهات التضمين لنص الإدخال.

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

# Perform text embedding on the provided input text.
embedding_result = text_embedder.embed(input_text)

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

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

في ما يلي مثال على بيانات الإخراج من هذه المهمة:

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

يمكنك مقارنة التشابه الدلالي بين تضمينين باستخدام TextEmbedder.cosine_similarity. انظر التعليمة البرمجية التالية مثال.

# Compute cosine similarity.
similarity = TextEmbedder.cosine_similarity(
  embedding_result.embeddings[0],
  other_embedding_result.embeddings[0])