viernes, 12 de octubre de 2012

Modelos de Lenguaje: Introducción a N-Gramas

Muchas veces es interesante saber que tan probable es una sentencia (o que tan común es), esto tiene distintas aplicaciones, veamos unos ejemplos:

Traducción automática:
                   P("globulos rojos") > P("globulos colorados")

Corrección ortográfica automática:
                   El mercado está a diez minuts de mi casa.
                   P("El mercado está a diez minutos de mi casa.") > P("El mercado está a diez minutas de mi casa.")

Reconocimiento del habla:
                 P(vientos fuertes) > P(bien, tos fuerte)

y hay muchas más aplicaciones.

¿Cómo calcular la probabilidad de una oración?

P(W) = P(w1,w2,w3,w4,w5…wn)  Donde W identifica una oración y w identifica a una palabra (por su inicial en ingles: word)

Si tuviésemos una buena forma de calcular eso también podríamos calcular la probabilidad de que una palabra dada sea la siguiente palabra en una oración incompleta.

P(w5 | w1,w2,w3,w4) 

Un modelo que pueda calcular cualquiera de estas dos cosas se llama: Modelo de Lenguaje o Language Model (en ingles)

Para eso necesitaríamos llevar adelante un calculo de probabilidades . Veamos un ejemplo, ¿cuál es la probabilidad de la frase: "El agua es tan transparente": P(el, agua, es, tan, transparente) ?

Usando la regla de calculo de probabilidades: P(A,B,C,D) = P(A)P(B|A)P(C|A,B)P(D|A,B,C)


P(el, agua, es, tan, transparente) = P(el) ×P(agua | el ) ×P( es | el agua) × P(tan | el agua es) ×P(transparente | el agua es tan)

Entonces, para calcular estas probabilidades deberíamos tener un corpus suficientemente extenso y contar la cantidad de veces que aparece una palabra, la cantidad de veces que aparecen dos palabras juntas, tres palabras, etc. Luego la probabilidad condicional la obtendríamos realizando la división correspondiente, por ejemplo:
                   P(transparente | el agua es tan) = P(el agua es tan transparente ) /  P(el agua es tan)

Como esto en general es demasiado complicado y nunca se cuenta con un corpus suficientemente extenso utilizaremos el supuesto de Markov:

                  P(que | el agua es tan transparente ) ≈ P(que | transparente)  o en algún caso puede ser:
                  P(que | el agua es tan transparente ) ≈ P(que | tan transparente)

Unigrama

Con esto en mente, presento el modelo de lenguaje más sencillo el: Unigrama

P(w1,w2,w3...wn) ≈ P(w1) x P(w2) x P(w3)... P(wn)

Bigrama

Si consideramos la dependencia de la palabra anterior, podemos construir un modelo un poco más complejo pero mucho más eficiente: Bigramas

P(wi | w1, w2... wi-1)  ≈ P(wi| wi-1)

N-gramas

Extendiendo esta idea para N, podemos crear modelos tan complejos como queramos. Sin embargo este tipo de modelo es insuficiente ya que en el lenguaje hay palabras que dependen de otras que están mucho más atrás en la misma oración.

No hay comentarios:

Publicar un comentario