Editar el esquema lingüístico de preguntas y respuestas y agregar expresiones en Power BI Desktop

Es eficaz usar frases comunes y lenguaje natural para formular preguntas sobre los datos. Y todavía es más eficaz cuando los datos responden. Cuando se formula una pregunta a las preguntas y respuestas de Power BI, se realiza el máximo esfuerzo por responderla correctamente, Puede editar el esquema lingüístico para mejorar las respuestas de Q&A y así conseguir interacciones incluso mejores.

Todo empieza con los datos de empresa. Cuanto mejor sea el modelo de datos, más fácil será para los usuarios obtener respuestas de calidad. Una forma de mejorar el modelo consiste en agregar un esquema lingüístico que defina y clasifique la terminología y las relaciones entre los nombres de tabla y de columna del conjunto de datos. Power BI Desktop es donde se administran los esquemas lingüísticos.

Las preguntas y respuestas conllevan dos procesos: El primero es la preparación o modelado. El segundo es la formulación de preguntas y exploración de datos, o consumo. En algunas empresas, los empleados en puestos de modelador de datos o administrador de TI pueden ser quienes se encarguen de ensamblar los conjuntos de datos, crear los modelos de datos y publicar los conjuntos de datos en Power BI. Otro grupo de empleados puede ser el que "consuma" los datos en línea. En otras empresas, en cambio, estas funciones son intercambiables.

Este artículo está destinado a los modeladores de datos, las personas que optimizan los conjuntos de datos para proporcionar la mejor opción de resultados de Preguntas y respuestas.

¿Qué es un esquema lingüístico?

En un esquema lingüístico se describen términos y frases que Q&A debe comprender en lo que respecta a los objetos de un conjunto de datos, como partes de oraciones, sinónimos y expresiones. Al importar un conjunto de datos o conectarse a él, Power BI crea un esquema lingüístico basado en la estructura de dicho conjunto de datos. Cuando se formula una pregunta a preguntas y respuestas, se buscan coincidencias y relaciones en los datos para averiguar cuál es el propósito de la pregunta. Así, por ejemplo, se buscan sustantivos, verbos, adjetivos, expresiones y otros elementos. También se buscan posibles relaciones, por ejemplo, qué columnas son complementos de un verbo.

Probablemente esté familiarizado con las partes de la oración, pero puede que las expresiones sean un término nuevo. Por expresión se entiende la forma en la que hablamos (o creamos expresiones) sobre las relaciones entre elementos. Por ejemplo, para describir la relación entre clientes y productos, podríamos decir "los clientes compran productos"; para describir la relación entre cliente y edad, podríamos decir "la edad señala los años de cada cliente", O bien, para describir la relación entre clientes y números de teléfono, podríamos decir simplemente "los clientes tienen números de teléfono".

Estas expresiones pueden adoptar muchas formas y tamaños. Así, algunas encajan directamente con relaciones en el modelo de datos; otras tienen que ver con las columnas y las tablas que contienen, y otras guardan relación con varias tablas y columnas en relaciones complejas. En todos los casos, describen cómo podemos relacionar cosas usando términos cotidianos.

Los esquemas lingüísticos se guardan en formato .yaml. Este formato está relacionado con el ampliamente conocido formato JSON, si bien proporciona una sintaxis más flexible y fácil de leer. Los esquemas lingüísticos se pueden editar, exportar e importar a Power BI Desktop.

Requisitos previos

Configuración de un editor de archivos .yaml

Se recomienda usar Visual Studio Code para editar los archivos .yaml de un esquema lingüístico. Visual Studio Code admite archivos .yaml de fábrica y se puede ampliar para garantizar expresamente el formato de esquema lingüístico de Power BI.

  1. Instale Visual Studio Code.

  2. Haga clic con el botón derecho en el archivo .yaml del esquema lingüístico de ejemplo que guardó anteriormente: QnALinguisticSchema.zip.

  3. Seleccione Abrir con>Elegir otra aplicación.

  4. Seleccione Visual Studio Code y, luego, elija Siempre.

    Screenshot of the dialog that shows a list of programs to open the file. Visual Studio Code and Always are highlighted.

