Metin arayan kullanıcıları entegre edin

Metin araması, bir derlemede semantik olarak benzer metinleri aramanıza olanak tanır. Bu hizmet, arama sorgusunu sorgunun anlamsal anlamını temsil eden yüksek boyutlu bir vektöre yerleştirerek çalışır. Ardından, ScaNN (Ölçeklenebilir En Yakın Komşular) kullanılarak önceden tanımlanmış özel bir dizinde benzerlik araması yapılır.

Metin sınıflandırmanın (ör. Bert doğal dil sınıflandırıcısı) aksine, tanınabilecek öğe sayısını artırmak için modelin tamamının yeniden eğitilmesi gerekmez. Yeni öğeler, dizin yeniden oluşturularak kolayca eklenebilir. Bu, daha büyük (100.000'den fazla öğe) derlemlerle çalışmayı da mümkün kılar.

Özel metin arayıcınızı mobil uygulamalarınıza dağıtmak için Görev Kitaplığı TextSearcher API'sini kullanın.

TextSearcher API'nin temel özellikleri

  • Tek bir dizeyi girdi olarak alır, yerleştirme çıkarma ve dizinde en yakın komşu araması gerçekleştirir.

  • Giriş metnindeki grafik içi veya grafik dışı Wordpiece ya da Sentencepiece belirteçleştirme dahil olmak üzere giriş metni işleme.

Ön koşullar

TextSearcher API'sini kullanmadan önce, aranacak özel metin gövdesine dayalı bir dizin oluşturulması gerekir. Bu, Model Maker Searcher API kullanılarak ve eğiticiyi takip edip uyarlayarak yapılabilir.

Bunun için ihtiyacınız olanlar:

  • Evrensel Cümle Kodlayıcı gibi bir TFLite metin yerleştirme modeli. Örneğin,
    • Cihaz üzerinde çıkarım için optimize edilmiş bu Colab'de yeniden eğitilen bir model. Pixel 6'da bir metin dizesini sorgulamak yalnızca 6 ms sürer.
    • Yukarıdakinden daha küçük olan ancak her yerleştirme için 38 ms süren nicelendirilmiş model.
  • metin derleminiz.

Bu adımdan sonra, dizinin TFLite Model Meta Verileri'ne eklenmiş olduğu orijinal metin yerleştirme modeli olan bağımsız bir TFLite arama modeli (ör. mobilenet_v3_searcher.tflite) elde etmeniz gerekir.

Java'da çıkarım çalıştırma

1. adım: Gradle bağımlılığını ve diğer ayarları içe aktarın

.tflite arama modeli dosyasını, modelin çalıştırılacağı Android modülünün öğeler dizinine kopyalayın. Dosyanın sıkıştırılmaması gerektiğini belirtin ve TensorFlow Lite kitaplığını modülün build.gradle dosyasına ekleyin:

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. adım: Modeli kullanma

// 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 yapılandırmayla ilgili daha fazla seçenek için kaynak kodu ve javadoc'a bakın.

C++'ta çıkarım çalıştırma

// 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 yapılandırmayla ilgili diğer seçenekler için kaynak koduna bakın.

Python'da çıkarım çalıştırma

1. adım: TensorFlow Lite Support Pypi paketini yükleyin.

Aşağıdaki komutu kullanarak TensorFlow Lite Support Pypi paketini yükleyebilirsiniz:

pip install tflite-support

2. adım: Modeli kullanma

from tflite_support.task import text

# Initialization
text_searcher = text.TextSearcher.create_from_file(model_path)

# Run inference
result = text_searcher.search(text)

TextSearcher yapılandırmayla ilgili diğer seçenekler için kaynak koduna bakın.

Örnek sonuçlar

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

TextSearcher için basit CLI demo aracını kendi modeliniz ve test verilerinizle deneyin.