Metin arayanları entegre edin

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Metin araması, bir derlemde anlamsal olarak benzer metin aramaya izin verir. 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 (örneğin Bert doğal dil sınıflandırıcı ) aksine, tanınabilen öğelerin sayısını artırmak, tüm modelin yeniden eğitilmesini gerektirmez. Dizin yeniden oluşturularak yeni öğeler eklenebilir. Bu aynı zamanda daha büyük (100k+ öğe) korpuslarla çalışmayı da sağlar.

Özel metin arama aracınızı mobil uygulamalarınıza dağıtmak için Task Library TextSearcher API'sini kullanın.

TextSearcher API'sinin temel özellikleri

  • Girdi 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 dahil olmak üzere giriş metni işleme.

Önkoşullar

TextSearcher API'sini kullanmadan önce, aranacak özel metin korpusunu temel alan bir dizin oluşturulmalıdır. Bu, öğreticiyi takip ederek ve 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 gömme modeli. Örneğin,
    • Bu Colab'da yeniden eğitilen ve cihazda çıkarım için optimize edilmiş olan. Pixel 6'da bir metin dizesini sorgulamak yalnızca 6 ms sürer.
    • yukarıdakinden daha küçük olan ancak her gömme için 38 ms süren nicelleştirilmiş olan.
  • metin yapınız.

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

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

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

.tflite searcher model dosyasını, modelin çalıştırılacağı Android modülünün varlıklar 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.0'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.0'
}

Adım 2: 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ırmak için daha fazla seçenek için kaynak koduna ve javadoc'a bakın.

Çıkarımı C++ ile çalıştırın

// 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ırmak için daha fazla seçenek için kaynak koduna bakın.

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

Adım 1: TensorFlow Lite Support Pypi paketini kurun.

TensorFlow Lite Support Pypi paketini aşağıdaki komutu kullanarak kurabilirsiniz:

pip install tflite-support

Adım 2: 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ırmak için 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

Kendi model ve test verilerinizle TextSearcher için basit CLI demo aracını deneyin.