En Visual Studio Code, instale la extensión de compatibilidad de YAML de Red Hat.

  1. Seleccione la pestaña Extensiones (la última a la izquierda) o presione Ctrl+Mayús+X.
    Screenshot of the left menu in Visual Studio Code with the Extensions icon highlighted.
  2. Busque "yaml" y seleccione YAML Support by Red Hat (Compatibilidad de YAML de Red Hat) en la lista.
  3. Seleccione Instalar > Volver a cargar.

Trabajar con esquemas lingüísticos

Hay dos maneras de trabajar con esquemas lingüísticos. Una forma consiste en editar, importar y exportar el archivo .yaml con la cinta de opciones de Power BI Desktop. Esta manera se trata en el artículo Experiencia con las herramientas de Preguntas y respuestas de Power BI. No tiene que abrir el archivo .yaml para mejorar Q&A.

Otro método para editar un esquema lingüístico es exportar y editar el archivo .yaml directamente. Cuando se edita el archivo .yaml de un esquema lingüístico, se etiquetan las columnas de la tabla como elementos gramaticales diferentes y se definen las palabras que normalmente se usarían para plantear una pregunta. Por ejemplo, se indican las columnas que son el asunto y el objeto del verbo. Se agregan palabras alternativas que los compañeros pueden usar para hacer referencia a tablas, columnas y medidas en el modelo.

Screenshot of a sample linguistic schema .yaml file.

Para poder editar un esquema lingüístico, hay que abrirlo en Desktop (exportarlo) desde Power BI Desktop. Se considera importación cuando el archivo .yaml se guarda de nuevo en la misma ubicación. Pero también se pueden importar otros archivos .yaml en su lugar. Si, por ejemplo, ya tenemos un conjunto de datos parecido al que hemos dedicado un gran esfuerzo agregándole fragmentos de oraciones, identificando relaciones y creando expresiones y sinónimos, puede usar ese archivo .yaml en un archivo de Power BI Desktop distinto.

Las preguntas y respuestas usan toda esta información junto con las mejoras que hayamos realizado para proporcionar una mejor respuesta, funciones de autocompletar y resumen de las preguntas.

Editar un esquema lingüístico

Cuando se exporta el esquema lingüístico desde Power BI Desktop en primer lugar, un motor de preguntas y respuestas genera automáticamente la mayor parte o todo el contenido del archivo. Estas entidades, palabras (sinónimos), relaciones y expresiones que se generan se designan con una etiqueta State: Generated. Se incluyen en el archivo principalmente con fines informativos, pero pueden ser un punto de partida útil para realizar sus propios cambios.

Nota

El archivo .yaml de ejemplo de este tutorial no contiene etiquetas State: Generated o State: Deleted, puesto que se ha preparado especialmente para este tutorial. Para ver estas etiquetas, abra un archivo .pbix sin editar en la vista Relaciones y exporte el esquema lingüístico.

Screenshot of a sample .yaml file showing State: Generated.

Al volver a importar el archivo de esquema lingüístico en Power BI Desktop, cualquier elemento marcado como State: Generated se omite y se vuelve a generar posteriormente. Por lo tanto, si quiere cambiar parte del contenido generado, quite también la etiqueta State: Generated correspondiente. De igual modo, si quiere quitar algún contenido generado, será necesario cambiar la etiqueta State: Generated a State: Deleted para que no se vuelva a generar al importar el archivo de esquema lingüístico.

Exportación e importación de un archivo .yaml

  1. En Power BI Desktop, abra el conjunto de datos en la vista Modelo.

  2. En la pestaña Modelado, seleccione Esquema lingüístico>Exportar esquema lingüístico.

  3. Guarde y El nombre de archivo finaliza con .lsdl.yaml.

  4. Ábralo en Visual Code u otro editor.

  5. En la pestaña Modelado, seleccione Esquema lingüístico>Importar.

  6. Vaya a la ubicación donde guardó el archivo .yaml editado y selecciónelo. Aparecerá un mensaje que le indicará que el archivo .yaml del esquema lingüístico se ha importado correctamente.

    Screenshot of the successful import dialog.

