Metin gömücüler, metnin semantik anlamını temsil eden yüksek boyutlu bir özellik vektörüne gömülmesine olanak tanır; bu daha sonra anlamsal benzerliklerini değerlendirmek için diğer metinlerin özellik vektörüyle karşılaştırılabilir.
Metin aramanın aksine, metin yerleştirici, bir bütünceden 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ştiricinizi mobil uygulamalarınıza dağıtmak için Görev Kitaplığı TextEmbedder
API'sini kullanın.
TextEmbedder API'sinin temel özellikleri
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.
Özellik vektörleri arasındaki kosinüs benzerliğini hesaplamak için yerleşik yardımcı fonksiyon.
Desteklenen metin yerleştirme modelleri
Aşağıdaki modellerin TextEmbedder
API ile uyumlu olduğu garanti edilir.
Model uyumluluk gereksinimlerini karşılayan özel modeller.
Çıkarımı C++'da ç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ı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_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ırmaya yönelik daha fazla seçenek için kaynak koduna bakın.
Örnek sonuçlar
Normalleştirilmiş özellik vektörleri arasındaki kosinüs benzerliği, -1 ile 1 arasında bir puan döndürür. Ne kadar yüksek olursa o kadar iyidir, yani 1'lik bir kosinüs benzerliği, iki vektörün aynı olduğu anlamına gelir.
Cosine similarity: 0.954312
TextEmbedder için basit CLI demo aracını kendi modeliniz ve test verilerinizle deneyin.
Model uyumluluk gereksinimleri
TextEmbedder
API, zorunlu TFLite Model Meta Verilerine sahip bir TFLite modeli bekler.
Üç ana model türü desteklenir:
BERT tabanlı modeller (daha fazla ayrıntı için kaynak koduna bakın):
Tam olarak 3 giriş tensörü (kTfLiteString)
- Meta veri adı "ids" olan kimlik tensörü,
- Meta veri adı "maske" olan maske tensörü.
- Segment kimlikleri tensörü, meta veri adı "segment_ids"
Tam olarak bir çıkış tensörü (kTfLiteUInt8/kTfLiteFloat32)
- bu çıktı katmanı için döndürülen özellik vektörünün
N
boyutuna karşılık gelenN
bileşenle. - 2 veya 4 boyut, yani
[1 x N]
veya[1 x 1 x 1 x N]
.
- bu çıktı katmanı için döndürülen özellik vektörünün
Kelime Parçası/Cümle Parçası Belirteci için bir input_process_units
Evrensel Cümle Kodlayıcı tabanlı modeller (daha fazla ayrıntı için kaynak koduna bakın):
Tam olarak 3 giriş tensörü (kTfLiteString)
- Meta veri adı "inp_text" olan metin tensörünü sorgulayın.
- "res_context" meta veri adına sahip yanıt bağlamı tensörü.
- "res_text" meta veri adına sahip yanıt metni tensörü.
Tam olarak 2 çıkış tensörü (kTfLiteUInt8/kTfLiteFloat32)
- Meta veri adı "query_encoding" olan kodlama tensörü sorgulayın.
- "response_encoding" meta veri adına sahip yanıt kodlama tensörü.
- Her ikisi de bu çıktı katmanı için döndürülen özellik vektörünün
N
boyutuna karşılık gelenN
bileşene sahiptir. - Her ikisi de 2 veya 4 boyutludur, yani
[1 x N]
veya[1 x 1 x 1 x N]
.
Aşağıdaki özelliklere sahip herhangi bir metin yerleştirme modeli:
- Bir giriş metni tensörü (kTfLiteString)
En az bir çıkış gömme tensörü (kTfLiteUInt8/kTfLiteFloat32)
- bu çıktı katmanı için döndürülen özellik vektörünün
N
boyutuna karşılık gelenN
bileşenle. - 2 veya 4 boyut, yani
[1 x N]
veya[1 x 1 x 1 x N]
.
- bu çıktı katmanı için döndürülen özellik vektörünün