שילוב של מחפשי טקסט

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

בניגוד לסיווג טקסטים (למשל, מסווג שפה טבעית של BERT), כשמרחיבים את מספר הפריטים שאפשר לזהות, אין צורך באימון מחדש את המודל כולו. ניתן להוסיף פריטים חדשים פשוט בונים מחדש את האינדקס. גם שמאפשר לעבוד עם קורפוסים גדולים (יותר מ-100,000 פריטים).

משתמשים ב-API של ספריית המשימות TextSearcher כדי לפרוס את מחפש הטקסט בהתאמה אישית בתוך באפליקציות שלך לנייד.

תכונות עיקריות של TextSearcher API

  • מקבל מחרוזת יחידה כקלט, מבצע חילוץ הטמעה את החיפוש השכן הקרוב ביותר באינדקס.

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

דרישות מוקדמות

לפני השימוש ב-API TextSearcher, צריך ליצור אינדקס על סמך לקורפוס מותאם אישית של טקסט לחיפוש. אפשר לעשות זאת באמצעות Model Maker Searcher API באמצעות מעקב אחר מודלים מדריך.

לשם כך, צריך:

  • מודל הטמעה של טקסט באמצעות TFLite, כמו מקודד משפט אוניברסלי. עבור דוגמה,
    • ה אחת אומן מחדש בקורס Colab, שמותאם להסקת מסקנות במכשיר. נדרשות רק 6 אלפיות השנייה כדי לבצע שאילתה מחרוזת טקסט במכשירי Pixel 6.
    • ה כמותית אחת, שהיא קטנה יותר מהטבלה שלמעלה, אבל לוקחת 38 אלפיות השנייה לכל הטמעה.
  • לקורפוס הטקסט.

אחרי השלב הזה, צריך להיות לכם מודל נפרד לחיפוש באמצעות TFLite (למשל, mobilenet_v3_searcher.tflite), שהוא המודל המקורי של כלי הטמעת הטקסט עם את האינדקס שמצורף מטא-נתונים של מודל TFLite.

הרצת ההסקה ב-Java

שלב 1: מייבאים תלות ב-Gradle והגדרות אחרות

מעתיקים את קובץ המודל של מכשיר החיפוש .tflite לספריית הנכסים של Android. שבו המודל יפעל. לציין שהקובץ לא יכול להיות דחוסה ומוסיפים את ספריית TensorFlow Lite לbuild.gradle של המודול file:

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
    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 מסוג Pypi.

אפשר להתקין את חבילת Pypi לתמיכה של TensorFlow Lite באמצעות הפקודה:

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 את המודל ונתוני הבדיקה שלכם.