Agregar expresiones al esquema lingüístico

Por expresión se entiende la forma en la que hablamos (o creamos expresiones) sobre las relaciones entre elementos. Por ejemplo, para describir la relación entre clientes y productos, podríamos decir "los clientes compran productos";

¿De dónde proceden las expresiones?

Power BI agrega muchas expresiones sencillas al esquema lingüístico automáticamente en función de la estructura del modelo y de suposiciones basadas en los nombres de columna. Por ejemplo:

  • La mayoría de las columnas están relacionadas con su tabla contenedora, con expresiones simples como "los productos tienen descripciones".
  • Las relaciones de modelo dan como resultado expresiones predeterminadas para ambas direcciones de la relación, como "los pedidos tienen productos" y "los productos tienen pedidos".
  • En función de los nombres de columna, algunas relaciones de modelo pueden tener expresiones predeterminadas más complejas, como "los pedidos se envían a ciudades".

Sin embargo, en ocasiones los usuarios hablan de cosas de maneras que Q&A no puede adivinar. Por lo tanto, le interesará agregar sus propias expresiones manualmente.

¿Por qué agregar expresiones?

El primer motivo para agregar una expresión es porque se define un término nuevo. Por ejemplo, si queremos poder pedir "contar los clientes de más edad", antes hay que enseñar a las preguntas y respuestas lo que significa "edad". Para ello, agregaríamos una expresión como "la edad señala los años de cada cliente".

La segunda razón para agregar una expresión es porque acaba con la ambigüedad. La búsqueda básica de palabras clave es capaz de discernir esto solo cuando las palabras tienen más de un significado. Por ejemplo, "vuelos a Chicago" no es lo mismo que "vuelos desde Chicago", pero en Preguntas y respuestas no se podrá saber a cuál nos estamos refiriendo a menos que agreguemos las expresiones "los vuelos proceden de las ciudades de salida" y "los vuelos van a las ciudades de llegada". De igual modo, Preguntas y respuestas solo comprenderá la distinción entre "coches que John vende a Mary" y "coches que John ha comprado a Mary" si agregamos las expresiones "los clientes compran coches a empleados" y "los empleados venden coches a clientes".

El último motivo para agregar una expresión es porque mejora la reformulación. Así, en vez de plantear algo impreciso a Preguntas y respuestas del tipo "Mostrar los clientes y sus productos", sería mucho más claro si se dijera "Mostrar los clientes y los productos que han comprado" o "Mostrar los clientes y los productos que han revisado", dependiendo de cómo se entienda la pregunta. Si se agregan expresiones personalizadas, las reformulaciones serán más explícitas e inequívocas.

Tipos de expresiones

Para entender los distintos tipos de expresiones, antes es preciso recordar algunos términos de gramática básicos:

  • Un sustantivo es una persona, lugar o cosa. Ejemplos: coche, niño, Martín, condensador de flujo
  • Un verbo es una acción, estado o condición. Ejemplos: sombrear, estallar, devorar, expulsar
  • Un adjetivo es una palabra descriptiva que modifica un sustantivo. Ejemplos: potente, mágico, dorado, robado
  • Una preposición es una palabra que se usa antes de un sustantivo para relacionarlo con un sustantivo, verbo o adjetivo anterior. Ejemplos: de, para, sobre, desde.
  • Un atributo es una cualidad o característica de algo.
  • Un nombre es una palabra o un conjunto de palabras por el que se conoce o denomina a una persona, animal lugar o cosa.

Expresiones de atributo

