הטמעות טקסט מאפשרות הטמעת טקסט לתוך וקטור תכונה בעל מימד גבוה המייצג את המשמעות הסמנטית שלו, שאותו ניתן להשוות לווקטור התכונה של טקסטים אחרים כדי להעריך את הדמיון הסמנטי שלהם.
בניגוד לחיפוש טקסט , הטמעת טקסט מאפשרת לחשב את הדמיון בין טקסטים תוך כדי תנועה במקום לחפש באינדקס מוגדר מראש הבנוי מקורפוס.
השתמש ב-Task Library TextEmbedder
API כדי לפרוס את הטמעת הטקסט המותאמת אישית שלך באפליקציות שלך לנייד.
תכונות עיקריות של ה-API של TextEmbedder
עיבוד טקסט קלט, כולל אסימוני Wordpiece או Sentencepiece בתוך גרף או מחוץ לגרף בטקסט קלט.
פונקציית שירות מובנית לחישוב הדמיון הקוסינוס בין וקטורי תכונה.
דגמי הטמעת טקסט נתמכים
הדגמים הבאים מובטחים להיות תואמים ל- 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
.
הפעל מסקנות ב- 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
נסה את כלי ההדגמה הפשוט של CLI עבור TextEmbedder עם מודל ונתוני בדיקה משלך.
דרישות תאימות לדגם
ה-API TextEmbedder
מצפה למודל TFLite עם מטא נתונים חובה של מודל TFLite .
שלושה סוגים עיקריים של דגמים נתמכים:
מודלים מבוססי BERT (ראה קוד מקור לפרטים נוספים):
בדיוק 3 טנסור קלט (kTfLiteString)
- טנסור מזהים, עם שם המטא נתונים "ID",
- טנסור מסכה, עם שם המטא נתונים "מסכה".
- טנסור של מזהי פלחים, עם שם המטא נתונים "segment_ids"
טנזור פלט אחד בדיוק (kTfLiteUInt8/kTfLiteFloat32)
- עם
N
רכיבים התואמים ל-N
ממדים של וקטור התכונה המוחזר עבור שכבת פלט זו. - 2 או 4 ממדים, כלומר
[1 x N]
או[1 x 1 x 1 x N]
.
- עם
יחידות_process_input עבור Wordpiece/Sentencepiece Tokenizer
מודלים מבוססי קודן משפטים אוניברסלי (ראה קוד מקור לפרטים נוספים):
בדיוק 3 טנסור קלט (kTfLiteString)
- טנסור טקסט שאילתה, עם שם מטא נתונים "inp_text".
- טנסור הקשר של תגובה, עם שם המטא נתונים "res_context".
- טנסור טקסט תגובה, עם שם המטא נתונים "res_text".
בדיוק 2 טנסור פלט (kTfLiteUInt8/kTfLiteFloat32)
- טנסור קידוד שאילתה, עם שם המטא נתונים "query_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]
.
- עם