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

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

للحصول على مزيد من المعلومات حول الإمكانيات والنماذج وخيارات الإعداد لهذه المهمة، يُرجى الاطّلاع على نظرة عامة.

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

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

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

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

الطرود

تستخدم أداة تضمين النص حزمة الوسائط (pip) يمكنك تثبيت التبعية باستخدام ما يلي:

$ 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 Text embedder الدالة 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 أصلي. في معظم الحالات، يتم تسوية L2 من خلال استنتاج TFLite بدون الحاجة إلى هذا الخيار. Boolean False
quantize ما إذا كان يجب تحديد قيمة التضمين التي تم إرجاعها إلى وحدات البايت من خلال تحديد كمّية عددية ومن المفترض ضمنيًا أن تكون عمليات التضمين عبارة عن معيار وحدة، وبالتالي يمكن أن يكون لأي سمة قيمة في [ -1.0, 1.0]. واستخدِم الخيار l2_normalize إذا لم يكن الأمر كذلك. Boolean False

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

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

وتتم معالجة كل عمليات المعالجة المسبقة ضمن دالة 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])