دمج أدوات تضمين النص.

تسمح أدوات تضمين النص بتضمين النص في ناقل المعالم عالي الأبعاد الذي يمثل معناه الدلالي، والذي يمكن بعد ذلك مقارنته مع ناقل المعالم للنصوص الأخرى لتقييم التشابه الدلالي بينها.

على عكس البحث عن النص ، يسمح برنامج تضمين النص بحساب التشابه بين النصوص بسرعة بدلاً من البحث من خلال فهرس محدد مسبقًا تم إنشاؤه من مجموعة نصية.

استخدم واجهة برمجة تطبيقات TextEmbedder لمكتبة المهام لنشر أداة تضمين النص المخصصة في تطبيقات الهاتف المحمول الخاصة بك.

الميزات الرئيسية لواجهة برمجة تطبيقات TextEmbedder

  • معالجة نص الإدخال، بما في ذلك الرموز المميزة للكلمات أو قطع الجملة داخل الرسم البياني أو خارج الرسم البياني على النص المُدخل.

  • وظيفة الأداة المساعدة المضمنة لحساب تشابه جيب التمام بين ناقلات الميزات.

نماذج تضمين النص المدعومة

النماذج التالية مضمونة لتكون متوافقة مع TextEmbedder API.

تشغيل الاستدلال في C++

// Initialization.
TextEmbedderOptions options:
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<TextEmbedder> text_embedder = TextEmbedder::CreateFromOptions(options).value();

// Run inference with your two inputs, `input_text1` and `input_text2`.
const EmbeddingResult result_1 = text_embedder->Embed(input_text1);
const EmbeddingResult result_2 = text_embedder->Embed(input_text2);

// Compute cosine similarity.
double similarity = TextEmbedder::CosineSimilarity(
    result_1.embeddings[0].feature_vector()
    result_2.embeddings[0].feature_vector());

راجع الكود المصدري لمزيد من الخيارات لتكوين TextEmbedder .

تشغيل الاستدلال في بيثون

الخطوة 1: تثبيت حزمة TensorFlow Lite Support Pypi.

يمكنك تثبيت حزمة TensorFlow Lite Support Pypi باستخدام الأمر التالي:

pip install tflite-support

الخطوة 2: استخدام النموذج

from tflite_support.task import text

# Initialization.
text_embedder = text.TextEmbedder.create_from_file(model_path)

# Run inference on two texts.
result_1 = text_embedder.embed(text_1)
result_2 = text_embedder.embed(text_2)

# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = text_embedder.cosine_similarity(
    result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)

راجع الكود المصدري لمزيد من الخيارات لتكوين TextEmbedder .

نتائج المثال

يُرجع تشابه جيب التمام بين ناقلات المعالم المقيسة درجة تتراوح بين -1 و1. الأعلى هو الأفضل، أي أن تشابه جيب التمام 1 يعني أن المتجهين متطابقان.

Cosine similarity: 0.954312

جرب أداة CLI التجريبية البسيطة لـ TextEmbedder باستخدام النموذج الخاص بك وبيانات الاختبار.

متطلبات توافق النموذج

تتوقع واجهة برمجة تطبيقات TextEmbedder نموذج TFLite مع بيانات تعريف نموذج TFLite الإلزامية.

يتم دعم ثلاثة أنواع رئيسية من النماذج:

  • النماذج المستندة إلى BERT (انظر الكود المصدري لمزيد من التفاصيل):

    • بالضبط 3 موترات الإدخال (kTfLiteString)

      • معرفات الموتر، مع اسم البيانات الوصفية "ids"،
      • موتر القناع، مع اسم البيانات الوصفية "القناع".
      • موتر معرفات المقاطع، باسم بيانات التعريف "segment_ids"
    • موتر إخراج واحد بالضبط (kTfLiteUInt8/kTfLiteFloat32)

      • مع مكونات N المقابلة للأبعاد N لمتجه المعالم الذي تم إرجاعه لطبقة الإخراج هذه.
      • إما 2 أو 4 أبعاد، أي [1 x N] أو [1 x 1 x 1 x N] .
    • وحدة معالجة الإدخال لأداة Wordpiece/Sentencepiece Tokenizer

  • النماذج المستندة إلى Universal Sentence Encoder (راجع الكود المصدري لمزيد من التفاصيل):

    • بالضبط 3 موترات الإدخال (kTfLiteString)

      • موتر نص الاستعلام، باسم البيانات التعريفية "inp_text".
      • موتر سياق الاستجابة، باسم البيانات التعريفية "res_context".
      • موتر نص الاستجابة، باسم بيانات التعريف "res_text".
    • بالضبط 2 موتر الإخراج (kTfLiteUInt8/kTfLiteFloat32)

      • موتر ترميز الاستعلام، باسم البيانات التعريفية "query_encoding".
      • موتر ترميز الاستجابة، باسم البيانات الوصفية "response_encoding".
      • كلاهما يحتوي على مكونات N تتوافق مع الأبعاد N لمتجه المعالم الذي تم إرجاعه لطبقة الإخراج هذه.
      • كلاهما ذو بعدين أو 4 أبعاد، أي [1 x N] أو [1 x 1 x 1 x N] .
  • أي نموذج تضمين النص مع:

    • موتر نص الإدخال (kTfLiteString)
    • موتر تضمين إخراج واحد على الأقل (kTfLiteUInt8/kTfLiteFloat32)

      • مع مكونات N المقابلة للأبعاد N لمتجه المعالم الذي تم إرجاعه لطبقة الإخراج هذه.
      • إما 2 أو 4 أبعاد، أي [1 x N] أو [1 x 1 x 1 x N] .