Las expresiones de atributo son el caballo de batalla de Q&A. Se usan cuando un elemento actúa como un atributo de otro. Son simples y sencillas, y realizan la mayor parte del "trabajo pesado" cuando no se han definido frases más sutiles o detalladas. Las expresiones de atributo se describen mediante el verbo básico "tener" ("los productos tienen categorías" y "los países o regiones anfitriones tienen ciudades anfitrionas"). También permiten automáticamente preguntas con las preposiciones "de" y "para" ("categorías de productos" o "pedidos para productos") y posesivos ("pedidos de John"). Las expresiones de atributo se usan en preguntas de este tipo:

  • ¿Qué clientes tienen pedidos?
  • Enumerar ciudades por país o región en orden ascendente
  • Mostrar pedidos que tienen té
  • Enumerar clientes con pedidos
  • ¿Qué es la categoría de cada producto?
  • Contar pedidos de Robert King

Power BI genera la gran mayoría de expresiones de atributo necesarias en el modelo, en función de las relaciones del modelo y el contenido de la tabla o columna. Normalmente, no es necesario crearlas personalmente. Este es un ejemplo del aspecto de una expresión de atributo del esquema lingüístico:

product_has_category:
  Binding: {Table: Products}
  Phrasings:
  - Attribute: {Subject: product, Object: product.category}

Expresiones de nombre

Las expresiones de nombre son útiles si el modelo de datos tiene una tabla que contiene objetos con nombre, como nombres de deportistas y nombres de cliente. Por ejemplo, una expresión "los nombres de producto son nombres de producto" es fundamental para poder usar nombres de producto en preguntas. Las expresiones de nombre también permiten el funcionamiento de "denominado" como un verbo (por ejemplo, "enumerar los clientes denominados John Smith"). Sin embargo, son más importantes cuando se usan en combinación con otras expresiones. Permiten usar un valor de nombre para hacer referencia a una fila de tabla determinada. Por ejemplo, en "Clientes que han comprado té", Preguntas y respuestas es capaz de distinguir que el valor "té" hace referencia a la fila completa de la tabla de productos y no simplemente a un valor de la columna de nombres de productos. Las expresiones de nombre se usan en preguntas de este tipo:

  • ¿Qué empleados tienen por nombre Óscar Mota?
  • ¿Quién tiene por nombre Pedro Armijo?
  • Deportes de Fernand De Montigny
  • Contar deportistas cuyo nombre es Isabel
  • ¿Qué ha comprado Óscar Mota?

Suponiendo que usa una convención de nomenclatura que distingue mayúsculas y minúsculas para las columnas de nombre en el modelo (por ejemplo, "Nombre" o "NombreProducto" en lugar de NbrPrd), Power BI genera la mayoría de expresiones de nombre necesarias en el modelo de forma automática. Normalmente, no es necesario crearlas personalmente.

Este es un ejemplo del aspecto de una expresión de nombre del esquema lingüístico:

employee_has_name:
  Binding: {Table: Employees}
  Phrasings:
  - Name:
      Subject: employee
      Name: employee.name

Expresiones de adjetivo

Las expresiones de adjetivo definen los nuevos adjetivos que se usan para describir cosas en el modelo. Por ejemplo, la expresión "los clientes satisfechos son clientes con una puntuación > 6" es necesaria para poder formular preguntas como "enumerar clientes satisfechos de Des Moines". Existen varias formas de componer expresiones de adjetivo para su uso en diversas situaciones.

Las expresiones de adjetivo sencillas definen un adjetivo nuevo según una condición, como, por ejemplo, "los productos en desuso son productos donde estado = D". Las expresiones de adjetivo sencillas se usan en preguntas de este tipo:

  • ¿Qué productos están desusados?
  • Enumerar productos desusados
  • Enumerar pomos de puerta dorados
  • Productos que están pendientes

Este es un ejemplo del modo en que una expresión de adjetivo sencilla busca en el esquema lingüístico:

product_is_discontinued:

Binding: {Table: Products}
  Conditions:
  - Target: product.discontinued
    Operator: Equals
    Value: true
  Phrasings:
  - Adjective:
      Subject: product
      Adjectives: [discontinued]

