Publicado el 24 de Octubre del 2019
1.498 visualizaciones desde el 24 de Octubre del 2019
492,7 KB
75 paginas
Creado hace 12a (01/01/2013)
INGENIERIA EN INFORMÁTICA
Memoria del Proyecto Final de Carrera
NQL (Natural Query Language)
Autor: Daniel Boerner
Consultor: Jordi Duran Cals
Enero - 2013
UOC Proyecto Final de Carrera NQL (Natural Query Language)
Daniel Boerner
Resumen
En paralelo al aumento de los datos que se crean en nuestro entorno
actual y que se procesan mediante gestores de bases de datos, crecen
las necesidades de información de usuarios de sistemas de
información. Como usuarios, no necesariamente disponen de los
conocimientos técnicos necesarios para extraer la información que
requieren. Así pues, conviene simplificar y facilitar el acceso a la
información almacenada en sistemas de bases de datos.
En este sentido y enmarcado como proyecto final de carrera de los
estudios de ingeniería informática y específicamente del área de
compiladores, presento el desarrollo de un sistema capaz de procesar
consultas en lenguaje natural introducidas por el usuario mediante el
teclado. El sistema es capaz de responder a consultas en castellano,
relacionadas con un dominio de aplicación representado mediante una
base de datos relacional.
A través de la presente memoria, primeramente introduzco el proyecto
mediante su motivación, sus objetivos, su planificación, sus resultados
y los requisitos del sistema presentado. Después expongo el principal
problema relacionado con el procesamiento del lenguaje natural: la
ambigüedad. Sigue una breve descripción del lenguaje estructurado de
consultas SQL (Structured Query Language) concentrada en la
sentencia SELECT, utilizada para recuperar determinadas filas de una
tabla de una base de datos. Como punto central, describo el diseño y la
implementación de un sistema interfaz entre un lenguaje natural y una
base de datos relacional. A continuación describo las limitaciones del
sistema desarrollado así como las pruebas realizadas sobre el mismo.
Finalmente y después de una conclusión y un apartado de referencias
siguen como anexos, detalles sobre la instalación y ejecución del
sistema, las preguntas que reconoce el sistema y finalmente las
especificaciones del léxico y de la gramática correspondientes a la
implementación del núcleo del sistema.
Página 2 de 75
UOC Projecte Final de Carrera NQL (Natural Query Language)
Daniel Boerner
Contenido
1.Introducción............................................................................................6
1.1.Análisis del problema..........................................................................6
1.2.Objetivos...........................................................................................7
1.3.Estructura de la memoria.....................................................................8
2.Estudio de viabilidad.................................................................................9
2.1.Planificación.......................................................................................9
2.2.Resultados.......................................................................................12
2.3.Partes interesadas.............................................................................12
2.4.Recursos humanos............................................................................12
2.5.Presupuesto.....................................................................................12
2.6.Riesgos............................................................................................12
2.7.El procesamiento del lenguaje natural.................................................13
2.7.1.La ambigüedad en el procesamiento del lenguaje natural.................13
2.8.La sentencia SELECT de SQL..............................................................15
2.9.Requisitos del sistema.......................................................................20
2.10.Sistemas de referencia.....................................................................22
3.Diseño e implementación de NQL..............................................................23
3.1.Arquitectura del sistema....................................................................24
3.2.Entorno de desarrollo........................................................................26
3.3.Front end. Interfaz gráfico de usuario..................................................31
3.4.Núcleo. Analizadores léxico y sintáctico................................................33
3.4.1.Consultas en primera persona......................................................40
3.5.Back end. Base de datos....................................................................40
3.6.Tratamiento de errores......................................................................42
4.Limitaciones y pruebas del sistema...........................................................43
4.1.Limitaciones.....................................................................................43
4.2.Pruebas...........................................................................................43
5.Conclusiones..........................................................................................44
5.1.Ampliación.......................................................................................44
5.1.1.Correcciones y sugerencias..........................................................45
5.1.2.Portabilidad................................................................................46
5.2.Valoración personal...........................................................................47
5.3.Conclusión final................................................................................47
6.Referencias............................................................................................48
7.Anexos..................................................................................................49
Página 3 de 75
UOC Proyecto Final de Carrera NQL (Natural Query Language)
Daniel Boerner
Anexo I. Instalación y ejecución...............................................................49
Anexo II. Consultas reconocidas...............................................................50
Anexo III. Léxico JLex: archivo NQL.jlex....................................................54
Anexo IV. Gramática CUP: archivo NQL.cup................................................57
Página 4 de 75
UOC Projecte Final de Carrera NQL (Natural Query Language)
Daniel Boerner
Figuras
Figura 1. Diagrama temporal de la planificación del proyecto...........................11
Figura 2. Diagrama de casos de uso.............................................................21
Figura 3. Arquitectura del sistema NQL.........................................................24
Figura 4. Diagrama de secuencia del sistema NQL.........................................26
Figura 5. Estructura de desarrollo en Eclipse.................................................27
Figura 5. Estructura de desarrollo en Eclipse (continuación)............................28
Figura 6. Pantalla del interfaz gráfico de usuario............................................31
Figura 7. Diagrama de flujo de datos del núcleo del sistema............................33
Figura 8. Diagrama sintáctico correspondiente a la producción pregunta...........37
Figura 9. Diagrama sintáctico correspondiente a la producción PP_1................37
Figura 10. Diagrama sintáctico correspondiente a la producción PP_1_1...........38
Figura 11. Diagrama sintáctico correspondiente a la producción PE_1...............38
Figura 12. Diagrama sintáctico correspondiente a la producción PE_1_1...........39
Figura 13. Diagrama sintáctico correspondiente a la producción PA_1...............39
Figura 14. Diagrama sintáctico correspondiente a la producción PA_1_1...........40
Figura 15. Diagrama del modelo Entidad - Relación........................................41
Página 5 de 75
UOC Proyecto Final de Carrera NQL (Natural Query Language)
Daniel Boerner
1. Introducción
Cada día es más importante obtener información a partir de los datos almacenados en
bases de datos. La cantidad de usuarios que requieren información aumenta con el
tiempo y las consultas de información son cada vez más complejas. Todo ello conlleva a
una necesidad de simplificar y optimizar la interacción entre los usuarios y los sistemas
de información que procesan bases de datos.
En este sentido, un primer paso fue en su día el desarrollo, la normalización, la
implementación y la aceptación del lenguaje SQL. Aún conociendo este lenguaje y
disponiendo de cierta habilidad en su uso, para obtener la información deseada es
necesario un conocimiento de la estructura de la base de datos relacional que se
consulta. Esto presenta un importante obstáculo a usuarios que no disponen de dichos
conocimientos.
1.1. Análisis del problema
Desde finales de los años sesenta se investiga en sistemas NLIDB (Natural Language
Interfaces to Databases) que permiten al usuario acceder a la información almacenada
en una base de datos tecleando consultas expresadas en un lenguaje natural.
Aunque algunos de los sistemas desarrollados a mediados de los años ochenta
presentan impresionantes características aplicados a áreas determinadas, su aceptación
y comercialización no ha progresado mucho desde entonces.
En un principio, los usuarios de estos sistemas no necesitan aprender un lenguaje
artificial como SQL para interactuar con la base de datos. En la práctica, sin embargo,
los sistemas en cuestión suelen responder únicamente a un sub
Comentarios de: NQL (Natural Query Language) (0)
No hay comentarios