שלב מטמיעות טקסט.

הטמעות טקסט מאפשרות הטמעת טקסט לתוך וקטור תכונה בעל מימד גבוה המייצג את המשמעות הסמנטית שלו, שאותו ניתן להשוות לווקטור התכונה של טקסטים אחרים כדי להעריך את הדמיון הסמנטי שלהם.

בניגוד לחיפוש טקסט , הטמעת טקסט מאפשרת לחשב את הדמיון בין טקסטים תוך כדי תנועה במקום לחפש באינדקס מוגדר מראש הבנוי מקורפוס.

השתמש ב-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] .