חיפוש טקסט מאפשר חיפוש טקסט דומה מבחינה סמנטית בקורפוס. זה עובד על ידי הטמעת שאילתת החיפוש לתוך וקטור ממדי גבוה המייצג את המשמעות הסמנטית של השאילתה, ולאחר מכן חיפוש דמיון באינדקס מוגדר מראש, מותאם אישית באמצעות ScaNN (Scalable Nearest Neighbors).
בניגוד לסיווג טקסט (למשל Bert Natural Language Classifier ), הרחבת מספר הפריטים שניתן לזהות אינה דורשת אימון מחדש של המודל כולו. ניתן להוסיף פריטים חדשים פשוט לבנות מחדש את האינדקס. זה גם מאפשר עבודה עם גופים גדולים יותר (100,000+ פריטים).
השתמש ב-Task Library TextSearcher
API כדי לפרוס את מחפש הטקסט המותאם אישית שלך באפליקציות לנייד שלך.
תכונות עיקריות של TextSearcher API
לוקח מחרוזת בודדת כקלט, מבצע מיצוי הטמעה וחיפוש של השכן הקרוב באינדקס.
עיבוד טקסט קלט, כולל אסימוני Wordpiece או Sentencepiece בתוך גרף או מחוץ לגרף בטקסט קלט.
דרישות מוקדמות
לפני השימוש ב- TextSearcher
API, יש לבנות אינדקס המבוסס על קורפוס הטקסט המותאם אישית לחיפוש. ניתן להשיג זאת באמצעות ה-API של Model Maker Searcher על ידי מעקב והתאמת המדריך .
בשביל זה תצטרך:
- מודל הטמעת טקסט TFLite, כגון קודד המשפטים האוניברסלי. לדוגמה,
- קורפוס הטקסט שלך.
לאחר שלב זה, אמור להיות לך מודל חיפוש עצמאי של TFLite (למשל mobilenet_v3_searcher.tflite
), שהוא מודל הטמעת הטקסט המקורי עם האינדקס המצורף ל- TFLite Model Metadata .
הפעל הסקה ב-Java
שלב 1: ייבא תלות Gradle והגדרות אחרות
העתק את קובץ מודל החיפוש .tflite
לספריית הנכסים של מודול האנדרואיד שבו המודל יופעל. ציין שאין לדחוס את הקובץ, והוסף את ספריית TensorFlow Lite לקובץ build.gradle
של המודול:
android {
// Other settings
// Specify tflite index file should not be compressed for the app apk
aaptOptions {
noCompress "tflite"
}
}
dependencies {
// Other dependencies
// Import the Task Vision Library dependency (NNAPI is included)
implementation 'org.tensorflow:tensorflow-lite-task-vision:0.4.4'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}
שלב 2: שימוש במודל
// Initialization
TextSearcherOptions options =
TextSearcherOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setSearcherOptions(
SearcherOptions.builder().setL2Normalize(true).build())
.build();
TextSearcher textSearcher =
textSearcher.createFromFileAndOptions(context, modelFile, options);
// Run inference
List<NearestNeighbor> results = textSearcher.search(text);
עיין בקוד המקור וב-javadoc לאפשרויות נוספות להגדרת TextSearcher
.
הפעל מסקנות ב-C++
// Initialization
TextSearcherOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
options.mutable_embedding_options()->set_l2_normalize(true);
std::unique_ptr<TextSearcher> text_searcher = TextSearcher::CreateFromOptions(options).value();
// Run inference with your input, `input_text`.
const SearchResult result = text_searcher->Search(input_text).value();
עיין בקוד המקור לאפשרויות נוספות להגדרת TextSearcher
.
הפעל מסקנות ב- Python
שלב 1: התקן את חבילת TensorFlow Lite Support Pypi.
אתה יכול להתקין את חבילת TensorFlow Lite Support Pypi באמצעות הפקודה הבאה:
pip install tflite-support
שלב 2: שימוש במודל
from tflite_support.task import text
# Initialization
text_searcher = text.TextSearcher.create_from_file(model_path)
# Run inference
result = text_searcher.search(text)
עיין בקוד המקור לאפשרויות נוספות להגדרת TextSearcher
.
תוצאות לדוגמה
Results:
Rank#0:
metadata: The sun was shining on that day.
distance: 0.04618
Rank#1:
metadata: It was a sunny day.
distance: 0.10856
Rank#2:
metadata: The weather was excellent.
distance: 0.15223
Rank#3:
metadata: The cat is chasing after the mouse.
distance: 0.34271
Rank#4:
metadata: He was very happy with his newly bought car.
distance: 0.37703
נסה את כלי ההדגמה הפשוט של CLI עבור TextSearcher עם מודל ונתוני בדיקה משלך.