Estamos hablando de traducir una consulta de lenguaje natural (NLQ) a SQL en este artículo, también conocida como interfaz de lenguaje natural para bases de datos (NLIDB).
Por ejemplo, consideremos una tabla de países con detalles de idioma y población: esquema ilustrativo a continuación:Mesa de campo: ID de país | Nombre | Idioma | Recuento de población
NLQ1: ¿Qué país tiene el número máximo de habitantes?
SQL1: Seleccione Nombre, max([Population Count]) del país; en el centro de la mayoría de los sistemas de preguntas y respuestas de lenguaje natural [1], es un módulo de Unidad de comprensión del lenguaje natural (NLU) que intenta comprender la intención del NLQ extrayendo y clasificando las ‘expresiones’. En palabras simples, uno puede pensar en los enunciados como frases clave en la oración, por ejemplo, país, máximo, población, número.
La asignación de expresiones NLQ a los operadores SQL correctos, especialmente para determinar si una expresión corresponde a una tabla, columna, clave primaria/foránea, operador SQL, en primer lugar, no es trivial.
Por ejemplo, sin ningún conocimiento inherente del esquema de la base de datos, es muy difícil para la lógica de mapeo determinar que el ‘recuento’ en este caso se refiere a la columna ‘recuento de población’ y no al operador SQL COUNT. El problema se amplifica para consultas complejas, por ejemplo, NLQ2: ¿Qué idioma hablan la mayor cantidad de países? cuya traducción de SQL involucraría a ambos operadores de SQL: MAX y COUNT. Otros ejemplos de consultas complejas incluyen escenarios en los que necesitamos UNIR varias tablas. En esta sección, hacemos una inmersión profunda en el dominio del problema, reflexionando sobre la literatura / enfoques existentes, para comprender los desafíos técnicos involucrados. Hay dos conjuntos de datos de referencia que se hace referencia principalmente en este campo: WikiSQL: es un gran corpus anotado para desarrollar interfaces de lenguaje natural, que se presentó junto con el documento [2].Spider es un conjunto de datos de texto a SQL y análisis semántico anotado a gran escala. SParC es la versión dependiente del contexto/de múltiples turnos de Spider, y CoSQL es la versión de diálogo de los conjuntos de datos de Spider y SParC. Para una discusión detallada, consulte el documento adjunto [3]Como destaca Spider en su texto introductorio, cualquier solución de NLIDB no solo debe comprender el esquema de la base de datos subyacente, sino que también debe generalizarse a nuevos esquemas. El desafío de la generalización radica en (a) codificar el esquema de la base de datos para el analizador semántico y (b) modelar la alineación entre las columnas de la base de datos, las claves y sus menciones en un NLQ dado. [4]Con este contexto, echemos un vistazo a algunos trabajos que han intentado codificar el conocimiento del esquema de base de datos (faltante) en redes neuronales. Los gráficos dirigidos son un formalismo popular para codificar relaciones de esquemas de bases de datos.[4] presenta un marco unificado para abordar la codificación de esquemas, la vinculación y la representación de características dentro de un codificador de texto a SQL. [5] codifica el esquema de la base de datos con una red neuronal gráfica, y esta representación se utiliza tanto en el momento de la codificación como en el de la decodificación en un analizador semántico codificador-descodificador. [6] presenta un codificador gráfico de interacción de esquema de base de datos para utilizar información histórica de elementos de esquema de base de datos. En la fase de decodificación, se utiliza un mecanismo de puerta para sopesar la importancia de los diferentes vocabularios y luego hacer una predicción de tokens SQL. Modelos de lenguaje grandes preentrenados [7] ya que los generadores de texto a SQL ayudan hasta cierto punto, especialmente, con respecto a la codificación de nombres de tablas y columnas aprovechando el mecanismo de atención [8]. Sin embargo, todavía luchan con las relaciones de esquema para operaciones SQL complejas.
Los documentos muestran un progreso significativo en la incorporación de esquemas de bases de datos, sin embargo, todavía son específicos para los conjuntos de datos en consideración; y no generaliza bien a nuevos dominios/esquemas.
En esta sección, consideramos enfoques para agregar mejor estas relaciones de esquema de base de datos/conocimiento de dominio faltantes a un generador de texto a SQL.
La mayoría de los sistemas de preguntas y respuestas actuales consisten en una unidad de comprensión del lenguaje natural (NLU) capacitada para reconocer la consulta del usuario de manera supervisada. Esto incluye los sistemas de preguntas y respuestas disponibles actualmente en el mercado, por ejemplo, Google DialogFlow, Amazon Lex, Microsoft LUIS, RASA.
Por lo tanto, primero deben capacitarse proporcionando un conjunto de NLQ, variaciones de preguntas y sus respuestas correspondientes, que en este caso serían las consultas SQL correspondientes.
Junto con las ‘intenciones’ y las ‘expresiones’, una parte esencial en la personalización de los sistemas de preguntas y respuestas es proporcionar ‘entidades’ [9]. Las entidades se refieren al vocabulario específico del dominio, por ejemplo, pueden referirse a las ubicaciones de las oficinas de una organización, en el contexto de una aplicación de recursos humanos.
Entonces, el conocimiento que debe ingresarse manualmente en este caso es la descripción en lenguaje natural de tablas, columnas y sus relaciones, que falta en la mayoría de las documentaciones de bases de datos.
Si bien el enriquecimiento manual funciona y suele ser el enfoque más confiable; es importante recordar aquí que los sistemas NLIDB están destinados principalmente a usuarios comerciales, consumidores de informes / tableros; que pueden no estar muy cómodos con la entrada de datos técnicos. Además, esta no es una entrada de datos única, y el conocimiento del dominio codificado deberá adaptarse cada vez que cambie el esquema de la base de datos subyacente.
Una buena manera de iniciar generadores de texto a SQL es aprendiendo de los registros de consultas SQL existentes y los informes de BI. Es justo decir que la mayoría de los sistemas NLIDB complementarán las plataformas de BI existentes. Por lo tanto, tiene sentido aprovechar los registros SQL históricos y los informes/paneles existentes para comprender las consultas SQL más frecuentes y, en consecuencia, los NLQ que se pueden usar para la capacitación inicial. La capacidad de generalización de este modelo inicial se puede mejorar introduciendo una tarea auxiliar, que puede aprender explícitamente el mapeo entre entidades en el NLQ y tablas, columnas, nombres clave en el esquema [10]. Trabajos recientes han extendido esto a tareas de aprendizaje de pocas tomas (entorno de aprendizaje activo en general), por ejemplo, [11] propone una estrategia de metaaprendizaje eficiente que utiliza una actualización de gradiente de dos pasos para obligar al modelo a aprender una capacidad de generalización hacia tablas de tiro cero. Los enfoques de aprendizaje por refuerzo (RL) también son interesantes en este contexto, donde una red Q profunda ( El agente DQN) se puede entrenar para “puntuar” consultas novedosas (no vistas), de modo que se puedan agregar de manera efectiva para aumentar el conjunto de datos de entrenamiento (fuera de línea). Por ejemplo, [12] propone un chatbot empresarial de mejora automática basado en RL que muestra un aumento en el rendimiento de una tasa de éxito inicial del 50 % al 75 % en 20 a 30 épocas de capacitación.
Creemos que BI conversacional será mucho más disruptivo, al permitir nuevas formas de interactuar con bases de datos (o almacenes de datos en general).
Por ejemplo: Bot de metadatos: Dada la complejidad de las bases de datos empresariales y la consiguiente dificultad para codificarlas; puede ser que hayamos estado abordando mal el problema para iniciarlos. Si podemos proporcionar a los usuarios un sistema de preguntas y respuestas (llamémoslo Meta Bot, meta como en consultas de metadatos, y nada que ver con Meta / Facebook) que pueda responder consultas reg. el esquema de la base de datos, por ejemplo, ‘¿Qué tabla contiene los datos de ventas de Suiza?’ junto con algún tipo de autocompletado para operadores SQL, por ejemplo, ‘¿Tenemos los datos de ventas de Alemania y España en una tabla?’, respondido por una combinación/filtro en la(s) tabla(s) respectiva(s); los usuarios podrán redactar sus consultas SQL de forma eficiente, sin necesidad de conocimientos avanzados de SQL. Consultas incrementales: El punto anterior ya alude a ello. Las consultas de hoy en día son en su mayoría de una sola vez. Nuestras conversaciones, por otro lado, tienen un flujo, continuamos con lo que se ha dicho antes, según el contexto histórico. Sí, un procedimiento almacenado realiza consultas SQL en secuencia; sin embargo, es una lógica predefinida. BI conversacional permitiría refinar gradualmente los resultados de la consulta en tiempo real, hasta que el usuario encuentre los datos que está buscando en tiempo real.
Los días felices de la PDA y Blackberry han quedado definitivamente atrás, pero el factor…
Tutorial sobre cómo pronosticar usando un modelo autorregresivo en PythonFoto de Aron Visuals en UnsplashForecasting…
Si tienes un iPhone, los AirPods Pro son la opción obvia para escuchar música, ¡aunque…
Ilustración de Alex Castro / The Verge Plus nuevos rumores sobre el quinto Galaxy Fold.…
Se rumorea que los auriculares premium de próxima generación de Apple, los AirPods Max 2,…
El desarrollador Motive Studio y el editor EA han lanzado un nuevo tráiler de la…