Las expresiones de adjetivo de medida definen un adjetivo nuevo en función de un valor numérico que indica el grado en el que dicho adjetivo se aplica, como "las longitudes indican cómo de largos son los ríos" y "los países y regiones pequeños tienen áreas de terreno pequeñas". Las expresiones de adjetivo de medida se usan en estas clases de preguntas:

  • Enumerar ríos largos
  • ¿Qué ríos son los más largos?
  • Enumerar las regiones o países más pequeños que ganaron el oro en baloncesto
  • ¿Cómo es de largo el río Bravo?

Este es un ejemplo del modo en que una expresión de adjetivo de medida busca en el esquema lingüístico:

river_has_length:

Binding: {Table: Rivers}
 Phrasings:
 - Adjective:
     Subject: river
     Adjectives: [long]
     Antonyms: [short]
     Measurement: river.length

Las expresiones de adjetivo dinámicas definen un conjunto de adjetivos nuevos según los valores de una columna del modelo, como "los colores describen productos" y "los eventos tienen géneros de evento". Las expresiones de adjetivo dinámicas se usan en estas clases de preguntas:

  • Enumerar productos rojos
  • ¿Qué productos son verdes?
  • Mostrar eventos deportivos para mujeres
  • Contar problemas que están activos

Este es un ejemplo del modo en que una expresión de adjetivo dinámico busca en el esquema lingüístico:

product_has_color:

Binding: {Table: Products}
  Phrasings:
  - DynamicAdjective:
      Subject: product
      Adjective: product.color

Expresiones de sustantivo

Las expresiones de sustantivo definen nuevos sustantivos que describen subconjuntos de cosas en el modelo. Incluyen a menudo algún tipo de condición o medida específica del modelo. Por ejemplo, quizás para nuestro modelo queramos agregar expresiones que distinguen campeones de medallistas, deportes de tierra de deportes de agua, equipos de individuos o categorías de deportistas por edad (juvenil, sénior), etc. En nuestra base de datos de películas, probablemente queramos agregar expresiones de nombre como "fiascos son películas donde los beneficios netos < 0", de forma que podamos plantear preguntas como "número de fiascos por año". Existen dos formas de componer expresiones de nombre para su uso en diversas situaciones.

Las expresiones de nombre sencillas definen un nombre nuevo según una condición, como "los contratistas son empleados donde tiempo completo = false" y "campeón es un deportista con un recuento de medallas > 5". Las expresiones de nombre sencillas se usan en estas clases de preguntas:

  • ¿Qué empleados son contratistas?
  • Contar contratistas en Portland
  • ¿Cuántos campeones hubo en 2016?

Este es un ejemplo del modo en que una expresión de nombre sencilla busca en el esquema lingüístico:

employee_is_contractor:

Binding: {Table: Employees}
  Conditions:
  - Target: employee.full_time
    Operator: Equals
    Value: false
  Phrasings:
  - Noun:
      Subject: employee
      Nouns: [contractor]

Las expresiones de nombre dinámicas definen un conjunto de sustantivos nuevos según los valores de una columna del modelo, como "los puestos de trabajo definen subconjuntos de empleados". Las expresiones de sustantivo dinámicas se usan en preguntas de este tipo:

  • Enumerar cajeros en Chicago
  • ¿Qué empleados son camareros?
  • Enumerar árbitros de 1992

He aquí es un ejemplo del modo en que una expresión de nombre dinámica busca en el esquema lingüístico:
employee_has_job:

Binding: {Table: Employees}
 Phrasings:
 - DynamicNoun:
     Subject: employee
     Noun: employee.job

Expresiones preposicionales

