Procesamiento Automático del Lenguaje Natural
Realizado por:
José Eduardo Rivera Cabaleiro
Salwa Al Atassi González
Introducción I
Procesador Lingüístico: traduce del Lenguaje Natural (LN) a una representación formal equivalente.
Sistemas Expertos, Programas de Razonamiento […]: realizan operaciones lógicas sobre esa representación.
Introducción II
Existen volúmenes inmensos de información en LN
Se realizan operaciones sobre la información tales como búsqueda, comparación, traducción, …
Los computadores son más capaces de procesar la información que las personas, pero, ¿son capaces de entenderla?
El Lenguaje como Codificador-Descodificador
Procesador Lingüístico
Traduce la información entre la representación textual y la representación formal equivalente
Estructura (refleja la del lenguaje):Módulo fonético y fonológicoMódulo morfológicoMódulo sintácticoMódulo semántico y pragmático
Módulo Morfológico I
Diccionarios: lista de palabras de una lengua, junto con diversas informaciones: morfología, definición, etimología, estadísticas, …
Lexicón: forma típica de la entrada de los diccionarios que contiene información fonológica, morfológica, sintáctica y semántica
Formalismo de representación para codificar los datos
Ejemplos: los bilingües o multilingües recogen la correspondencia entre destintas lenguas
Módulo Morfológico II Diccionarios electrónicos:
Elementales: Léxico desplegado (inmanejable)
Lengua de expresión compleja: el lexicón proporciona la raíz y la información gramatical asociada, y un componente morfológico genera las posibles formas (ayuda a inferir funciones sintácticas)
Módulo Sintáctico I Las estructuras sintácticas se construyen con
una gramática, una especificación mediante reglas de reescritura de las estructuras permitidas en el lenguaje.
El tipo más común de gramáticas son las de contexto libre (CFGs)
CFG: es una cuádrupla (N,T,R,S) N = conjunto de símbolos No-Terminales T =conjunto de símbolos Terminales R= conjunto de Reglas de la forma α → β, α є N, β є
(N U T) S = axioma (No-Terminal)
Módulo Semántico y Pragmático II
La semántica estudia el significado del texto y desarrolla los métodos para formar este significado a través de una serie de representaciones sintácticas de las oraciones.
La pragmática estudia cómo las intenciones del autor del texto están expresadas en el texto, es decir, en un contexto dado
Problemas Generales
Ambigüedad: Léxica, sintáctica, … Conocimiento lingüístico: conocimiento
léxico y conocimiento general Conocimiento extralingüístico:
información obvia omitidaDiccionarios de relaciones entre objetos y de
escenarios de las relaciones típicasMétodos de aprendizaje semiautomático
PLN CON PROLOG
Características iniciales:Gramática como ReconocedorEntrada: lista de átomos (palabras)Diccionario: léxico desplegadoSintaxis: Uso de CFG con “difference list”Sin uso de Semántica ni Pragmática
Ejemplo I (Inicial) gram1.pl
o(Entrada,Resto) :- sn(Entrada,Parte), sv(Parte,Resto).sn(Entrada,Resto) :- det(Entrada,Parte), n(Parte,Resto).sv(Entrada,Resto) :- v(Entrada,Resto).sv(Entrada,Resto) :- v(Entrada, Parte), sn(Parte,Resto).
det(Entrada,Resto) :- terminal(that, Entrada, Resto).det(Entrada,Resto) :- terminal(those, Entrada, Resto).n(Entrada,Resto) :- terminal(boy, Entrada, Resto).n(Entrada,Resto) :- terminal(cakes, Entrada, Resto).v(Entrada,Resto) :- terminal(ate, Entrada, Resto).v(Entrada,Resto) :- terminal(slept, Entrada, Resto).
terminal(Palabra,[Palabra|Resto],Resto).%%o([that,boy,slept],[]).%%o(X,[]).
Gramática simple
Ejemplo II gram2.pl
Entrada: texto natural Usamos una función leer_texto(X) que nos
convierta una cadena de entrada en una lista de atomos
?- leer_texto(X),o(X,[]).
Ejemplo III gram3.pl
o(Entrada,Resto) :- sn(Entrada,Parte), sv(Parte,Resto).sn(Entrada,Resto) :- det(Numero,Entrada,Parte), n(Numero,Parte,Resto).sv(Entrada,Resto) :- v(_,Entrada,Resto).sv(Entrada,Resto) :- v(transitivo,Entrada, Parte), sn(Parte,Resto).
det(singular,Entrada,Resto) :- terminal(that, Entrada, Resto).det(plural,Entrada,Resto) :- terminal(those, Entrada, Resto).n(singular,Entrada,Resto) :- terminal(boy, Entrada, Resto).n(plural,Entrada,Resto) :- terminal(cakes, Entrada, Resto).v(transitivo,Entrada,Resto) :- terminal(ate, Entrada, Resto).v(intransitivoEntrada,Resto) :- terminal(slept, Entrada, Resto).
terminal(Palabra,[Palabra|Resto],Resto).%%o([those,boy,ate,that,cakes],[]).%%o(X,[]).
Restricciones de número y transitividad
Ejemplo IV
Restricciones semánticas Introducimos otra utilidad, generar estructuras
de la oración: Parser
o(o(SN,SV),Entrada,Resto) :- sn(SN,Entrada,Parte), sv(SV,Parte,Resto),not(SV=sv(_,SN)). %Rest. Sem.
sn(sn(Det,N),Entrada,Resto) :- det(Det,Numero,Entrada,Parte), n(N,Numero,Parte,Resto).
sv(sv(v(V)),Entrada,Resto) :- v(v(V),_,_,Entrada,Resto).sv(sv(v(V),SN),Entrada,Resto) :- v(v(V),Rasgo,transitivo,Entrada, Parte),
sn(SN,Parte,Resto), SN=sn(_,n(N)),T=..[Rasgo,N],call(T).
Ejemplo IV gram4.pl
det(det(that),singular,Entrada,Resto) :- terminal(that, Entrada, Resto).det(det(those),plural,Entrada,Resto) :- terminal(those, Entrada, Resto).
n(n(boy),singular,Entrada,Resto) :- terminal(boy, Entrada, Resto).n(n(cakes),plural,Entrada,Resto) :- terminal(cakes, Entrada, Resto).
% propiedad semantica de los nombrescomible(cakes).
v(v(ate),comible,transitivo,Entrada,Resto) :- terminal(ate, Entrada, Resto).v(v(slept),_,intransitivo,Entrada,Resto) :- terminal(slept, Entrada, Resto).
terminal(Palabra,[Palabra|Resto],Resto).
Añadiendo reglas morfológicas
Plural(Sing, Plur) :- convert (Sing, Singlista), concat(Base,[C,y],SingLista),
not(vocal(C)), concat(Base,[C,i,e,s],Plurlista), convert(Plur,Plurlista).
vocal(C) :- in(C,[a,e,i,o,u]).
plural(chil,children) :- !. plural(mouse,mice) :- !.
…
DCG: Definitive Clause Grammar
Formalismo desarrollado por Pereira y Warren (1980)
Reglas gramáticas: Parte_izq Parte_der (como Prolog)
El sistema se encarga del manejo de la entrada y de las “difference list” (elimina la necesidad de los dos predicados de análisis)
Usar: {} : Para los predicados con el formalismo propio de
Prolog [] : Para los nodos terminales (predefinido por el
sistema)
DCG: Ejemplo DCG.pl
o(o(SN,SV)) --> sn(SN), sv(SV),{not(SV=sv(_,SN))}.
sn(sn(Det,N)) --> det(Det,Numero), n(N,Numero).sv(sv(v(V))) --> v(v(V),_,_).sv(sv(v(V),SN)) --> v(v(V),Rasgo,transitivo), sn(SN),
{SN=sn(_,n(N)),T=..[Rasgo,N],call(T)}.
det(det(that),singular) --> [that].det(det(those),plural) --> [those].n(n(boy),singular) --> [boy].n(n(cakes),plural) --> [cakes].v(v(ate),comible,transitivo) --> [ate].v(v(slept),_,intransitivo) --> [slept].
comible(cakes).
Aplicacion DC: Traductor
:-use_module(input).:-use_module(output).traducir :- leer_texto(X), o(Y,X,[]), write_word(Y).
o(O) --> sn(SN,Numero), sv(SV,Numero),{not(SV=[_|SN]), concatena(SN,SV,O)}.sn([Det,N],Numero) --> det([Det],Numero,Genero), n([N],Numero,Genero).sv([V],Numero) --> v([V],_,_,Numero).sv([V|SN],Numero) --> v([V],Rasgo,transitivo,Numero), sn(SN,_),
{SN=[_|[N]],T=..[Rasgo,N],call(T)}.
Podemos crear nuevas aplicaciones sustituyendo la información de la estructura por otra que queramos
Aplicacion DCG MiTraductor.pl
%diccionario con correspondencia al español
det([aquel],singular,masculino) --> [that].det([aquella],singular,femenino) --> [that].det([aquellos],plural,masculino) --> [those].det([aquellas],plural,femenino) --> [those].n([niño],singular,masculino) --> [boy].n([niña],singular,femenino) --> [girl].n([pasteles],plural,masculino) --> [cakes].comible(pasteles).
v([comio],comible,transitivo,singular) --> [ate].v([comieron],comible,transitivo,plural) --> [ate].v([durmio],_,intransitivo,singular) --> [slept].v([durmieron],_,intransitivo, plural) --> [slept].
Aplicacion DC: Eliza Eliza.pl
Escrito por Joseph Weizenbaum en1960, Demuestra varios aspectos de PLN, por lo
que adquirió bastante popularidad Simula una entrevista con un doctor
psicoanalista neutral para que el paciente revele sus pensamientos y sentimientos de forma espontánea
Conclusiones sobre el uso de CFG
Dan lugar a algoritmos eficientes para muchas tareas de tratamiento del lenguaje
Unen la simplicidad, con la capacidad de expresión de una gran variedad de construcciones del lenguaje
Pero necesitan multiplicar las reglar para añadir características tales como género y número (y las restricciones semánticas en su caso)
Dependencias de larga distancia. Ejemplo “wh-” pueden servir como sintagma nominal
Aplicaciones de PALN
Comprensión del lenguaje Ayuda en preparación de texto Búsqueda y minería de texto Interfaces en LN Traducción automática Procesamiento de voz Generación de texto Conducción del diálogo
Comprensión del Lenguaje
Tarea final de la ciencia del análisis del texto
Comprensión del texto: transformación del mismo a una representación formal.
Resultados prácticos relativamente modestos
Avance en los sistemas del laboratorio, debido al esfuerzo principal que le dirige la lingüística computacional
Ayuda en Preparación de Texto
Ejemplo: herramientas de Microsoft Word Guiones Ortografía Gramática Estilo Hechos y coherencia lógica
Búsqueda y Minería de Texto
Desde encontrar documentos concretos, hasta descubrir conocimiento nuevo no escrito en ninguno de ellos
TIPOS: Búsqueda de documentos Responder preguntas Extracción de información Minería de texto
Interfaces en LN
El único modo de comunicarse con los computadores es mediante los lenguajes de programación
La educación computacional cuesta mucho dinero, y no es fácil de aprender
Alternativa: enseñar a un computador nuestro idioma y copiar el programa a los demás
Ejemplo sistema TRAINS de J.Allen
Traducción Automática
Traducir un texto consiste en “entender” ese texto y luego generarlo en otro idioma
Los traductores automáticos entienden algunas partes del texto y las traducen en el orden en que aparecen en el texto fuente
Ejemplo: “Juan le dio a María un pastel. Lo comió”
Procesamiento de Voz
El modo más natural para un ser humano es hablar y escuchar
La voz representa más información que el texto escrito
Existen grandes problemas técnicos de convertir los sonidos de la voz a las palabras
Existen grandes avances: sistemas capaces de hablar con los usuarios (ej. por teléfono)
Generación de Texto
El segundo componente de la comunicación es la capacidad de producir el texto o el habla
Es una tarea más simple que la comprensión
Dificultad: no hacer el texto aburrido, incoherente y a veces no entendible:
expresiones que se usan en un contexto dado (métodos de planificación contextual)
Conducción de Diálogo
La computadora aprende a entender y producir texto, ¿puede conversar con las personas?
Problemas: el contexto y el conocimiento general sobre los tipos de situaciones
El Futuro del PALN
Semántica y pragmática Lingüística de texto Hablar = saber + pensar Los computadores hablan con nosotros Los computadores hablan entre sí
(paradigma de programación orientada a agentes)
Conclusiones
El PLN es fácil de entender, posible y tiene gran importancia en nuestra época de información
Presenta dificultades, pero se desarrolla dinámicamente con grandes inversiones
Bibliografía
PROLOG for Natural Language Processing. Annie Gal, Guy Lapalme, Patrick Saint-Dizier and Harold Somers.
Avances y perspectivas de procesamiento automático de lenguaje natural (Cuento de una Máquina Parlante). Alexander Gelbukh, Igor Bolshakov. Laboratorio de Lenguaje Natural, Centro de Investigación en Computación, Instituto Politécnico Nacional (México). No responden.http://www.gelbukh.com/CV/Publications/2000/IPN-Proc-Leng-Nat.htm
Procesamiento de Lenguaje Natural. Lourdes Araujo.Universidad Complutense de Madrid.
http://www.fdi.ucm.es/profesor/lurdes/nlp/cap1.pdf