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.