Gli incorporatori di testo consentono di incorporare testo in un vettore di caratteristiche ad alta dimensionalità che ne rappresenta il significato semantico, che può quindi essere confrontato con la caratteristica vettore di altri testi per valutarne la somiglianza semantica.
Al contrario di ricerca testuale, l'incorporamento del testo consente di calcolare all'istante la somiglianza tra i testi anziché cercare in un indice predefinito creato da un corpus.
Usa l'API TextEmbedder
della libreria di attività per eseguire il deployment dell'incorporamento di testo personalizzato in
le tue app mobile.
Funzionalità chiave dell'API TextEmbedder
Elaborazione del testo di input, incluso all'interno o fuori dal grafico Parrucchiere o Fondamentale tokenizzazioni sul testo di input.
Funzione di utilità integrata per calcolare somiglianza coseno tra vettori di caratteristiche.
Modelli di incorporamento di testo supportati
La compatibilità dei seguenti modelli è garantita con TextEmbedder
tramite Google Cloud CLI
o tramite l'API Compute Engine.
La Modello TFLite del codificatore di frasi universale da TensorFlow Hub
Modelli personalizzati che soddisfano requisiti di compatibilità dei modelli.
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());
Consulta le
codice sorgente
per altre opzioni di configurazione di TextEmbedder
.
Esegui l'inferenza in Python
Passaggio 1: installa il pacchetto Pypi di assistenza TensorFlow Lite
Puoi installare il pacchetto Pypi di assistenza TensorFlow Lite utilizzando quanto segue :
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)
Consulta le
codice sorgente
per altre opzioni di configurazione di TextEmbedder
.
Risultati di esempio
La somiglianza coseno tra vettori di caratteristiche normalizzati restituisce un punteggio compreso tra -1 e 1. Maggiore è meglio, cioè una somiglianza coseno di 1 significa che i due vettori sono identici.
Cosine similarity: 0.954312
Prova la semplice Strumento dimostrativo dell'interfaccia a riga di comando per TextEmbedder con il tuo modello e dati di test.
Requisiti di compatibilità del modello
L'API TextEmbedder
prevede un modello TFLite con requisiti obbligatori
Metadati del modello TFLite.
Sono supportati tre tipi principali di modelli:
basati su BERT (vedi codice sorgente per ulteriori dettagli):
Esattamente 3 tensori di input (kTfLiteString)
- tensore ID, con nome metadati "ids",
- Tensore della maschera, con il nome dei metadati "mask".
- Tensore di ID segmento, con nome dei metadati "segment_ids"
Esattamente un tensore di output (kTfLiteUInt8/kTfLiteFloat32)
- con
N
componenti corrispondenti alle dimensioniN
del vettore di caratteristiche restituito per questo livello di output. - Due o quattro dimensioni, ad esempio
[1 x N]
o[1 x 1 x 1 x N]
.
- con
Un input_process_units per il tokenizzatore di pezzi di testo/frasi
Modelli basati su Universal Sentence Encoder (vedi codice sorgente per ulteriori dettagli):
Esattamente 3 tensori di input (kTfLiteString)
- Tensore di testo della query, con nome metadati "inp_text".
- Tensore di contesto della risposta, con nome dei metadati "res_context".
- Tensore del testo della risposta, con il nome 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 metadati "response_encoding".
- Entrambi con componenti
N
corrispondenti alle dimensioniN
del vettore di caratteristiche restituito per questo livello di output. - Entrambe con 2 o 4 dimensioni, ad esempio
[1 x N]
o[1 x 1 x 1 x N]
.
Qualsiasi modello di incorporamento di testo con:
- Un tensore di testo di input (kTfLiteString)
Almeno un tensore di incorporamento di output (kTfLiteUInt8/kTfLiteFloat32)
- con
N
componenti corrispondenti alle dimensioniN
del vettore di caratteristiche restituito per questo livello di output. - Due o quattro dimensioni, ad esempio
[1 x N]
o[1 x 1 x 1 x N]
.
- con