Las expresiones preposicionales sirven para describir con preposiciones el modo en que las cosas se relacionan en el modelo. Por ejemplo, la expresión "las ciudades están en países o regiones" mejora la comprensión de preguntas como "contar las ciudades de Washington". Algunas expresiones preposicionales se crean automáticamente cuando una columna se reconoce como una entidad geográfica. Las expresiones preposicionales se usan en preguntas de este tipo:

  • Contar clientes en Nueva York
  • Enumerar libros sobre lingüística
  • ¿En qué ciudad está Robert King?
  • ¿Cuántos libros son de Stephen Pinker?

He aquí un ejemplo del modo en que una expresión de preposición busca en el esquema lingüístico:
customers_are_in_cities:

Binding: {Table: Customers}
 Phrasings:
 - Preposition:
     Subject: customer
     Prepositions: [in]
     Object: customer.city

Expresiones verbales

Las expresiones verbales sirven para describir con verbos el modo en que las cosas se relacionan en el modelo. Por ejemplo, la expresión "los clientes compran productos" mejora la comprensión de preguntas como "¿quién ha comprado queso?" y "¿qué ha comprado John?". Las expresiones verbales son los tipos de expresión más flexibles de todas en tanto suelen relacionar entre sí más de dos cosas, como en "los empleados venden productos a clientes". Las expresiones verbales se usan en preguntas de este tipo:

  • ¿Quién vende qué a quién?
  • ¿Qué empleado ha vendido té a John?
  • ¿A cuántos clientes ha vendido té Mary?
  • Enumerar los productos que Mary ha vendido a John.
  • ¿Qué productos desusados han vendido empleados de Boston a clientes de Chicago?

Las expresiones verbales también pueden contener frases preposicionales, lo que las hace más flexibles aún, como "los deportistas ganan medallas en competiciones" o "los clientes reciben reembolsos de productos". Las expresiones verbales con expresiones preposicionales se usan en preguntas de este tipo:

  • ¿Cuántos deportistas han ganado una medalla de oro en Barcelona 92?
  • ¿Qué clientes han recibido un reembolso por la compra de queso?
  • ¿En qué competición ha ganado una medalla de bronce Danell Leyva?

Algunas expresiones verbales se crean automáticamente cuando se identifica que una columna contiene un verbo y una preposición.

He aquí un ejemplo del aspecto de una expresión verbal en el esquema lingüístico:
customers_buy_products_from_salespeople:

Binding: {Table: Orders}
  Phrasings:
  - Verb:
      Subject: customer
      Verbs: [buy, purchase]
      Object: product
      PrepositionalPhrases:
      - Prepositions: [from]
        Object: salesperson

Relaciones con varias expresiones

Con frecuencia, una misma relación se puede describir de más de una forma. En este sentido, pues, una misma relación puede tener más de una expresión. Es habitual que la relación entre una entidad de tabla y una entidad de columna tenga tanto una expresión de atributo como otro tipo de expresión. Por ejemplo, en la relación entre cliente y nombre del cliente, posiblemente le interese tener tanto una expresión de atributo (por ejemplo, "los clientes tienen nombres") como una expresión de nombre (por ejemplo, "los nombres de los clientes son nombres de cliente") para que, así, sea viable formular ambos tipos de pregunta.

He aquí un ejemplo de cómo se ve una relación con dos frases dentro del esquema lingüístico:
customer_has_name:

Binding: {Table: Customers}
Phrasings:
  - Attribute: {Subject: customer, Object: customer.name}
  - Name:
      Subject: customer
      Object: customer.name

Otro ejemplo podría ser agregar la expresión alternativa "los empleados venden productos a clientes" a la relación "los clientes compran productos a los empleados". No es necesario agregar variaciones, como "los empleados venden productos a clientes" o "los productos son vendidos a clientes por empleados", ya que Q&A deduce automáticamente las variaciones de "por" y "a" del sujeto y el complemento indirecto.

Consideraciones y solución de problemas

Si realiza un cambio en un archivo .lsdl.yaml que no se ajusta al formato del esquema lingüístico, verá subrayados ondulados de validación para señalar dónde está el problema:

Screenshot of a sample .yaml file showing errors.

¿Tiene más preguntas? Pregunte a la comunidad de Power BI