Utilice modelos de incrustación para crear incrustaciones de texto que capturen el significado de una oración o un pasaje. Puede utilizar estos modelos con clasificadores como máquinas de vectores de soporte. La incorporación de modelos también puede ayudarle con tareas de generación de recuperación aumentada.
El siguiente diagrama ilustra el patrón de generación de recuperación aumentada con soporte de incorporación.
El patrón de generación de recuperación aumentada con soporte de incorporación implica los siguientes pasos:
- Convierta su contenido en incrustaciones de texto y guárdelos en un almacén de datos vectoriales.
- Utilice el mismo modelo de incrustación para convertir la entrada del usuario en incrustaciones de texto.
- Ejecute una búsqueda semántica o de similitud en su base de conocimientos para encontrar contenido relacionado con la pregunta de un usuario.
- Introduzca los resultados de búsqueda más relevantes en su mensaje como contexto y agregue una instrucción, como "Responda la siguiente pregunta utilizando solo información de los siguientes pasajes".
- Enviar el texto de consulta combinado (instrucción + resultados de búsqueda + pregunta) al modelo de base.
- El modelo básico utiliza la información contextual de la pregunta para generar una respuesta objetiva.
Para obtener más información, consulte:
USAR incrustaciones
Las incrustaciones de USE son envoltorios Google Incorporaciones de Universal Sentence Encoder que están disponibles en TFHub. Estas inclusiones se utilizan en el algoritmo SVM de clasificación de documentos. Para consultar la lista de incrustaciones de USE preformadas y las lenguas que admiten, véase " Incluidas las incrustaciones de USE preentrenadas
Cuando utilice las inclusiones de USE, tenga en cuenta lo siguiente:
Seleccione
embedding_use_en_stock
si la tarea implica texto en inglés.Elija una de las inclusiones de USE multilingües si la tarea incluye texto en un idioma que no sea inglés, o si desea entrenar modelos multilingües.
Las inclusiones de USE exhiben diferentes compensaciones entre la calidad del modelo entrenado y el rendimiento en el tiempo de inferencia, como se describe a continuación. Pruebe diferentes inclusiones para decidir el equilibrio entre la calidad del resultado y el rendimiento de la inferencia que es apropiado para su caso de uso.
embedding_use_multi_small
tiene una calidad razonable, pero es rápido en el tiempo de inferenciaembedding_use_en_stock
es una versión en inglés deembedding_embedding_use_multi_small
, por lo que es más pequeña y muestra un rendimiento de inferencia superiorembedding_use_multi_large
se basa en la arquitectura de Transformadorr y, por lo tanto, proporciona una mayor calidad de resultado, con un rendimiento inferior en el tiempo de inferencia
Ejemplo de código
import watson_nlp
syntax_model = watson_nlp.load("syntax_izumo_en_stock")
embeddings_model = watson_nlp.load("embedding_use_en_stock")
text = "python"
syntax_doc = syntax_model.run(text)
embedding = embeddings_model.run(syntax_doc)
print(embedding)
Salida del código de muestra :
{
"data": {
"data": [
-0.01909315399825573,
-0.009827353060245514,
...
0.008978910744190216,
-0.0702751949429512
],
"rows": 1,
"cols": 512,
"dtype": "float32"
},
"offsets": null,
"producer_id": null
}
Incluidas las incrustaciones USE preentrenadas
La tabla siguiente lista los bloques entrenados previamente para las inclusiones de USE que están disponibles y los idiomas a los que se da soporte. Para obtener una lista de los códigos de idioma y el idioma correspondiente, consulte Códigos de idioma.
Nombre de bloque | Nombre de modelo | Idiomas soportados |
---|---|---|
use |
embedding_use_en_stock |
Sólo en inglés |
use |
embedding_use_multi_small |
ar, delaware, el, en, es, fr, it, ja, ko, nótese bien, nl, pl, pt, ru, th, tr, zh_tw, zh |
use |
embedding_use_multi_large |
ar, delaware, el, en, es, fr, it, ja, ko, nótese bien, nl, pl, pt, ru, th, tr, zh_tw, zh |
GloVe incrustaciones
GloVe El clasificador CNN utiliza incrustaciones.
Nombre del bloque :embedding_glove__stock
Idiomas soportados : ar, de, en, es, fr, it, ja, ko, nl, pt, zh-cn
Ejemplo de código
import watson_nlp
syntax_model = watson_nlp.load("syntax_izumo_en_stock")
embeddings_model = watson_nlp.load("embedding_glove_en_stock")
text = "python"
syntax_doc = syntax_model.run(text)
embedding = embeddings_model.run(syntax_doc)
print(embedding)
Salida del código de muestra :
{
"data": {
"data": [
-0.01909315399825573,
-0.009827353060245514,
...
0.008978910744190216,
-0.0702751949429512
],
"rows": 1,
"cols": 512,
"dtype": "float32"
},
"offsets": null,
"producer_id": null
}
Incrustaciones de transformadores
Nombres de bloque
embedding_transformer_en_slate.125m
embedding_transformer_en_slate.30m
Idiomas soportados
Sólo en inglés
Ejemplo de código
import watson_nlp
# embeddings_model = watson_nlp.load("embedding_transformer_en_slate.125m")
embeddings_model = watson_nlp.load("embedding_transformer_en_slate.30m")
text = "python"
embedding = embeddings_model.run(text)
print(embedding)
Salida del código de muestra
{
"data": {
"data": [
-0.055536773055791855,
0.008286023512482643,
...
-0.3202415108680725,
5.000295277568512e-05
],
"rows": 1,
"cols": 384,
"dtype": "float32"
},
"offsets": null,
"producer_id": {
"name": "Transformer Embeddings",
"version": "0.0.1"
}
}
Tema principal: Watson Catálogo de tareas de procesamiento del lenguaje natural