جاسازیکنندههای متن امکان جاسازی متن را در یک بردار ویژگی با ابعاد بالا که نشاندهنده معنای معنایی آن است، فراهم میکنند که سپس میتوان آن را با بردار ویژگی متون دیگر مقایسه کرد تا شباهت معنایی آنها را ارزیابی کرد.
برخلاف جستجوی متن ، جاسازیکننده متن به شما امکان میدهد به جای جستجو از طریق یک فهرست از پیش تعریفشده که از یک مجموعه متن ساخته شده است، شباهت بین متون را در لحظه محاسبه کنید.
از API مربوط به کتابخانه وظایف TextEmbedder برای پیادهسازی جاسازیکننده متن سفارشی خود در برنامههای تلفن همراه خود استفاده کنید.
ویژگیهای کلیدی API مربوط به TextEmbedder
پردازش متن ورودی، شامل توکنسازیهای دروننموداری یا بروننموداری متن ورودی برای قطعهی کلمه یا جمله .
تابع سودمندی داخلی برای محاسبه شباهت کسینوسی بین بردارهای ویژگی.
مدلهای پشتیبانیشده برای جاسازی متن
مدلهای زیر تضمین میکنند که با 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
مرحله ۲: استفاده از مدل
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 به کد منبع مراجعه کنید.
نتایج مثال
شباهت کسینوسی بین بردارهای ویژگی نرمالشده، امتیازی بین -۱ و ۱ برمیگرداند. هرچه این امتیاز بالاتر باشد، بهتر است، یعنی شباهت کسینوسی ۱ به این معنی است که دو بردار یکسان هستند.
Cosine similarity: 0.954312
ابزار آزمایشی ساده CLI برای TextEmbedder را با مدل و دادههای آزمایشی خودتان امتحان کنید.
الزامات سازگاری مدل
API TextEmbedder انتظار یک مدل TFLite با متادیتای اجباری مدل TFLite را دارد.
سه نوع مدل اصلی پشتیبانی میشوند:
مدلهای مبتنی بر BERT (برای جزئیات بیشتر به کد منبع مراجعه کنید):
دقیقاً ۳ تانسور ورودی (kTfLiteString)
تانسور شناسهها، با نام فراداده "ids"،
تانسور ماسک، با نام فراداده "mask".
تانسور شناسههای قطعه، با نام فراداده "segment_ids"
دقیقاً یک تانسور خروجی (kTfLiteUInt8/kTfLiteFloat32)
با
Nمؤلفه مربوط بهNبُعد بردار ویژگی بازگشتی برای این لایه خروجی.یا ۲ یا ۴ بُعد، یعنی
[1 x N]یا[1 x 1 x 1 x N].یک واحد پردازش ورودی برای توکنساز Wordpiece/Sentencepiece
مدلهای مبتنی بر رمزگذار جمله جهانی (برای جزئیات بیشتر به کد منبع مراجعه کنید):
دقیقاً ۳ تانسور ورودی (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بُعد بردار ویژگی بازگشتی برای این لایه خروجی.یا ۲ یا ۴ بُعد، یعنی
[1 x N]یا[1 x 1 x 1 x N].