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

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

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

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

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

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

  • دالة مساعدة مضمّنة لاحتساب تشابه جيب التمام بين متجهات الميزات.

نماذج تضمين النصوص المتوافقة

نضمن توافق الطُرز التالية مع واجهة برمجة التطبيقات TextEmbedder.

تشغيل الاستدلال في 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.

تشغيل الاستنتاج في Python

الخطوة 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

جرِّب أداة العرض التوضيحي البسيطة لواجهة سطر الأوامر الخاصة بـ TextEmbedder باستخدام النموذج وبيانات الاختبار الخاصة بك.

متطلبات التوافق مع الطراز

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

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

  • النماذج المستندة إلى BERT (اطّلِع على رمز المصدر لمزيد من التفاصيل):

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

    • موتر المعرّفات، مع اسم البيانات الوصفية "ids"

    • موتر القناع، مع اسم البيانات الوصفية "mask"

    • موتر أرقام تعريف الأجزاء، مع اسم البيانات الوصفية "segment_ids"

    • موتّر إخراج واحد بالضبط (kTfLiteUInt8/kTfLiteFloat32)

    • مع N مكوّن يتوافق مع N أبعاد لمتّجه الميزات الذي تم عرضه في طبقة الإخراج هذه.

    • إما سمتان أو 4 سمات، أي [1 x N] أو [1 x 1 x 1 x N]

    • input_process_units لبرنامج Wordpiece/Sentencepiece Tokenizer

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

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

    • موتر نص طلب البحث، مع اسم البيانات الوصفية "inp_text".

    • موتر سياق الردّ، مع اسم البيانات الوصفية "res_context".

    • موتر نص الردّ، مع اسم البيانات الوصفية "res_text".

    • تنسوران للناتج بالضبط (kTfLiteUInt8/kTfLiteFloat32)

    • موتر ترميز طلب البحث، مع اسم البيانات الوصفية "query_encoding".

    • موتر ترميز الردّ، مع اسم البيانات الوصفية "response_encoding".

    • كلاهما يتضمّن مكوّنات N تتوافق مع أبعاد N لمتّجه الميزات الذي تم عرضه لطبقة الإخراج هذه.

    • كلاهما يتضمّن إما سمتَين أو أربع سمات، أي [1 x N] أو [1 x 1 x 1 x N].

  • أي نموذج لتضمين النص يتضمّن ما يلي:

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

    • مع N مكوّن يتوافق مع N أبعاد لمتّجه الميزات الذي تم عرضه في طبقة الإخراج هذه.

    • إما سمتان أو 4 سمات، أي [1 x N] أو [1 x 1 x 1 x N]