Hay varias opciones de entidades que cambian el comportamiento de la coincidencia de entidades y la extracción de datos. Estas opciones no pueden cambiarse para las entidades del sistema, ya que están preconfiguradas. Sin embargo, sí puedes cambiarlas para tus entidades personalizadas. Puedes crear diferentes tipos de entidades, según las opciones que selecciones:
- Entidad de mapeo
- Entidad de lista
- Entidad compuesta (un tipo especial de entidad de lista)
- Entidad de expresión regular
Hay otras opciones que no determinan el tipo de entidad pero afectan el comportamiento de la coincidencia de entidades:
Este documento describe cada una de estas opciones.
Dónde encontrar estos datos
Cuando compilas un agente, es más común usar la consola de Dialogflow CX (consulta la documentación, abre la consola). En las instrucciones que se detallan a continuación, nos enfocaremos en el uso de la consola. Sigue estos pasos para acceder a los datos de las opciones de entidad:
- Abre la consola de Dialogflow CX.
- Elige tu proyecto de Google Cloud.
- Selecciona el agente.
- Selecciona la pestaña Administrar.
- Haz clic en Tipos de entidades.
- Consulta las siguientes opciones para cualquier entidad existente
(es posible que algunas solo sean visibles después de expandir Opciones avanzadas):
- Solo entidades (sin sinónimos)
- Entidades de expresión regular
- Agregar entidades automáticamente
- Coincidencias parciales
- Ocultar en el registro
- Exclusiones de entidades
Si compilas un agente con la API en lugar de la consola, consulta el tipo EntityType
.
Los nombres de los campos de la API son similares a los de la consola.
En las instrucciones que se detallan continuación, se resaltan las diferencias importantes entre la consola y la API.
Selecciona un protocolo y una versión para la referencia de EntityType:
Protocolo | V3 | V3beta1 |
---|---|---|
REST | Recurso de EntityType | Recurso EntityType |
RPC | Interfaz de EntityType | Interfaz de EntityType |
C++ | EntityTypesClient | No disponible |
C# | EntityTypesClient | No disponible |
Go | EntityTypesClient | No disponible |
Java | EntityTypesClient | EntityTypesClient |
Node.js | EntityTypesClient | EntityTypesClient |
PHP | No disponible | No disponible |
Python | EntityTypesClient | EntityTypesClient |
Ruby | No disponible | No disponible |
Entidad de mapeo
Las entidades de asignación proporcionan una asignación entre los valores de referencia y sus sinónimos. Cada entrada de entidad de asignación contiene un valor de referencia único y una lista de sinónimos. De manera opcional, también puedes configurar un patrón DTMF para cada entidad.
Por ejemplo, cada una de las siguientes filas son entradas de entidad para un tipo de entidad size
:
Entidad | Sinónimos | Patrón de DTMF |
---|---|---|
S | S, pequeño, chico, diminuto | |
M | M, medio, mediano | |
L | L, grande, enorme, gigante |
Observa que el valor de referencia se incluye en la lista de sinónimos de cada entrada de entidad en el ejemplo. Para que se detecte la coincidencia con un valor de referencia, este debe incluirse como sinónimo. Cuando ingresas un valor de referencia con la consola, este se agrega automáticamente como sinónimo.
Si se detecta una coincidencia entre alguno de los sinónimos y una parte de la entrada del usuario final, se extrae el valor de referencia de la coincidencia y se lo usa para resolver el valor del parámetro asociado.
Se puede omitir el valor de referencia de la lista de sinónimos. Esto significa que no se detectarán coincidencias con este valor en partes de la entrada del usuario final, pero se lo usará como valor extraído cuando se detecte una coincidencia con uno de sus sinónimos. Esto es conveniente si usas como valor de referencia strings especiales que no aparecerán en la expresión escrita o verbal de los usuarios finales.
Muchas entidades del sistema son entidades de asignación.
Por ejemplo, la entidad del sistema @sys.date
coincide con entradas de fecha comunes, como “1 de enero de 2015” o “Primero de enero de 2015”.
Ambas entradas se asignan a un valor de referencia en formato ISO-8601: “2015-01-01T12:00:00-03:00”.
Sigue estos pasos para crear una entidad de mapeo:
- En la consola, desmarca la opción Entidades de expresión regular y desmarca la opción Solo entidades.
- En la API, establece el campo
EntityType.kind
enKIND_MAP
.
Entidad de lista
Las entidades de lista proporcionan una lista de entradas de entidad de valor único.
No tienen valores de referencia ni sinónimos.
Por ejemplo, cada una de las siguientes filas son entradas de entidad para un tipo de entidad material
:
Valor |
---|
tela |
madera |
metal |
Si se detecta una coincidencia entre algún valor y una parte de la entrada del usuario final, se extrae el valor de la coincidencia y se lo usa para resolver el valor del parámetro asociado.
Muchas entidades de sistema son entidades de lista.
Por ejemplo, la entidad del sistema @sys.color
coincide con entradas de color comunes, como “rojo” o “azul”.
Cuando se detecta una coincidencia con un color, el valor extraído no se asigna a ningún valor de referencia.
Por ejemplo, los tonos de rojo, como “escarlata” o “carmesí”, no se asignan a “rojo”, sino que se extraen tal cual, como “escarlata” y “carmesí”.
Sigue estos pasos para crear una entidad de lista:
- En la consola, desmarca la opción Entidades de expresión regular y marca la opción Solo entidades.
- En la API, establece el campo
EntityType.kind
enKIND_LIST
.
Entidad compuesta
Una entidad compuesta es un tipo especial de entidad de lista. Las entradas de entidad para las entidades de lista suelen contener palabras o frases simples, pero también pueden contener otros tipos de entidades. Cuando se hace referencia a un tipo de entidad en otro, la referencia se denomina alias. Cuando una entidad de lista contiene alias de otros tipos de entidades, se denomina entidad compuesta.
Cuando creas un alias, debes proporcionar el nombre del tipo de entidad al que se hace referencia y un nombre de propiedad que puedes elegir. Cuando se detecta una coincidencia con una entidad compuesta en el entorno de ejecución, el valor extraído se muestra como un objeto JSON, con nombres de propiedad de alias como nombres de propiedad JSON. El formato para ingresar un alias es el siguiente:
@entity-name:property-name
Por ejemplo, puedes crear un tipo de entidad place
que coincida con una ciudad o un estado con las siguientes entradas de entidad:
Valor |
---|
@sys.geo-city:city |
@sys.geo-state:state |
Si una entrada de usuario final contiene una parte “Nashville”, se detecta la coincidencia con el tipo de entidad place
.
El valor extraído se muestra como: {"city": "Nashville"}
.
También puedes usar varios alias de entidad en una entrada de entidad.
Considera el siguiente tipo de entidad personalizada move
que contiene alias de un tipo de entidad direction
y el tipo de entidad del sistema @sys.number
:
Tipo de entidad de asignación personalizada de dirección:
Valor de referencia | Sinónimos |
---|---|
forward (hacia delante) | forward (hacia delante), forwards (al frente) |
back (hacia atrás) | back (hacia atrás), backward (para atrás), backwards (en reversa) |
Tipo de entidad de lista personalizada de movimiento:
Valor |
---|
@sys.number:steps steps @direction:direction (@sys.cantidad:pasos pasos @dirección:dirección) |
Si la entidad move
corresponde a una entrada de usuario final que contiene “five steps backward” (“cinco pasos para atrás”), se detectará una coincidencia con la entidad move
.
El valor extraído se muestra como: {"steps": 5, "direction": "back"}
(“pasos”: 5, “dirección”: “hacia atrás”).
Muchas entidades del sistema son entidades compuestas.
Por ejemplo, la entidad de sistema @sys.unit-currency
se usa para detectar correspondencias entre cantidades de dinero y nombres de moneda.
Detecta coincidencias con entradas de usuario final como “50 euros” o “veinte dólares con cinco centavos”.
El valor extraído se muestra como un objeto JSON, por ejemplo: {"amount": 50, "currency": "EUR"}
(“monto”: 50, “moneda”: “EUR”).
Entidad de expresión regular
Con las entidades de expresión regular, puedes proporcionar expresiones regulares para detectar coincidencias. Para obtener más información, consulta Entidades de expresión regular.
Para crear una entidad de expresión regular, sigue estos pasos:
- En la consola, marca la opción Entidades de expresión regular.
- En la API, establece el campo
EntityType.kind
enKIND_REGEXP
.
Expansión automática (agrega entidades automáticamente)
Puedes habilitar la expansión automática para un tipo de entidad personalizada. Cuando habilitas esta función, el agente puede reconocer valores que no se proporcionaron de forma explícita. Por ejemplo, considera un tipo de entidad de lista de compras:
Valor |
---|
pan |
mantequilla |
leche |
manzana |
helado |
Si una entrada de usuario final es “I need to buy some carrots” (“Necesito comprar zanahorias”), se asigna "zanahorias" a este tipo de entidad, a pesar de que no se proporcionó ese valor. El agente reconoce que “zanahorias” es similar contextualmente a los otros valores.
Debes seguir las prácticas recomendadas cuando consideres usar la expansión automática:
- El hecho de habilitar la expansión automática no garantiza que se extraigan todas las entidades. Si se trata de una lista limitada, es recomendable que proporciones la lista completa en lugar de proporcionar una parcial y habilitar la expansión automática.
- Si habilitas la expansión automática en más de una entidad, es posible que se generen conflictos y se obtengan resultados de clasificación imprevistos.
- Para garantizar una mejor calidad de extracción de parámetros, es fundamental proporcionar datos de entrenamiento diversos que cubran todos los casos prácticos en los que se puede encontrar una entidad determinada en el tráfico del agente esperado. Si no hay suficientes ejemplos, la expansión automática de entidades podría no funcionar según lo previsto.
Sigue estos pasos para habilitar la expansión automática:
- En la consola, marca la opción Agregar entidades automáticamente.
- En la API, establece el campo
EntityType.autoExpansionMode
enAUTO_EXPANSION_MODE_DEFAULT
.
Coincidencia parcial
Puedes habilitar la coincidencia parcial en una entidad personalizada. Cuando habilitas la coincidencia parcial, el orden de las palabras en un valor o un sinónimo no es importante. Para obtener más información, consulta Coincidencia parcial.
Sigue estos pasos para habilitar la coincidencia parcial:
- En la consola, marca la opción Coincidencia parcial.
- En la API, establece el campo
EntityType.enableFuzzyExtraction
entrue
.
Ocultar en el registro
Si habilitas la ocultación de entidades, todos los valores de parámetros extraídos del entorno de ejecución para el tipo de entidad se ocultarán cuando se registren.
Como alternativa, puedes ocultar parámetros individuales.
Exclusiones de entidades
Puedes agregar exclusiones de entidades, que son frases que no deben coincidir. Por ejemplo, si tienes un tipo de entidad de tamaño con entidad gigante (un adjetivo), podrías agregar gigantes (un sustantivo) como una exclusión.