Penelusuran teks memungkinkan penelusuran teks yang memiliki kemiripan semantik dalam korpus. Fitur ini berfungsi dengan menyematkan kueri penelusuran ke dalam vektor berdimensi tinggi yang merepresentasikan makna semantik kueri, diikuti dengan penelusuran kemiripan dalam indeks kustom yang telah ditentukan sebelumnya menggunakan ScaNN (Scalable Nearest Neighbors).
Berbeda dengan klasifikasi teks (misalnya, pengklasifikasi natural language Bert), memperluas jumlah item yang dapat dikenali tidak memerlukan pelatihan ulang seluruh model. Item baru dapat ditambahkan hanya dengan membangun ulang indeks. Hal ini juga memungkinkan bekerja dengan korpus yang lebih besar (lebih dari 100 ribu item).
Gunakan API TextSearcher Task Library untuk men-deploy penelusur teks kustom ke dalam aplikasi seluler Anda.
Fitur utama TextSearcher API
Mengambil satu string sebagai input, melakukan ekstraksi embedding dan penelusuran tetangga terdekat dalam indeks.
Pemrosesan teks input, termasuk tokenisasi Wordpiece dalam grafik atau di luar grafik atau tokenisasi Sentencepiece pada teks input.
Prasyarat
Sebelum menggunakan TextSearcher API, indeks perlu dibuat berdasarkan korpus teks kustom yang akan ditelusuri. Hal ini dapat dilakukan menggunakan Model Maker
Searcher
API
dengan mengikuti dan menyesuaikan tutorial.
Untuk melakukannya, Anda akan memerlukan:
- model penyematan teks TFLite, seperti Universal Sentence Encoder. Misalnya,
- satu yang dilatih ulang di Colab ini, yang dioptimalkan untuk inferensi di perangkat. Hanya perlu 6 md untuk membuat kueri string teks di Pixel 6.
- yang terkuantisasi, yang lebih kecil dari di atas, tetapi memerlukan waktu 38 md untuk setiap penyematan.
- korpus teks Anda.
Setelah langkah ini, Anda akan memiliki model penelusuran TFLite mandiri (misalnya,
mobilenet_v3_searcher.tflite), yang merupakan model penyematan teks asli dengan
indeks yang dilampirkan ke Metadata Model
TFLite.
Menjalankan inferensi di Java
Langkah 1: Impor dependensi Gradle dan setelan lainnya
Salin file model penelusur .tflite ke direktori aset modul Android tempat model akan dijalankan. Tentukan bahwa file tidak boleh dikompresi, dan tambahkan library TensorFlow Lite ke file build.gradle modul:
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'
}
Langkah 2: Menggunakan model
// 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);
Lihat kode sumber dan
javadoc
untuk opsi lainnya dalam mengonfigurasi TextSearcher.
Menjalankan inferensi di C++
// 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();
Lihat kode
sumber
untuk opsi lainnya dalam mengonfigurasi TextSearcher.
Menjalankan inferensi di Python
Langkah 1: Instal paket Pypi Dukungan TensorFlow Lite.
Anda dapat menginstal paket Pypi Dukungan TensorFlow Lite menggunakan perintah berikut:
pip install tflite-support
Langkah 2: Menggunakan model
from tflite_support.task import text
# Initialization
text_searcher = text.TextSearcher.create_from_file(model_path)
# Run inference
result = text_searcher.search(text)
Lihat kode
sumber
untuk opsi lainnya guna mengonfigurasi TextSearcher.
Hasil contoh
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
Coba alat demo CLI sederhana untuk TextSearcher dengan model dan data pengujian Anda sendiri.