Download Procesamiento del lenguaje natural
Document related concepts
Transcript
Procesamiento del lenguaje natural F. J. Martı́n Mateos J. L. Ruiz Reina Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Contenidos Introducción Gramáticas independientes del contexto Gramáticas de cláusulas definidas Gramáticas probabilı́sticas Modelos probabilı́sticos: n-gramas Recuperación de la información Clasificación de documentos Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Sección 1 Sección 1 Introducción Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Introducción El Procesamiento del Lenguaje Natural es una disciplina de la Inteligencia Artificial que se ocupa de la formulación e investigación de mecanismos computacionales para la comunicación entre personas y máquinas mediante el uso de Lenguajes Naturales Los Lenguajes Naturales son los utilizados en la comunicación humana, ya sean escritos, hablados o signados Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Introducción Aplicaciones del Procesamiento del Lenguaje Natural: Comprensión del lenguaje Recuperación de la información Extracción de la información Búsqueda de respuestas Generación de discurso Traducción automática Reconstrucción de discurso Reconocimiento del habla Sı́ntesis de voz ... Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Fases de la comunicación (R&N) Intención: A quiere transmitir la proposición P a B Generación: A transforma P en la frase W Sı́ntesis: A envı́a W ′ a B (donde W ′ es la realización fı́sica de W) Percepción: B percibe W ′′ como la realización fı́sica W ′ y lo decodifica como la frase W2 Análisis: B infiere que W2 puede tener como posibles significados P1 , . . . , Pn Resolución de ambigüedades: B decide que Pi es el significado más probable de entre los posibles Incorporación: B decide si cree o no la proposición Pi Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Análisis del lenguaje Se analiza la estructura del lenguaje a cuatro niveles Análisis morfológico: El análisis de las palabras para extraer raı́ces, rasgos flexivos, unidades léxicas compuestas y otros fenómenos Análisis sintáctico. El análisis de la estructura sintáctica de la frase mediante una gramática de la lengua en cuestión Análisis semántico. La extracción del significado (o posibles significados) de la frase Análisis pragmático. El análisis de los significados más allá de los lı́mites de la frase, por ejemplo, para determinar los antecedentes referenciales de los pronombres Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Técnicas de análisis del lenguaje Las distintas fases y problemáticas del análisis del lenguaje se afrontan principalmente con las siguientes técnicas Técnicas lingüı́sticas formales: Se basan en el desarrollo de reglas estructurales que se aplican en las fases de análisis del lenguaje Técnicas probabilı́sticas: Se basan en el estudio en base a un conjunto de textos de referencia (corpus) de caracterı́sticas de tipo probabilı́stico asociadas a las distintas fases de análisis del lenguaje Modelos para el procesamiento del lenguaje natural Lógicos (gramáticas) Probabilı́sticos (basados en corpus) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Sección 2 Sección 2 Gramáticas independientes del contexto Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Gramáticas independientes de contexto Una gramática independiente de contexto está formada por: Un conjunto de sı́mbolos terminales T (las palabras) Un conjunto de sı́mbolos no terminales N (los constituyentes o categorı́as sintácticas) Un sı́mbolo no terminal inicial S Un conjunto de reglas de producción, que indican las maneras en que se puede derivar una oración valida a partir del sı́mbolo inicial Estas reglas son de la forma N =⇒ W , donde N ∈ N y W ∈ (N ∪ T )∗ Usualmente, para describir una gramática, sólo se proporcionan las reglas Los sı́mbolos no terminales se escriben en mayúsculas y son los únicos que pueden aparecer en el lado izquierdo de las reglas Los sı́mbolos terminales se escriben en minúsculas El sı́mbolo inicial es siempre el mismo: S Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Gramáticas independientes de contexto Ejemplo S NP VP PP DT N V P =⇒ NP VP =⇒ DT N |N |NP PP =⇒ V NP |V |VP PP =⇒ P NP |P =⇒ el | los =⇒ hombre | amigos | café | leche =⇒ toma | toman =⇒ con | solo Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Gramáticas independientes de contexto Utilizando las reglas de la gramática, podemos derivar oraciones Una regla se aplica sustituyendo el sı́mbolo que aparece en la parte izquierda por los que aparecen en su parte derecha Una derivación es la aplicación sucesiva de reglas hasta obtener una expresión que sólo contiene sı́mbolos terminales Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Gramáticas independientes de contexto Ejemplo S =⇒ =⇒ =⇒ =⇒ =⇒ =⇒ =⇒ =⇒ NP DT el el el el el el VP N VP N VP hombre hombre hombre hombre hombre VP V NP toma NP toma N toma café Podemos abreviar la derivación de la siguiente forma: S =⇒∗ el hombre toma café Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Gramáticas independientes de contexto La forma en que se ha realizado la derivación se puede capturar con un árbol de derivación sintáctica Ejemplo: S VP NP DT N V NP el hombre toma N café Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Gramáticas independientes de contexto El lenguaje generado por una gramática G es el conjunto de frases s para las que existe una derivación: L(G) = {s ∈ T ∗ |S =⇒∗ s} Formas de utilizar una gramática: Para generar texto Para analizar texto (parsing), obteniendo el árbol sintáctico Existen numerosos algoritmos de parsing eficientes (compiladores) Las gramáticas independientes del contexto son muy útiles para procesar lenguajes formales (con pocos sı́mbolos terminales y pocas reglas) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Limitaciones de la gramáticas independientes de contexto Los lenguajes naturales son mucho más expresivos que los lenguajes descritos por gramáticas independientes de contexto Concordancia morfológica: género, número, tiempos verbales, pronombres. Por ejemplo, S =⇒∗ el amigos toma café Por ejemplo, deberı́amos tener un conjunto de reglas para frases en plural y otro para frases en singular. El número de reglas aumenta exponencialmente si se quieren tener en cuenta todas las concordancias Otro problema: ambigüedades sintáctica y semántica La misma frase tiene distintos árboles de derivación sintáctica, aunque sólo uno de ellos es correcto a nivel semántico: Él toma café con leche La misma frase tiene distintos árboles de derivación sintáctica, y ambas son correctas a nivel semántico: Él toma café solo Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Sección 3 Sección 3 Gramáticas de clausulas definidas Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Aumentando la capacidad expresiva: GCDs Una gramática de cláusulas definidas (GCD) es similar a una gramática independiente de contexto, pero considera que los sı́mbolos no terminales son sı́mbolos de predicados Y por tanto pueden llevar argumentos. Estos argumentos se pueden utilizar para implementar concordancia morfológica o extracción de significado, entre otras aplicaciones. GCD con concordancia de género y número oracion --> sintagma_nominal(N), verbo(N), complemento. complemento --> []. complemento --> sintagma_nominal(N). sintagma_nominal(N) --> nombre(G,N). sintagma_nominal(N) --> determinante(G,N),nombre(G,N). verbo(N) --> [P],{es_verbo(P,N)}. nombre(G,N) --> [P],{es_nombre(P,G,N)}. determinante(G,N) --> [P],{es_determinante(P,G,N)}. Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Notación en las gramáticas de cláusulas definidas Frases: listas de palabras. Ejemplo: [la,profesora,lee,un,libro] Sı́mbolos no terminales: sı́mbolos de predicado Variables en los argumentos: mayúsculas o mudas Sı́mbolos terminales: listas unitarias. Ejemplo: [el] Colocamos entre llaves cualquier llamada a predicados externos a la gramática. Ejemplo: {es_verbo(P,N)} Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Definiendo el léxico de la gramática del ejemplo Las llamadas externas pueden servir, entre otras cosas, para separar el léxico de las reglas sintácticas. Basta con incluir los siguientes hechos: Léxico es_nombre(profesor,masculino,singular). es_nombre(profesores,masculino,plural). es_nombre(profesora,femenino,singular). es_nombre(profesoras,femenino,plural). es_nombre(libro,masculino,singular). es_nombre(libros,masculino,plural). es_determinante(el,masculino,singular). es_determinante(los,masculino,plural). es_determinante(la,femenino,singular). es_determinante(las,femenino,plural). es_determinante(un,masculino,singular). es_determinante(una,femenino,singular). es_determinante(unos,masculino,plural). es_determinante(unas,femenino,plural). es_verbo(lee,singular). es_verbo(leen,plural). Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Reglas GCD como reglas en lógica de primer orden Cada regla de la gramática se puede convertir a una regla lógica (clausula definida) en la que cada sı́mbolo no terminal se corresponde con un predicado con los mismos argumentos más un argumento adicional que representa la sublista de palabras que se analiza según la categorı́a gramatical que representa el sı́mbolo. Ejemplo: la regla sintagma_nominal(N) --> determinante(G,N),nombre(G,N). se traduce a la regla lógica: determinante(G,N,S1) ∧ nombre(G,N,S2) → sintagma_nominal(N,S1@S2) (aquı́ @ representa concatenación) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Reglas GCD como reglas en lógica de primer orden Para las reglas correspondientes a sı́mbolos terminales, la traducción es algo distinta. Ejemplo: la regla nombre(G,N) --> [P],{es_nombre(P,G,N)}. se traduce a la regla lógica: es_nombre(P,G,N) → nombre(G,N,[P]) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Gramáticas de cláusulas definidas y SLD-resolución Con esa visión de una GCD como un conjunto de reglas, el analizar sintácticamente según una GCD puede reducirse a deducir usando SLD-resolución Las GCDs surgen como una extensión al lenguaje Prolog De hecho, se pueden escribir tal cual en cualquier intérprete de Prolog, y de esa manera se tiene directamente un analizador sintáctico, usando el predicado phrase (y considerando que las frases como listas de palabras): ?- phrase(oración,[la,profesora,lee,un,libro]). Yes ?- phrase(oración,[las,profesores,lee,los,libro]). No Incluso tenemos un generador de frases del lenguaje: ?- phrase(oración,L). L=[la,profesora,lee,un,libro]; .... Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Lenguajes expresables por GCDs Incluso en lenguajes formales, GCDs son más expresivas que GIC. GCD que define el lenguaje L = {a2n b2n c2n : n ∈ N}, no expresable con una GIC: GCD para el lenguaje L = {a2n b2n c2n : n ∈ N} palabra a(0) a(s(N)) b(0) b(s(N)) c(0) c(s(N)) --> --> --> --> --> --> --> a(N), b(N), c(N), {par(N)}. []. [a],a(N). []. [b],b(N). []. [c],c(N). par(0). par(s(s(N))) :- par(N). Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Análisis semántico ¿Cómo representar el significado de una frase? En general, se trata de expresarlo mediante algún lenguaje formal Esto permite que una máquina pueda realizar las acciones adecuadas al mensaje emitido (almacenar información, responder preguntas razonadamente,. . . ) En nuestro caso, usaremos la lógica de primer orden como lenguaje de representación Podrı́amos usar cualquier otro formalismo de representación Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Análisis semántico Ejemplos de significados asignados a frases: Juan es alto: alto(juan) Pedro bebe agua: bebe(pedro, agua) Todo hombre tiene alma: ∀x[hombre(x) → tiene(x, alma)] Algún hombre tiene dinero: ∃x[hombre(x) ∧ tiene(x, dinero)] Todo hombre que no come pan no tiene dinero: ∀x[(hombre(x) ∧ ¬come(x, pan)) → ¬tiene(x, dinero)] Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Un caso simple de construcción de significado ¿Cuál es el significado de la frase “Juan es alto”? Significado de “Juan”: el término (constante) juan Significado de “es”: es sólo un nexo de unión del sujeto con el adjetivo que lo califica (no aporta significado) Significado de “alto”: predicado unario alto que expresa una propiedad sobre alguien; puede verse como una función tal que dado un sujeto, devuelve la afirmación de que dicho sujeto es alto; dicha función se representa usualmente por λx.alto(x) El significado de la frase completa se obtiene aplicando el significado del sintagma verbal al significado del sintagma nominal: (λx.alto(x))(juan) = alto(juan) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Semántica composicional Hipótesis composicional: el significado de una categorı́a sintáctica se obtiene a partir del significado de las subcategorı́as que lo componen Esta hipótesis no siempre es cierta, pero simplifica el análisis semántico Pasando parte del trabajo a la fase de eliminación de ambigüedades oracion alto(juan) sn sv juan lambda(x,alto(x)) n verbo juan juan atributo lambda(x,alto(x)) es adjetivo lambda(x,alto(x)) alto Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Extracción de significado En lugar de tener una lambda como significado, en la GCD tenemos como argumentos separados sus componentes: en este caso, uno para la variable y otro para el cuerpo GCD para extracción de significado oración(SSV) --> sintagma_nominal(SSN), sintagma_verbal(SSN,SSV). sintagma_nominal(SNP) --> nombre_propio(SNP). sintagma_verbal(X,SA) --> verbo_cop,atributo(X,SA). atributo(X,SA) --> adjetivo(X,SA). verbo_cop --> [es]. nombre_propio(juan) --> [juan]. nombre_propio(pedro) --> [pedro]. adjetivo(X,alto(X)) --> [alto]. adjetivo(X,bajo(X)) --> [bajo]. El mecanismo de unificación sirve para “componer” el resultado ?- phrase(oración(S),[juan,es,alto]). S = alto(juan) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Frases con verbos transitivos Significado de un verbo transitivo: predicado que relaciona el sujeto con el objeto directo. Por ejemplo, el significado del verbo “come” es la función λx.λy .come(x, y ) GCD para frases con verbos transitivos oración(SSV) --> sujeto(SS), sintagma_verbal(SS,SSV). sujeto(SNP) --> nombre_propio(SNP). sintagma_nominal(SN) --> nombre(SN). sintagma_verbal(X,SV) --> verbo_trans(X,SN,SV), sintagma_nominal(SN). verbo_trans(X,Y,come(X,Y)) --> [come]. verbo_trans(X,Y,bebe(X,Y)) --> [bebe]. nombre_propio(juan) --> [juan]. nombre_propio(pedro) --> [pedro]. nombre(pan) --> [pan]. nombre(agua) --> [agua]. Ejemplo de sesión ?- phrase(oración(S),[pedro,come,pan]). S = come(pedro, pan) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Frases con determinantes todo y algún En la lógica de primer orden, estos determinantes se corresponden con los cuantificadores universal y existencial Ejemplos: “Todo andaluz come pescado”: ∀x[andaluz(x) → come(x, pescado)] “Algún informático tiene dinero”: ∃x[informatico(x) ∧ tiene(x, dinero)] En la GCD que veremos a continuación se define su significado ası́: determinante(X,Prop,SSV,existe(X, Prop y SSV)) --> [algún]. determinante(X,Prop,SSV,para_todo(X, Prop => SSV)) --> [todo]. El significado de estos determinantes es un “esqueleto” de fórmula lógica, que se irá concretando a medida que se analice la frase. Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Frases con determinantes todo y algún GCD para frases con determinantes todo y algún :-op(600,xfy,’=>’). :-op(900,xfy,y). oración(S) --> sujeto_det(X,SSV,S), sintagma_verbal(X,SSV). sujeto_det(X,SSV,S) --> determinante(X,Prop,SSV,S), nombre_propiedad(X,Prop). determinante(X,Prop,SSV,existe(X, Prop y SSV)) --> [algún]. determinante(X,Prop,SSV,para_todo(X, Prop => SSV)) --> [todo]. objeto_directo(SN) --> nombre(SN). sintagma_verbal(X,SV) --> verbo_trans(X,SN,SV), objeto_directo(SN). sintagma_verbal(X,SV) --> verbo_cop,nombre_propiedad(X,SV). Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Frases con determinantes todo y algún GCD para frases con determinantes todo y algún verbo_trans(X,Y,tiene(X,Y)) --> [tiene]. verbo_trans(X,Y,come(X,Y)) --> [come]. verbo_cop --> [es]. nombre(pan) nombre(pescado) nombre(carne) nombre(dinero) nombre(coche) --> --> --> --> --> [pan]. [pescado]. [carne]. [dinero]. [coche]. nombre_propiedad(X,hombre(X)) nombre_propiedad(X,carpintero(X)) nombre_propiedad(X,informático(X)) nombre_propiedad(X,andaluz(X)) nombre_propiedad(X,francés(X)) nombre_propiedad(X,europeo(X)) Inteligencia Artificial II 2012–2013 --> --> --> --> --> --> [hombre]. [carpintero]. [informático]. [andaluz]. [frances]. [europeo]. Procesamiento del lenguaje natural Frases con determinantes todo y algún Sesión ?- phrase(oración(S),[todo,andaluz,come,pescado]). S = para_todo(X, andaluz(X) => come(X, pescado)) ?- phrase(oración(S),[algún,informático,tiene,dinero]). S = existe(X, informático(X) y tiene(X, dinero)) ?- phrase(oración(S),[algún,informático,es,andaluz]). S = existe(X, informático(X) y andaluz(X)) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Aplicación: razonamiento y lenguaje natural Mantenimiento y consultas de una base de conocimiento usando lenguaje natural El conocimiento se aserta en lenguaje natural (y es incluido en lenguaje formal) La respuesta a una consulta se da en lenguaje natural y puede implicar deducir información a partir de lo afirmado anteriormente Cada frase en la comunicación hombre-máquina es analizada semánticamente: Del humano hacia la máquina: lenguaje natural a lenguaje formal De la máquina hacia el humano: lenguaje formal a lenguaje natural El razonamiento lo realiza la máquina usando las expresiones formales (con SLD-resolución, por ejemplo) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Aplicación: razonamiento y lenguaje natural Sesión con adición de información y con consultas: ?- consulta([]). ? [juan,es,andaluz]. ? [¿, quién, es, andaluz, ?]. ! [juan, es, andaluz] ? [¿, es, juan, europeo, ?]. ! No ? [todo, andaluz, es, europeo]. ? [¿, es, juan, europeo, ?]. ! [juan, es, europeo] ? [¿, quién, es, europeo, ?]. ! [juan, es, europeo] ? muestra_reglas. ! [todo, andaluz, es, europeo] ! [juan, es, andaluz] ? fin. Yes Esta sesión corresponde a un programa Prolog que usa una GCD para el análisis semántico y SLD-resolución para la deducción. Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Sección 4 Sección 4 Gramáticas probabilı́sticas Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Modelos probabilı́sticos del lenguaje Un modelo probabilı́stico del lenguaje define una distribución de probabilidad sobre el conjunto de las cadenas de caracteres o de palabras, a partir del análisis de un corpus Un corpus es una colección grande de textos, escritos por y para humanos Es decir, cada frase tiene asociada una probabilidad y estas probabilidades se aprenden a partir de un corpus o se calculan a partir de las aprendidas Los distintos modelos probabilı́sticos del lenguaje se caracterizarán por las propiedades de independencia asumidas, y la forma en la que se calcula la probabilidad de una frase Ventajas: Reflejan mejor la realidad del lenguaje y son más robustos Se aprenden a partir de textos Resuelven ambigüedades Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Un modelo probabilı́stico basado en gramáticas Una gramática independiente de contexto probabilı́stica es igual a una gramática independiente de contexto en la que cada regla tiene asociada una probabilidad La regla N =⇒ W 1 , . . . , W n tiene asociada la probabilidad P(N =⇒ W 1 , . . . , W n |N) La suma de las probabilidades asociadas a las reglas con un mismo sı́mbolo no terminal en su parte izquierda es 1: P n P(N =⇒ Wj1 , . . . , Wj j |N) = 1 j Estas gramáticas permiten calcular la probabilidad de una derivación sintáctica a partir de las probabilidades de todas las reglas que se han aplicado La probabilidad de cada regla se aprende analizando colecciones de textos (corpus) De esta forma se intenta resolver la ambigüedad sintáctica: tómese el árbol de derivación más probable Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Gramáticas probabilı́sticas Ejemplo S NP VP PP DT N V P =⇒ NP VP 1,0 =⇒ DT N 0,4 |N 0,2 |NP PP 0,4 =⇒ V NP 0,5 |V 0,2 |VP PP 0,3 =⇒ P NP 0,8 |P 0,2 =⇒ el | los 0,50 c.u. =⇒ hombre | amigos | café | leche 0,25 c.u. =⇒ toma | toman 0,50 c.u. =⇒ con | solo 0,50 c.u. Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Gramáticas probabilı́sticas Ejemplo S1,0 NP0,4 DT0,5 el N0,25 S1,0 NP0,4 VP0,5 V0,5 hombre toma NP0,4 NP0,2 PP0,2 N0,25 P0,5 café solo DT0,5 el VP0,3 VP0,5 N0,25 PP0,2 hombre V0,5 NP0,2 P0,5 toma N0,25 solo café Probabilidad del primer análisis: 0,000025 Probabilidad del segundo análisis: 0,0000187 Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Gramáticas probabilı́sticas Ventajas Dan una idea probabilı́stica de lo buena que es una derivación sintáctica de una frase, permitiendo decidir ante una ambigüedad Las reglas probabilı́sticas se pueden aprender a partir de un conjunto de ejemplos correctamente formado Inconvenientes La probabilidad de una frase depende únicamente de la derivación sintáctica y no tiene en cuenta el contexto léxico: La frase el amigos toma hombre tiene la misma probabilidad que el hombre toma café Las frases cortas tienen mayor probabilidad que las largas Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Sección 5 Sección 5 Modelos n-gram Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Modelos probabilı́sticos basados en n-grams De manera general, dada una secuencia de palabras w1 ... wn , su probabilidad se podrı́a calcula de la siguiente forma: P(w1 ... wn ) = P(w1 )P(w2 |w1 ) · · · P(wn |w1 , . . . , wn−1 ) Intuitivamente, cada P(wi |w1 , . . . , wi−1 ) es la probabilidad de que (en el lenguaje modelado) aparezca la palabra wi a continuación de la secuencia w1 , . . . , wi−1 Estas probabilidades se aprenden a partir de un corpus Pero en la práctica es imposible saber la probabilidad de cada palabra condicionada a cada posible secuencia de palabras anteriores. Por esto, se toman determinadas suposiciones de independencia que simplifican el modelo (a costa de perder precisión) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Modelos n-gram Modelo unigram: Se asume independencia entre palabras consecutivas Y N(wi ) P(w1 ... wn ) = P(wi ) con P(wi ) = N i Donde N(wi ) es el número de ocurrencias de la palabra wi en el corpus y N es el número total de palabras (incluyendo repeticiones) Modelo bigram: Se asume dependencia entre una palabra y la anterior, pero independencia con las demás Y N(wi wj ) P(w1 ... wn ) = P(w1 ) P(wi+1 |wi ) con P(wj |wi ) = N(wi ) i Donde N(wi wj ) es el número de ocurrencias de la secuencia (bigram) wi wj en el corpus Un bigram está formado por dos palabras consecutivas en el corpus Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Modelos n-gram Modelo trigram: Se asume dependencia entre una palabra y las dos anteriores, pero independencia incondicional con las demás Y P(w1 ... wn ) = P(w1 )P(w2 |w1 ) P(wi+2 |wi+1 , wi ) i Un trigram está formado por tres palabras consecutivas en el corpus Modelo n-gram: Generalización de los modelos anteriores Un n-gram está formado por n palabras consecutivas en el corpus En estos modelos probabilı́sticos, salvo el unigram, se tienen en cuenta relaciones contextuales léxicas, que no suelen aparecer en los modelos gramaticales Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Generación de frases con modelos n-gram Para ilustrar las capacidades de los modelos n-gram, podemos generar frases aleatorias siguiendo un muestreo a partir de dichos modelos Experimento: a partir el libro de texto de Russel& Norvig, “Artificial Intelligence: A Modern Approach”, constuimos modelos unigram, bigram y trigram. Resultados generando secuencias de palabras en cada uno de esos modelos: Unigram: logical are as confusion a may right tries agent goal the was ... Bigram: systems are very similar computational approach would be represented ... Trigram: planning and scheduling are integrated the success of naive bayes model ... Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Suavizado en modelos n-gram En un modelo n-gram, la probabilidad de gran cantidad de las n-secuencias de palabras será nula El número total de n-secuencias de palabras es muy superior al número de n-secuencias que aparecen en el corpus Esto hace que una secuencia de texto perfectamente válida pueda tener probabilidad nula si alguna de sus n-secuencias componentes nunca aparece en el corpus Para evitar esto se utilizan técnicas de suavizado La técnica de suavizado más simple consiste en sumar 1 a los numeradores de las probabilidades individuales y compensar la suma total aumentando adecuadamente los denominadores (Ley de Laplace) Otra técnica de suavizado consiste en realizar una combinación lineal de varios modelos probabilı́sticos Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Suavizado en modelos n-gram: ley de Laplace Modelo unigram suavizado: N(w ) + 1 N + V1 Donde V1 es el número total de palabras distintas en el corpus P(w ) = Modelo bigram suavizado: N(wi wj ) + 1 N(wi ) + V2 Donde V2 es el número total de bigrams distintos en el corpus P(wj |wi ) = Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Suavizado en modelos n-gram: interpolación lineal Es probable que un trigram w1 w2 w3 aparezca muy poco en el corpus, pero que w2 w3 o w3 sean muy frecuentes En esta situación el modelo trigram proporciona una probabilidad muy baja a la secuencia w1 w2 w3 , pero los modelos bigram y unigram no Una forma de suavizar el modelo trigram consiste en combinarlo con los modelos bigram y unigram, de forma que: P(w3 |w1 , w2 ) = λ3 P3 (w3 |w1 , w2 ) + λ2 P2 (w3 |w2 ) + λ1 P1 (w3 ) Donde P1 es la probabilidad según el modelo unigram, P2 es la probabilidad según el modelo bigram, P3 es la probabilidad según el modelo trigram y λ1 + λ2 + λ3 = 1 De forma general se puede suavizar un modelo n-gram combinándolo como modelos (n−1)-gram, ..., bigram y unigram Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Evaluación de modelos n-gram ¿Cómo de bueno es el modelo probabilı́stico obtenido a partir de un corpus? Usualmente, separamos el corpus en dos partes: una para entrenamiento y otra para tests Una vez obtenido el modelo probabilı́stico a partir del corpus de entrenamiento, evaluamos éste calculando las probabilidades que éste asigna a las cadenas de texto del corpus de prueba Para evitar probabilidades demasiado pequeñas, se usa lo que se conoce como perplejidad: Perplejidad(frase) = 2−log2 (P(frase))/N donde N es el número de palabras de la frase Cuanto menor la perplejidad, mejor es el modelo Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Una aplicación del modelo unigram: segmentación Problema: Determinar las palabras de un texto en el que no hay espacios en blanco Esta tarea es necesaria en la interpretación de lenguajes que se escriben sin espacios en blanco, como el Japonés o el Chino Ejemplo: Supongamos el siguiente texto sin espacios en blanco Esfácilleerfrasessinespaciosenblanco El objetivo es obtener la frase original con un cierto grado de confianza en que ası́ lo es Es fácil leer frases sin espacios en blanco Este proceso se puede llevar a cabo fácilmente con un modelo unigram del lenguaje Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Una aplicación del modelo unigram: segmentación Consideremos un modelo unigram de un corpus P La probabilidad de cada palabra se calcula como la frecuencia relativa de aparición de dicha palabra en el corpus (estimador de máxima verosimilitud) Dado un texto sin espacios en blanco w de longitud n Una segmentación de w es una secuencia de palabras l = w1 ... wk cuya concatenación es igual a w Notaremos por wil la i-ésima palabra en la segmentación l de w El objetivo consiste en encontrar la segmentación l con mayor probabilidad Y argmax P(l) = argmax P(wil ) l Inteligencia Artificial II 2012–2013 l i Procesamiento del lenguaje natural Algoritmo de segmentación Entrada: Una distribución de probabilidad de palabras obtenida a partir de un modelo unigram de un corpus P y una cadena de texto Salida: Una cadena de texto idéntica a la de entrada salvo por la inclusión de espacios en blanco para separar palabras Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Algoritmo de segmentación 1. Sean N = LONGITUD(TEXTO), PALABRAS un vector vacı́o de longitud N+1, MEJOR un vector de longitud N+1 inicializado a 0 y MEJOR[0] = 1 2. Para cada I desde 0 a N 2.1. Para cada J desde 0 a I-1 2.1.1. Sea PALABRA = TEXTO[J+1,I] 2.1.2. Si P[PALABRA] * MEJOR[J] >= MEJOR[I] entonces 2.1.2.1. Sea MEJOR[I] = P[PALABRA] * MEJOR[J] 2.1.2.2. Sea PALABRAS[I] = PALABRA 3. Sea SALIDA una cadena vacı́a e I = N 4. Mientras I > 0 hacer 4.1. SALIDA = ’ ’ + PALABRAS[I] + SALIDA 4.2. I = I - LONGITUD(PALABRAS[I]) 5. Devolver SALIDA Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Algoritmo de segmentación Interpretación de los vectores auxiliares El vector PALABRAS almacena en cada posición I la mejor palabra que se ha encontrado terminando en la posición I del texto de entrada El vector MEJOR almacena en cada posición I la probabilidad de la mejor segmentación del texto de entrada hasta la posición I Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Algoritmo de segmentación Interpretación de la doble iteración (punto 2 del algoritmo) El algoritmo considera cualquier subcadena del texto de entrada para ver con que grado de probabilidad dicha subcadena es una palabra completa A continuación se calcula la probabilidad de la mejor segmentación del texto de entrada hasta la posición I en la que la última palabra es la subcadena considerada De todas las posibilidades se queda con la mejor, que es almacenada en la posición I-ésima de los vectores PALABRAS y MEJOR Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Algoritmo de segmentación Obtención de la secuencia de salida En la posición N-ésima del vector PALABRAS se encuentra la última palabra de la mejor segmentación del texto de entrada Para determinar cual es la palabra anterior hay que acceder a la posición del vector PALABRAS que se obtiene restando de la posición actual el valor de la longitud de la última palabra considerada Todas las palabras de la mejor segmentación obtenida se concatenan para formar la salida Obsérvese que en MEJOR[N] está almacenada la probabilidad de la segmentación obtenida Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Ejemplo del algoritmo de segmentación TEXTO = "lacadenaestarota" MEJOR[0] = 1 I = 1, J = 0: PALABRA = "l" P["l"] = 53.2e-6 MEJOR[1] = 53.2e-6 PALABRAS[1] = "l" I = 2, J = 0: PALABRA = "la" P["la"] = 32072.3e-6 MEJOR[2] = 32072.3e-6 PALABRAS[2] = "la" I = 2, J = 1: PALABRA = "a" P["a"] = 17230.6e-6 17230.6e-6 * 53.2e-6 = 0.917e-6 I = 3, J = 0: PALABRA = "lac" P["lac"] = 0.2e-6 MEJOR[3] = 0.2e-6 PALABRAS[3] = "lac" I = 3, J = 1: PALABRA = "ac" P["ac"] = 2.1e-6 2.1e-6 * 53.2e-6 = 0.0001117e-6 I = 3, J = 2: PALABRA = "c" P["c"] = 138.1e-6 138.1e-6 * 32072.3e-6 = 4.429e-6 MEJOR[3] = 4.429e-6 PALABRAS[3] = "c" I = 4, J = 0: PALABRA = "laca" P["laca"] = 3.0e-6 MEJOR[4] = 3.0e-6 PALABRAS[4] = "laca" I = 4, J = 1: PALABRA = "aca" P["aca"] = 0.6e-6 0.6e-6 * 53.2e-6 = 0.00003192e-6 I = 4, J = 2: PALABRA = "ca" P["ca"] = 8.1e-6 8.1e-6 * 32072.3e-6 = 0.2598e-6 I = 4, J = 3: PALABRA = "a" P["a"] = 17230.6e-6 17230.6e-6 * 4.429e-6 = 0.07631e-6 Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Ejemplo del algoritmo de segmentación I = 5, J = 0: PALABRA = "lacad" P["lacad"] = 0 MEJOR[5] = 0 PALABRAS[5] = "lacad" I = 5, J = 1: PALABRA = "acad" P["acad"] = 1.1e-6 1.1e-6 * 53.2e-6 = 0.00005852e-6 I = 5, J = 2: PALABRA = "cad" P["cad"] = 0.6e-6 0.6e-6 * 32072.3e-6 = 0.01924e-6 MEJOR[5] = 0.01924e-6 PALABRAS[5] = "cad" I = 5, J = 3: PALABRA = "ad" P["ad"] = 7.9e-6 7.9e-6 * 4.429e-6 = 0.00003499e-6 I = 5, J = 4: PALABRA = "d" P["d"] = 139.2e-6 139.2e-6 * 3.0e-6 = 0.0004176e-6 La mejor segmentación hasta la quinta letra del texto de entrada es: la cad Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Ejemplo del algoritmo de segmentación I = 6, J = 0: PALABRA = "lacade" P["lacade"] = 0 MEJOR[6] = 0 PALABRAS[6] = "lacade" I = 6, J = 1: PALABRA = "acade" P["acade"] = 0 I = 6, J = 2: PALABRA = "cade" P["cade"] = 0.5e-6 0.5e-6 * 32072.3e-6 = 0.0001604e-6 MEJOR[6] = 0.0001604e-6 PALABRAS[6] = "cade" I = 6, J = 3: PALABRA = "ade" P["ade"] = 0.7e-6 0.7e-6 * 4.429e-6 = 0.0000031003e-6 I = 6, J = 4: PALABRA = "de" P["de"] = 50999.7e-6 50999.7e-6 * 3.0e-6 = 0.153e-6 MEJOR[6] = 0.153e-6 PALABRAS[6] = "de" I = 6, J = 5: PALABRA = "e" P["e"] = 644.2e-6 644.2e-6 * 0.01924e-6 = 0.00001239e-6 La mejor segmentación hasta la sexta letra del texto de entrada es: laca de Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Ejemplo del algoritmo de segmentación I = 7, J = 0: PALABRA = "lacaden" P["lacaden"] = 0 MEJOR[7] = 0 PALABRAS[7] = "lacaden" I = 7, J = 1: PALABRA = "acaden" P["acaden"] = 0 I = 7, J = 2: PALABRA = "caden" P["caden"] = 0 I = 7, J = 3: PALABRA = "aden" P["aden"] = 0 I = 7, J = 4: PALABRA = "den" P["den"] = 15.3e-6 15.3e-6 * 3.0e-6 = 0.0000459e-6 MEJOR[7] = 0.0000459e-6 PALABRAS[7] = "den" I = 7, J = 5: PALABRA = "en" P["en"] = 22695.0e-6 22695.0e-6 * 0.6e-6 = 0.013617e-6 MEJOR[7] = 0.013617e-6 PALABRAS[7] = "en" I = 7, J = 6: PALABRA = "n" P["n"] = 59.9e-6 59.9e-6 * 0.153e-6 = 0.0000091647e-6 La mejor segmentación hasta la séptima letra del texto de entrada es: la cad en Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Ejemplo del algoritmo de segmentación I = 8, J = 0: PALABRA = "lacadena" P["lacadena"] = 0 MEJOR[8] = 0 PALABRAS[8] = "lacadena" I = 8, J = 1: PALABRA = "acadena" P["acadena"] = 0 I = 8, J = 2: PALABRA = "cadena" P["cadena"] = 40.3e-6 40.3e-6 * 32072.3e-6 = 1.29251369e-6 MEJOR[8] = 1.29251369e-6 PALABRAS[8] = "cadena" I = 8, J = 3: PALABRA = "adena" P["adena"] = 0 I = 8, J = 4: PALABRA = "dena" P["dena"] = 0.1e-6 0.1e-6 * 3.0e-6 = 0.0000003e-6 I = 8, J = 5: PALABRA = "ena" P["ena"] = 0.3e-6 0.3e-6 * 0.01924e-6 = 0.000000005772e-6 I = 8, J = 6: PALABRA = "na" P["na"] = 7.1e-6 7.1e-6 * 0.153e-6 = 0.0000010863e-6 I = 8, J = 7: PALABRA = "a" P["a"] = 17230.6e-6 17230.6e-6 * 0.013617e-6 = 0.0002346290802e-6 La mejor segmentación hasta la octava letra del texto de entrada es: la cadena Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Algoritmo de segmentación Observaciones La segmentación más probable de elundecimo es el un decimo El algoritmo da preferencia a palabras pequeñas (más frecuentes) frente a palabras grandes (menos frecuentes) El modelo unigram no tiene en cuenta relaciones contextuales léxicas por lo que el algoritmo considerará como más probables algunas segmentaciones sin sentido Un proceso similar se aplica a la identificación de palabras en reconocimiento del habla Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Una aplicación del modelo bigram: etiquetado sintáctico Problema: Etiquetar cada palabra de un texto con la categorı́a sintáctica que le corresponde Este es un paso intermedio que permite eliminar ambigüedades léxicas antes del análisis sintáctico Ejemplo: Supongamos el siguiente texto sin etiquetar el hombre toma café con leche El objetivo es asignar a cada palabra una categorı́a sintáctica coherente con la estructura de la frase el/LD hombre/NN toma/VIP café/NN con/E leche/NN Este problema se puede resolver con un modelo bigram del lenguaje Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Etiquetado sintáctico Consideremos un modelo bigram de un corpus P previamente etiquetado Dado un texto de n palabras w1,n = w1 w2 ... wn Un etiquetado de este texto es una secuencia de etiquetas t1,n = t1 t2 ...tn en la que cada ti es la etiqueta asociada a la palabra wi El objetivo consiste en encontrar el etiquetado t1,n con mayor probabilidad argmax P(t1,n |w1,n ) = argmax t1,n t1,n P(w1,n |t1,n )P(t1,n ) P(w1,n ) = argmax P(w1,n |t1,n )P(t1,n ) t1,n Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Etiquetado sintáctico En un modelo bigram, una palabra/etiqueta sólo depende de la anterior n Y P(ti |ti−1 ) P(t1,n ) = i=1 Si asumimos independencia entre palabras consecutivas condicionada a la secuencia de etiquetas y que una palabra sólo depende de la etiqueta que tiene asociada en el corpus, entonces P(w1,n |t1,n ) = n Y i=1 Inteligencia Artificial II 2012–2013 P(wi |t1,n ) = n Y P(wi |ti ) i=1 Procesamiento del lenguaje natural Etiquetado sintáctico Finalmente, el objetivo consiste en encontrar el etiquetado t1,n que maximiza la expresión n Y argmax P(ti |ti−1 )P(wi |ti ) t1,n i=1 Cada probabilidad condicionada P(t i |t j ) se estima con la frecuencia de ocurrencia de las dos etiquetas consecutivas en el corpus N(t j t i ) P(t i |t j ) = N(t j ) Cada probabilidad condicionada P(w |t) se estima como la frecuencia con que una palabra tiene una determinada etiqueta en el corpus N(w /t) P(w |t) = N(t) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Sección 6 Sección 6 Recuperación de la información Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Recuperación de la información Problema: Dada una colección de documentos, encontrar aquellos más relevantes con respecto a una necesidad de información expresada por un usuario. Se caracteriza por: Una colección de documentos (hay que definir qué se entiende por “documento” en cada caso) Una pregunta del usuario realizada usando un lenguaje especı́fico de consultas Un conjunto de resultados obtenidos (un subconjunto de la colección de documentos) Una presentación de los resultados obtenidos Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural El modelo de claves booleanas Cada palabra en la colección de documentos es una variable booleana que es cierta en aquellos documentos en los que la palabra aparece y falsa en los que no aparece El lenguaje de consulta es el lenguaje de las expresiones booleanas construidas sobre las caracterı́sticas asociadas a las palabras. Por ejemplo: pollo AND (tomate OR frito) Un documento es relevante sólo si la consulta se evalúa a verdadero Este modelo tiene la ventaja de que es muy simple y fácil de implementar. Sin embargo tiene bastantes desventajas La relevancia de un documento es 1 o 0, no hay una gradación de la misma Las expresiones booleanas no suelen ser familiares a los usuarios que no son programadores o lógicos Es difı́cil realizar una consulta adecuada Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural El modelo de espacio vectorial Supondremos a partir de ahora que las consultas las realiza el usuario mediante texto libre Conjunto de palabras (términos) que considera relevantes para lo que busca El modelo de espacio vectorial trata de medir la relevancia de un documento respecto de una consulta a partir de las frecuencia con la que ocurre un término de la consulta en un documento Pero considerando menos relevantes aquellos términos que ocurren con mucha frecuencia en la mayor parte de los documentos Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Representación vectorial de un documento Definiciones: La frecuencia de un término t en un documento d (notada tft,d ) es el número de veces que aparece en el mismo La frecuencia documental de un término t (notada dft ) es el número de documentos en los que aparece el término La frecuencia documental inversa de un término t es idft = log (N/dft ), donde N es el número total de documentos El peso de un término t en un documento d es tfidft,d = tft,d · idft Un vocabulario es un conjunto de términos que consideramos importantes en la colección de documentos Podrı́amos tomar como vocabulario el conjunto de todos los términos de todos los documentos, o un subconjunto significativo de ellos En el modelo de espacio vectorial un documento se representa como el vector de pesos de cada término del vocabulario Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Ejemplo en el modelo de espacio de vectores (Grossman) Documentos: D1 : “Cargamento de oro dañado por el fuego” D2 : “La entrega de la plata llegó en el camión color plata” D3 : “El cargamento de oro llegó en un camión” Consulta: “oro plata camión” Vocabulario: llegó, dañado, entrega, fuego, oro, plata, cargamento, camión, color. Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Ejemplo en el modelo de espacio de vectores (Grossman) Las representaciones vectoriales de D1 , D2 y D3 son, ~ 1, W ~2 y W ~ 3 (las tres últimas columnas de respectivamente, W la tabla) Término t tft,1 tft,2 tft,3 dft N/dft idft ~1 W ~2 W ~3 W llegó dañado entrega fuego oro plata cargamento camión color 0 1 0 1 1 0 1 0 0 1 0 1 0 0 2 0 1 1 1 0 0 0 1 0 1 1 0 2 1 1 1 2 1 2 2 1 1.5 3 3 3 1.5 3 1.5 1.5 3 0.1761 0.4771 0.4771 0.4771 0.1761 0.4771 0.1761 0.1761 0.4771 0 0.4771 0 0.4771 0.1761 0 0.1761 0 0 0.1761 0 0.4771 0 0 0.9542 0 0.1761 0.4771 0.1761 0 0 0 0.1761 0 0.1761 0.1761 0 Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Proximidad entre documentos y consultas La proximidad entre dos documentos se calcula en función de la proximidad entre sus vectores de pesos asociados; para ello calculamos el coseno del ángulo que forman: P Vi Wi i=1p ~ ,W ~ ) = pP sim(V P 2 2 i=1 (Vi ) i=1 (Wi ) Consultas: Una consulta puede ser vista como un documento Q, y por ~ (la mayorı́a de sus componentes serán tanto como un vector Q cero) ~ W ~ ) dará una medida de lo relevante que es el sim(Q, documento respecto de la consulta (cuanto más cercano a uno, más relevante) Recuperación de información en el modelo vectorial: transformar tanto la consulta como los documentos en vectores de pesos, calcular los cosenos y presentar (ordenados) los K mejores Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Una consulta en el ejemplo anterior La consulta “oro plata camión” en representación vectorial es ~ = (0, 0, 0, 0, 0,1761, 0,4771, 0, 0,1761, 0) Q Las distintas medidas de similitud son: ~ W ~ 1 ) = 0,00801 sim(Q, ~ ~ 2 ) = 0,7561 sim(Q, W ~ ~ 3 ) = 0,3272 sim(Q, W Resultados en orden de relevancia: D2 , D3 , D1 Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Recuperación de la información en la práctica Las palabras muy comunes se suelen ignorar (stop words) Los términos en los documentos se suelen normalizar: atendiendo a su raı́z (stemming), mayúsculas/minúsculas, acentos, corrección de deletreo, . . . Se consideran también otros factores que influyen en la relevancia de un documento respecto de una consulta: proximidad entre términos Evaluación de sistemas de recuperación de la información: Precisión: porcentaje de documentos devueltos como relevantes que realmente lo son Memoria (recall): porcentaje de documentos presentados como relevantes de entre todos los realmente relevantes Los sistema reales de recuperación de la información son sistemas que acceden a una cantidad masiva de datos Es muy importante la eficiencia: ı́ndices Muchas veces, depende del hardware de almacenamiento Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Enlaces entre documentos Hasta ahora, no hemos considerando los sistemas de recuperación de la información en la web En ese caso, además de la similitud vectorial, es importante también la estructura de enlaces, que influye en la relevancia del documento. Ejemplos: PageRank de Google HITS (Hyperlink-Induced Topic Search) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural PageRank La relevancia de una página web no puede estar basada únicamente en sus tf , debe tenerse en cuenta también el número de enlaces que apuntan a la página: Pero no todos los enlaces deben “pesar” igual, sino que deben contar más aquellos enlaces desde páginas de mayor relevancia Definición (recursiva): PR(p) = X PR(ini ) 1−d +d N C (ini ) i PR(p) es el PageRank de una página p N es el número total de páginas en el corpus ini son las páginas que tienen enlaces a p C (ini ) es el número de total enlaces que salen desde ini d es un factor de amortiguación (entre 0 y 1) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural PageRank Modelo de navegación aleatoria: PR(p) es la probabilidad de que una persona que navega por la red llegue en algún momento a visitar p, supuesto que en cada página que visita: Con probabilidad d, hace clic aleatoriamente en uno de sus enlaces Con probabilidad 1 − d, reinicia en una página aleatoria El cálculo del PageRank de cada página se actualiza cada varios meses Desde el punto de vista algebraico es el cálculo de un autovector Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural HITS Cálculo de relevancia basado en dos valoraciones: autoridad (authority) y centro (hub). Una página es autoridad en una materia si es una fuente importante de información (y por tanto está enlazada desde muchas otras) Una página es un centro en la materia si tiene una buena colección de enlaces a autoridades en la materia. Definición de los ı́ndices de autoridad (a) y centro (h): h(v ) = X a(y ) v 7→y a(v ) = X h(y ) y 7→v Definición mutuamente recursiva, cuya solución se tienen mediante el cálculo de autovectores Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Sección 7 Sección 7 Clasificación de documentos Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Clasificación de documentos El problema de clasificar documentos: Dado un documento d y un conjunto C de categorı́as documentales (o temas), encontrar la clase c a la que pertenece d. Tiene numerosas aplicaciones: Filtros anti-spam Control de contenidos infantiles Clasificación automática de correos Detección de sentimientos y opiniones Presentación de resultados en recuperación de la información,. . . Es un problema de aprendizaje: supondremos que tenemos un conjunto entrenamiento (textos ya clasificados) Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Clasificación de documentos en el modelo vectorial con kNN Para clasificar un documento dado, buscar los k documentos del conjunto de entrenamiento más cercanos y devolver la clase más frecuente en esos k documentos La cercanı́a la calculamos usando la medida de similitud definida en el modelo vectorial Previamente, hay que elegir: El vocabulario: conjunto de términos cuyos “tfidf” servirán para obtener la representación vectorial El valor de k Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Clasificación de documentos en el modelo vectorial con kNN Vocabulario: Debe ser un conjunto de términos cuya presencia o ausencia sea relevante para caracterizar la pertenencia a una clase. Existen técnicas estadı́sticas para elegir esos términos Elección de k: Usualmente, basándonos en algún conocimiento especı́fico sobre el problema de clasificación También como resultado de pruebas en conjuntos más pequeños Preferiblemente impar, para intentar evitar empates (k=5, por ejemplo) Variante en kNN: para cada clase c, sumar la similitud (con el que se quiere clasificar) de cada documento de esa clase que esté entre los k más cercanos. Devolver la clase que obtenga mayor puntuación. Ası́ un documento cuenta más cuanto más cercano esté Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Clasificación de documentos usando Naive Bayes Partimos de un vocabulario de términos escogido a priori (existen técnicas para decidir el conjunto de términos) Procedimiento: dado el documento d a clasificar y {t1 , . . . , tnd } el conjunto de términos del vocabulario que aparecen en d, devolver cnb como clasificación de d, donde cnb se define: Y P(tk |c) cnb = argmax P(c|d) = argmax P(c) c∈C c∈C 1≤k≤nd Para evitar desbordamientos por números muy bajos, se suele usar la siguiente versión equivalente X con logaritmos: logP(tk |c)] cnb = argmax [logP(c) + c∈C 1≤k≤nd Como ya sabemos, las probabilidades de estas fórmulas se obtienen como estimaciones ML a partir del conjunto de entrenamiento Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Estimación ML de las probabilidades P(c) se estima como NNc , donde Nc es el número de documentos de la categorı́a c y N el número total de documentos en el conjunto de entrenamiento. P(t|c) se estima como la proporción de ocurrencias de t en todo el conjunto de entrenamiento (respecto de todas las T ocurrencias de todos los términos del vocabulario): P c,tTc,s s∈V Nota: además de las suposiciones de independencia sobre las que está basado Naive Bayes, también asumimos independencia respecto de la posición de los términos dentro del documento Para evitar que muchas de estas probabilidades sean 0, se aplica un suavizado de Laplace: P(t|c) = P Tc,t + 1 Tc,t + 1 =P s∈V (Tc,s + 1) s∈V Tc,s + |V | Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Algoritmo Naive Bayes para clasificación de texto EntrenaNB(C,D) 1. Sea V igual al vocabulario que se extrae del conjunto de entrenamiento D, y N el número de documentos de D 2. Para cada categorı́a c en C, hacer: 2.1 Sea Nc el número de documentos en la clase c y prior[c]=Nc/N 2.2 Sea Texto c la concatenación de todos los documentos de la clase c 2.3 Para cada t en V sea T –tc˝ el número de ocurrencias de t en Texto c 2.4 Para cada t en V sea condprob[t,c] el resultado de dividir T –tc˝+1 entre la suma de todos los (T –sc˝+1), con s en V 3. Devolver V, y las matrices prior y condprob ClasificaNB(C,V,prior, condprob, d) 1. Sea W el conjunto de términos de V que aparecen en d 2. Para cada clase c en C, hacer: 2.1 Inicializar score[c] con log(prior[c]) 2.2 Para cada término t en W, acumular en score[c] la cantidad log(condprob[t,c]) 3. Devolver la clase c para la que score[c] sea máximo Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Detección de SPAM con Naive Bayes Problema: Decidir si un correo electrónico es SPAM o no, basándonos en un conjunto previo de correos clasificados como SPAM o como HAM En este caso el corpus está formado por los correos electrónicos previamente clasificados Dado un correo nuevo, consideramos la variable aleatoria Y representando el hecho de que dicho correo sea SPAM o no Consideramos también un conjunto de variables aleatorias Xi asociadas a ciertas caracterı́sticas del correo electrónico (p.ej. aparición de ciertas palabras, remitente, mayúsculas..) Se asume que las variables Xi son independientes entre sı́, condicionadas a la variable Y Es muy importante una buena selección de caracterı́sticas Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Detección de SPAM con Naive Bayes Según Naive Bayes, se clasifica el nuevo correo como SPAM en función del valor de ynb = argmax [log (P(Y = y ))+ y ∈{spam.ham} X log (P(X = xi |Y = y ))] 1≤i≤n El corpus se utiliza para estimar las probabilidades: P(Y = spam) = H S , P(Y = ham) = S +H S +H P(X = x|Y = spam) = Hx Sx , P(x|Y = ham) = S H donde Sx es el número de correos SPAM del conjunto de entrenamiento que tiene la caracterı́stica X = x y Hx es el número de correos HAM del conjunto de entrenamiento con la caracterı́stica X = x Estas estimaciones suelen suavizarse Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural Bibliografı́a Russell, S. y Norvig, P. Artificial Intelligence (A Modern Approach) 3rd edition (Prentice–Hall Hispanoamericana, 2010) Secciones 22.1, 22.2, 22.3, 23.1, 23.2 y 23.3 Manning, C.D. y Schütze, H. Foundations of statistical natural language processing (MIT Press, 1999) Manning, C.D., Raghavan, P. y Schütze, H. Introduction to Information Retrieval (Cambridge University Press, 2008) Secciones 6.2, 6.3, 13.1, 13.2, 14.3, 21.2 y 21.3 Inteligencia Artificial II 2012–2013 Procesamiento del lenguaje natural