Práctica 5 - Departamento de Lenguajes y Sistemas Informáticos
Transcripción
Práctica 5 - Departamento de Lenguajes y Sistemas Informáticos
UNIVERSIDAD DE SEVILLA E. T. S. INGENIERÍA INFORMÁTICA LENGUAJES Y SISTEMAS INFORMÁTICOS PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (3) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 ¿Qué es WordNet? Es una base de datos léxica en la que se registran las relaciones entre palabras (sinónimos, antónimos, hiperónimos, hipónimos, etc.). Estas relaciones pueden expresarse a través de synstets (viene de "set of synonyms"). En esta práctica procesaremos una versión simplificada de la notación usada por WordNet. Nuestras entradas serán ficheros de texto que contienen listas de synsets, por ejemplo: {pie, base, apoyo} {pie, extremidad @, miembro@} {pie, cabecera!} {árbol, vegetal @, pino~, abeto~} {blanco, claro, oscuro !} La herramienta WordNet genera índices para este tipo de ficheros y ofrece métodos de consulta que funcionan sobre esos índices. Los índices son necesarios ya que hay decenas de miles de synsets para un idioma como el inglés o el español y sería muy poco eficiente trabajar sin ellos. Estructura de un synset { vegetal @, árbol, pino~, abeto~ Operador Significado ~ hipónimo (subtipo) @ hiperónimo (supertipo) ! antónimo (lo contrario) } lista de palabras con y sin operadores (wordnet.flex) Escribe un analizador léxico para las bases de datos léxicas de WordNet. (wordnet.cup) Escribe un analizador sintáctico para las bases de datos léxicas de WordNet. Ejercicio: número de significados de una palabra (significados.cup) Atribuye la gramática para contar cuántos significados distintos tiene una palabra dada. Para hacer las pruebas se puede mantener la palabra en cuestión como un atributo del objeto Parser, por ejemplo: //---------------------------------------// Código Java de apoyo //---------------------------------------action code {: String consulta = new String("pie"); // Palabra buscada :} Por ejemplo si la palabra buscada es "pie", y la base de datos léxica es la siguiente, el resultado sería dos, a pesar de aparecer en tres synsets: {pie, base, apoyo} {pie, extremidad @, miembro @} {árbol, vegetal @, pino~, abeto~} {blanco, claro, oscuro !} {cabecera, pie!} Palabra: "pie" - Significados: 2 Ejercicio: detección de errores locales a un synset (erroresLocales.cup) Atribuye la gramática de manera que se detecten los siguientes errores dentro de un synset: •Que no haya sinónimos, por ejemplo: {pie~, base!, apoyo@ } •Que aparezca más de una vez el mismo sinónimo, por ejemplo: {pie, base, apoyo, pie} •Que una palabra sea antónimo de sí misma, por ejemplo: {extremidad@, pie, miembro@, pie!} •Que una palabra sea un hiperónimo de sí misma, por ejemplo: {árbol, vegetal, árbol@, abeto~} •Que una palabra sea un hipónimo de sí misma, por ejemplo: {árbol, vegetal, árbol~, abeto~} •Que coincidan en una misma palabra más de un operador, por ejemplo: {árbol, vegetal, abeto!, abeto~} Es de gran ayuda implementar las siguientes clases: Termino Synset String palabra; String modificador; Set Set Set Set ... ... sinonimos; hiponimos; hiperonimos; antonimos;