یکپارچه سازی جاسازی متن

جاسازی‌های متن اجازه می‌دهند متن را در یک بردار ویژگی با ابعاد بالا که معانی معنایی آن را نشان می‌دهد، جاسازی کنید، که سپس می‌توان آن را با بردار ویژگی سایر متون مقایسه کرد تا شباهت معنایی آنها را ارزیابی کرد.

برخلاف جستجوی متن ، جاسازی متن به جای جستجوی یک فهرست از پیش تعریف شده که از یک پیکره ساخته شده است، امکان محاسبه شباهت بین متون را در لحظه فراهم می کند.

از Task Library TextEmbedder API برای استقرار جاسازی متن سفارشی خود در برنامه های تلفن همراه خود استفاده کنید.

ویژگی های کلیدی TextEmbedder API

  • پردازش متن ورودی، از جمله توکن‌سازی‌های درون‌گراف یا خارج از ورد یا قطعه جمله در متن ورودی.

  • تابع ابزار داخلی برای محاسبه شباهت کسینوس بین بردارهای ویژگی.

مدل های جاسازی متن پشتیبانی شده

سازگاری مدل های زیر با API 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 به کد منبع مراجعه کنید.

استنتاج را در پایتون اجرا کنید

مرحله 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 با مدل و داده های آزمایشی خود امتحان کنید.

الزامات سازگاری مدل

API 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

  • مدل‌های مبتنی بر رمزگذار جملات جهانی (برای جزئیات بیشتر به کد منبع مراجعه کنید):

    • دقیقاً 3 تانسور ورودی (kTfLiteString)

      • تانسور متن پرس و جو، با نام فراداده "inp_text".
      • تانسور زمینه پاسخ، با نام فراداده "res_context".
      • تانسور متن پاسخ، با نام فراداده "res_text".
    • دقیقا 2 تانسور خروجی (kTfLiteUInt8/kTfLiteFloat32)

      • تانسور رمزگذاری پرس و جو، با نام فراداده "query_encoding".
      • تانسور رمزگذاری پاسخ، با نام فراداده "response_encoding".
      • هر دو با N مولفه متناظر با ابعاد N بردار ویژگی بازگشتی برای این لایه خروجی.
      • هر دو با ابعاد 2 یا 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] .