Opciones de entidades

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:

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:

  1. Abre la consola de Dialogflow CX.
  2. Elige tu proyecto de Google Cloud.
  3. Selecciona el agente.
  4. Selecciona la pestaña Administrar.
  5. Haz clic en Tipos de entidades.
  6. 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 en KIND_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 en KIND_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 en KIND_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 en AUTO_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 en true.

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.