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:

También existen dos 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

Para compilar un agente, se suele usar la consola de Dialogflow (consultar la documentación, abrir 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. Ve a la consola de Dialogflow.
  2. Selecciona un agente.
  3. Selecciona Entidades en el menú de la barra lateral izquierda.
  4. Selecciona la pestaña Personalizadas si quieres ver las entidades personalizadas que se definieron para el agente o la pestaña Sistema si quieres ver las entidades de sistema que usa el agente.
  5. Consulta las siguientes opciones de casilla de verificación para cualquier entidad existente:
    • Define sinónimos
    • Entidad de expresión regular (solo entidad personalizada)
    • Permitir la expansión automática (solo para entidades personalizadas)
    • Concordancia parcial (solo para entidades personalizadas)

Si quieres compilar el agente con la API en lugar de la consola, consulta la referencia sobre los tipos de entidades. Los nombres de los campos de la API son similares a los de la consola. En las instrucciones que se detallan continuación, destacaremos las diferencias importantes entre la consola y la API.

Entidad de asignación

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. Por ejemplo, cada una de las siguientes filas son entradas de entidad para un tipo de entidad size:

Valor de referencia Sinónimos
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 expresión 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 expresión 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 asignación:

  • En la consola, desmarca la opción Entidad de expresión regular y marca la opción Definir sinónimos.
  • En la API, establece el campo kind de EntityType 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 expresión 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 Entidad de expresión regular y desmarca la opción Definir sinónimos.
  • 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 expresión 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 expresión 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 expresiones 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 Entidad de expresión regular.
  • En la API, establece el campo kind de EntityType en KIND_REGEXP.

Expansión automática

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 de referencia Sinónimos
pan pan
mantequilla mantequilla
leche leche
manzana manzana
helado helado

Si una expresión del usuario final es “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 a los otros valores. Es importante proporcionar muchos ejemplos de valores de entidades en las frases de entrenamiento para ayudar al agente a expandir un tipo de entidad; de lo contrario, la expansión automática podría no funcionar según lo previsto.

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.
  • Proporciona muchos ejemplos de valores de entidades en las frases de entrenamiento.

Sigue estos pasos para habilitar la expansión automática:

  • En la consola, marca la opción Permitir la expansión automática.
  • En la API, establece el campo autoExpansionMode de EntityType 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 enableFuzzyExtraction de EntityType en true.