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.