جستجوگرهای متن را ادغام کنید

جستجوی متن امکان جستجوی متن‌های دارای تشابه معنایی را در یک مجموعه داده فراهم می‌کند. این روش با جاسازی عبارت جستجو در یک بردار با ابعاد بالا که نمایانگر معنای معنایی عبارت جستجو است، و به دنبال آن جستجوی شباهت در یک شاخص از پیش تعریف شده و سفارشی با استفاده از ScaNN (نزدیک‌ترین همسایه‌های مقیاس‌پذیر) انجام می‌شود.

برخلاف طبقه‌بندی متن (مثلاً طبقه‌بندی‌کننده زبان طبیعی برت )، افزایش تعداد مواردی که می‌توانند تشخیص داده شوند، نیازی به آموزش مجدد کل مدل ندارد. موارد جدید را می‌توان به سادگی با بازسازی شاخص اضافه کرد. این امر همچنین امکان کار با مجموعه‌های بزرگتر (بیش از ۱۰۰ هزار مورد) را فراهم می‌کند.

از API TextSearcher کتابخانه وظایف برای پیاده‌سازی جستجوگر متن سفارشی خود در برنامه‌های تلفن همراه خود استفاده کنید.

ویژگی‌های کلیدی API جستجوی متن (TextSearcher)

  • یک رشته واحد را به عنوان ورودی می‌گیرد، استخراج جاسازی و جستجوی نزدیکترین همسایه را در اندیس انجام می‌دهد.

  • پردازش متن ورودی، شامل توکن‌سازی‌های درون‌نموداری یا برون‌نموداری متن ورودی برای قطعه‌ی کلمه یا جمله .

پیش‌نیازها

قبل از استفاده از API TextSearcher ، باید یک فهرست بر اساس مجموعه متن سفارشی برای جستجو ساخته شود. این کار را می‌توان با استفاده از Model Maker Searcher API و با دنبال کردن و تطبیق آموزش انجام داد.

برای این کار به موارد زیر نیاز خواهید داشت:

  • یک مدل جاسازی متن TFLite، مانند رمزگذار جمله جهانی. برای مثال،
    • موردی که در این Colab آموزش مجدد داده شده است، که برای استنتاج روی دستگاه بهینه شده است. پرس و جوی یک رشته متنی در Pixel 6 تنها 6 میلی‌ثانیه طول می‌کشد.
    • نوع کوانتیزه شده ، که از مورد بالا کوچکتر است اما برای هر جاسازی ۳۸ میلی‌ثانیه زمان می‌برد.
  • مجموعه متن شما.

پس از این مرحله، شما باید یک مدل جستجوگر مستقل TFLite (مثلاً mobilenet_v3_searcher.tflite ) داشته باشید که مدل جاسازی متن اصلی با اندیس متصل به متاداده مدل TFLite است.

اجرای استنتاج در جاوا

مرحله ۱: وارد کردن وابستگی Gradle و سایر تنظیمات

فایل مدل .tflite searcher را در دایرکتوری assets ماژول اندروید که مدل در آن اجرا خواهد شد، کپی کنید. مشخص کنید که فایل نباید فشرده شود و کتابخانه 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
    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'
}

مرحله ۲: استفاده از مدل

// 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);

برای گزینه‌های بیشتر برای پیکربندی TextSearcher به کد منبع و javadoc مراجعه کنید.

اجرای استنتاج در ++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 به کد منبع مراجعه کنید.

اجرای استنتاج در پایتون

مرحله 1: بسته TensorFlow Lite Support Pypi را نصب کنید.

شما می‌توانید بسته TensorFlow Lite Support Pypi را با استفاده از دستور زیر نصب کنید:

pip install tflite-support

مرحله ۲: استفاده از مدل

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 را با مدل و داده‌های آزمایشی خودتان امتحان کنید.