Penyemat teks memungkinkan penyematan teks ke dalam vektor fitur dimensi tinggi yang mewakili makna semantiknya, yang kemudian dapat dibandingkan dengan vektor fitur teks lain untuk mengevaluasi kesamaan semantiknya.
Berbeda dengan pencarian teks , penyemat teks memungkinkan komputasi kesamaan antara teks on-the-fly alih-alih mencari melalui indeks yang telah ditentukan yang dibangun dari corpus.
Gunakan API TextEmbedder
Perpustakaan Tugas untuk menerapkan penyemat teks kustom Anda ke dalam aplikasi seluler Anda.
Fitur utama dari TextEmbedder API
Pemrosesan teks input, termasuk tokenisasi Wordpiece atau Sentencepiece in-graph atau out-of-graph pada teks input.
Fungsi utilitas bawaan untuk menghitung kesamaan kosinus antara vektor fitur.
Model penyemat teks yang didukung
Model berikut dijamin kompatibel dengan TextEmbedder
API.
Model khusus yang memenuhi persyaratan kompatibilitas model .
Jalankan inferensi di C++
// Initialization.
TextEmbedderOptions options:
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<TextEmbedder> text_embedder = TextEmbedder::CreateFromOptions(options).value();
// Run inference with your two inputs, `input_text1` and `input_text2`.
const EmbeddingResult result_1 = text_embedder->Embed(input_text1);
const EmbeddingResult result_2 = text_embedder->Embed(input_text2);
// Compute cosine similarity.
double similarity = TextEmbedder::CosineSimilarity(
result_1.embeddings[0].feature_vector()
result_2.embeddings[0].feature_vector());
Lihat kode sumber untuk opsi lebih lanjut untuk mengonfigurasi TextEmbedder
.
Jalankan inferensi dengan Python
Langkah 1: Instal paket Pypi Dukungan TensorFlow Lite.
Anda dapat menginstal paket TensorFlow Lite Support Pypi menggunakan perintah berikut:
pip install tflite-support
Langkah 2: Menggunakan model
from tflite_support.task import text
# Initialization.
text_embedder = text.TextEmbedder.create_from_file(model_path)
# Run inference on two texts.
result_1 = text_embedder.embed(text_1)
result_2 = text_embedder.embed(text_2)
# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = text_embedder.cosine_similarity(
result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)
Lihat kode sumber untuk opsi lebih lanjut untuk mengonfigurasi TextEmbedder
.
Contoh hasil
Kesamaan kosinus antara vektor fitur yang dinormalisasi menghasilkan skor antara -1 dan 1. Semakin tinggi semakin baik, yaitu kesamaan kosinus 1 berarti kedua vektor identik.
Cosine similarity: 0.954312
Cobalah alat demo CLI sederhana untuk TextEmbedder dengan model dan data uji Anda sendiri.
Persyaratan kompatibilitas model
API TextEmbedder
mengharapkan model TFLite dengan Metadata Model TFLite wajib .
Tiga jenis model utama yang didukung:
Model berbasis BERT (lihat kode sumber untuk lebih jelasnya):
Tepat 3 input tensor (kTfLiteString)
- Tensor ID, dengan nama metadata "id",
- Mask tensor, dengan nama metadata "mask".
- Tensor ID segmen, dengan nama metadata "segment_ids"
Tepat satu tensor keluaran (kTfLiteUInt8/kTfLiteFloat32)
- dengan
N
komponen yang sesuai dengan dimensiN
dari vektor fitur yang dikembalikan untuk lapisan keluaran ini. - Baik 2 atau 4 dimensi, yaitu
[1 x N]
atau[1 x 1 x 1 x N]
.
- dengan
Sebuah input_process_units untuk Wordpiece/Sentencepiece Tokenizer
Model berbasis Universal Sentence Encoder (lihat kode sumber untuk lebih jelasnya):
Tepat 3 input tensor (kTfLiteString)
- Tensor teks kueri, dengan nama metadata "inp_text".
- Tensor konteks respons, dengan nama metadata "res_context".
- Tensor teks respons, dengan nama metadata "res_text".
Tepat 2 tensor keluaran (kTfLiteUInt8/kTfLiteFloat32)
- Tensor encoding kueri, dengan nama metadata "query_encoding".
- Tensor encoding respons, dengan nama metadata "response_encoding".
- Keduanya dengan komponen
N
yang sesuai dengan dimensiN
dari vektor fitur yang dikembalikan untuk lapisan keluaran ini. - Baik dengan 2 atau 4 dimensi, yaitu
[1 x N]
atau[1 x 1 x 1 x N]
.
Model penyemat teks apa pun dengan:
- Tensor teks input (kTfLiteString)
Setidaknya satu tensor penyematan keluaran (kTfLiteUInt8/kTfLiteFloat32)
- dengan
N
komponen yang sesuai dengan dimensiN
dari vektor fitur yang dikembalikan untuk lapisan keluaran ini. - Baik 2 atau 4 dimensi, yaitu
[1 x N]
atau[1 x 1 x 1 x N]
.
- dengan