Metin arayanları entegre edin

Metin arama, bir derlemde anlamsal olarak benzer metinlerin aranmasına olanak tanır. Arama sorgusunu, sorgunun anlamsal anlamını temsil eden yüksek boyutlu bir vektöre gömerek ve ardından ScaNN (Ölçeklenebilir En Yakın Komşular) kullanarak önceden tanımlanmış, özel bir dizinde benzerlik araması yaparak çalışır.

Metin sınıflandırmasının (örn. Bert doğal dil sınıflandırıcısı ) aksine, tanınabilecek öğelerin sayısını artırmak tüm modelin yeniden eğitilmesini gerektirmez. Dizini yeniden oluşturarak yeni öğeler eklenebilir. Bu aynı zamanda daha büyük (100.000'den fazla öğe) derlemlerle çalışmayı da mümkün kılar.

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

TextSearcher API'sinin temel özellikleri

  • Giriş olarak tek bir dize alır, dizine gömme çıkarma ve en yakın komşu araması gerçekleştirir.

  • Giriş metninde grafik içi veya grafik dışı Sözcük Parçası veya Cümle Parçası belirteçleri de dahil olmak üzere giriş metni işleme.

Önkoşullar

TextSearcher API'sini kullanmadan önce, aranacak özel metin topluluğuna dayalı bir dizin oluşturulması gerekir. Bu, öğreticiyi takip edip uyarlayarak Model Maker Searcher API kullanılarak gerçekleştirilebilir.

Bunun için ihtiyacınız olacak:

  • Evrensel Cümle Kodlayıcı gibi bir TFLite metin yerleştirme modeli. Örneğin,
    • cihaz üzerinde çıkarım için optimize edilen bu Colab'da yeniden eğitilen kişi . Pixel 6'da bir metin dizesini sorgulamak yalnızca 6 ms sürer.
    • yukarıdakilerden daha küçük olan ancak her yerleştirme için 38 ms süren nicelenmiş olan .
  • metin külliyatınız.

Bu adımdan sonra, TFLite Model Meta Verilerine eklenen indeksle birlikte orijinal metin yerleştirme modeli olan bağımsız bir TFLite arama modeline (örn. mobilenet_v3_searcher.tflite ) sahip olmalısınız.

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

Adım 1: 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 asset 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 (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'
}

Adım 2: Modelin kullanılması

// 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ırmaya yönelik daha fazla seçenek için kaynak koduna ve javadoc'a bakın.

Çıkarımı C++'da ç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ırmaya yönelik daha fazla seçenek için kaynak koduna bakın.

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

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

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

pip install tflite-support

Adım 2: Modelin kullanılması

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ırmaya yönelik daha fazla seçenek 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.