Gli incorporatori di testo consentono di incorporare il testo in un vettore di funzionalità ad alta dimensione che ne rappresenta il significato semantico, che può quindi essere confrontato con il vettore di funzionalità di altri testi per valutarne la somiglianza semantica.
A differenza della ricerca di testo , l'embedder di testo consente di calcolare la somiglianza tra i testi al volo invece di cercare attraverso un indice predefinito costruito da un corpus.
Usa l'API TextEmbedder
della libreria delle attività per distribuire il tuo incorporamento di testo personalizzato nelle tue app mobili.
Caratteristiche principali dell'API TextEmbedder
Elaborazione del testo di input, inclusa la tokenizzazione di Wordpiece o Sentencepiece nel grafico o fuori dal grafico sul testo di input.
Funzione di utilità incorporata per calcolare la somiglianza del coseno tra i vettori delle caratteristiche.
Modelli di incorporamento di testo supportati
I seguenti modelli sono garantiti per essere compatibili con l'API TextEmbedder
.
Il modello Universal Sentence Encoder TFLite di TensorFlow Hub
Modelli personalizzati che soddisfano i requisiti di compatibilità del modello .
Esegui l'inferenza in 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());
Vedere il codice sorgente per ulteriori opzioni per configurare TextEmbedder
.
Esegui l'inferenza in Python
Passaggio 1: installare il pacchetto Pypi di supporto TensorFlow Lite.
È possibile installare il pacchetto TensorFlow Lite Support Pypi utilizzando il comando seguente:
pip install tflite-support
Passaggio 2: utilizzo del modello
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)
Vedere il codice sorgente per ulteriori opzioni per configurare TextEmbedder
.
Risultati di esempio
La somiglianza del coseno tra i vettori delle caratteristiche normalizzate restituisce un punteggio compreso tra -1 e 1. Più alto è meglio, ovvero una somiglianza del coseno di 1 significa che i due vettori sono identici.
Cosine similarity: 0.954312
Prova il semplice strumento demo CLI per TextEmbedder con il tuo modello e i tuoi dati di prova.
Requisiti di compatibilità del modello
L'API TextEmbedder
prevede un modello TFLite con metadati del modello TFLite obbligatori.
Sono supportati tre tipi principali di modelli:
Modelli basati su BERT (vedi codice sorgente per maggiori dettagli):
Esattamente 3 tensori di ingresso (kTfLiteString)
- Tensore di ID, con nome di metadati "ids",
- Tensore di maschera, con nome di metadati "maschera".
- Tensore degli ID segmento, con nome dei metadati "segment_ids"
Esattamente un tensore di uscita (kTfLiteUInt8/kTfLiteFloat32)
- con
N
componenti corrispondenti alleN
dimensioni del vettore di feature restituito per questo livello di output. - 2 o 4 dimensioni, cioè
[1 x N]
o[1 x 1 x 1 x N]
.
- con
Un input_process_units per il token di Wordpiece/Sentencepiece
Modelli basati su Universal Sentence Encoder (vedi codice sorgente per maggiori dettagli):
Esattamente 3 tensori di ingresso (kTfLiteString)
- Cerca il tensore del testo, con il nome dei metadati "inp_text".
- Tensore del contesto della risposta, con nome dei metadati "res_context".
- Tensore del testo di risposta, con nome dei metadati "res_text".
Esattamente 2 tensori di uscita (kTfLiteUInt8/kTfLiteFloat32)
- Tensore di codifica delle query, con nome dei metadati "query_encoding".
- Tensore di codifica della risposta, con nome dei metadati "response_encoding".
- Entrambi con
N
componenti corrispondenti alleN
dimensioni del vettore di feature restituito per questo livello di output. - Entrambi con 2 o 4 dimensioni, ovvero
[1 x N]
o[1 x 1 x 1 x N]
.
Qualsiasi modello di incorporamento di testo con:
- Un tensore del testo di input (kTfLiteString)
Almeno un tensore di incorporamento dell'uscita (kTfLiteUInt8/kTfLiteFloat32)
- con
N
componenti corrispondenti alleN
dimensioni del vettore di feature restituito per questo livello di output. - 2 o 4 dimensioni, cioè
[1 x N]
o[1 x 1 x 1 x N]
.
- con