Metin yerleştiriciler, metinlerin semantik anlamını temsil eden yüksek boyutlu bir özellik vektörüne yerleştirilmesine olanak tanır. Bu vektör daha sonra diğer metinlerin özellik vektörüyle karşılaştırılarak semantik benzerlikleri değerlendirilebilir.
Metin aramanın aksine, metin yerleştirici, bir derlemden oluşturulan önceden tanımlanmış bir dizinde arama yapmak yerine metinler arasındaki benzerliğin anında hesaplanmasına olanak tanır.
Özel metin yerleştirme aracınızı mobil uygulamalarınıza dağıtmak için Görev Kitaplığı TextEmbedder API'sini kullanın.
TextEmbedder API'nin temel özellikleri
Giriş metnindeki grafik içi veya grafik dışı Wordpiece ya da Sentencepiece belirteçleştirme dahil olmak üzere giriş metni işleme.
Özellik vektörleri arasındaki kosinüs benzerliğini hesaplamak için yerleşik yardımcı işlev.
Desteklenen metin yerleştirme modelleri
Aşağıdaki modellerin TextEmbedder
API ile uyumlu olduğu garanti edilir.
TensorFlow Hub'daki Universal Sentence Encoder TFLite modeli
Model uyumluluğu koşullarını karşılayan özel modeller.
C++'ta çıkarım çalıştırma
// 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());
TextEmbedder yapılandırmayla ilgili diğer seçenekler için kaynak koduna bakın.
Python'da çıkarım çalıştırma
1. adım: TensorFlow Lite Support Pypi paketini yükleyin.
Aşağıdaki komutu kullanarak TensorFlow Lite Support Pypi paketini yükleyebilirsiniz:
pip install tflite-support
2. adım: Modeli kullanma
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)
TextEmbedder yapılandırmayla ilgili diğer seçenekler için kaynak koduna bakın.
Örnek sonuçlar
Normallenmiş özellik vektörleri arasındaki kosinüs benzerliği, -1 ile 1 arasında bir puan döndürür. Değer ne kadar yüksek olursa o kadar iyidir. Örneğin, kosinüs benzerliğinin 1 olması iki vektörün aynı olduğu anlamına gelir.
Cosine similarity: 0.954312
Kendi modeliniz ve test verilerinizle basit TextEmbedder için KSA demo aracını deneyin.
Model uyumluluğu koşulları
TextEmbedder API, zorunlu TFLite Model Metadata içeren bir TFLite modeli bekler.
Üç ana model türü desteklenir:
BERT tabanlı modeller (daha fazla bilgi için kaynak koduna bakın):
Tam olarak 3 giriş tensörü (kTfLiteString)
Meta veri adı "ids" olan IDs tensörü,
Meta veri adı "mask" olan maske tensörü.
"segment_ids" meta veri adını içeren segment kimlikleri tensörü
Tam olarak bir çıkış tensörü (kTfLiteUInt8/kTfLiteFloat32)
Bu çıkış katmanı için döndürülen özellik vektörünün
Nboyutlarına karşılık gelenNbileşenle.2 veya 4 boyut, yani
[1 x N]veya[1 x 1 x 1 x N].Wordpiece/Sentencepiece Tokenizer için input_process_units
Universal Sentence Encoder tabanlı modeller (daha fazla bilgi için kaynak koduna bakın):
Tam olarak 3 giriş tensörü (kTfLiteString)
"inp_text" meta veri adını içeren sorgu metni tensörü.
Meta veri adı "res_context" olan yanıt bağlamı tensörü.
Meta veri adı "res_text" olan yanıt metni tensörü.
Tam olarak 2 çıkış tensörü (kTfLiteUInt8/kTfLiteFloat32)
Meta veri adı "query_encoding" olan sorgu kodlama tensörü.
Meta veri adı "response_encoding" olan yanıt kodlama tensörü.
Her ikisi de bu çıkış katmanı için döndürülen özellik vektörünün
Nboyutlarına karşılık gelenNbileşenleriyle.Her ikisi de 2 veya 4 boyutlu olmalıdır (ör.
[1 x N]veya[1 x 1 x 1 x N]).
Aşağıdaki özelliklere sahip herhangi bir metin yerleştirme modeli:
- Giriş metni tensörü (kTfLiteString)
En az bir çıkış yerleştirme tensörü (kTfLiteUInt8/kTfLiteFloat32)
Bu çıkış katmanı için döndürülen özellik vektörünün
Nboyutlarına karşılık gelenNbileşenle.2 veya 4 boyut, yani
[1 x N]veya[1 x 1 x 1 x N].