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

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

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

از Task Library TextSearcher API برای استقرار جستجوگر متن سفارشی خود در برنامه های تلفن همراه خود استفاده کنید.

ویژگی های کلیدی TextSearcher API

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

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

پیش نیازها

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

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

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

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

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

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

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

مرحله 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);

برای گزینه های بیشتر برای پیکربندی 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

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