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;

Documentos relacionados