miércoles, 24 de octubre de 2012

Modelos de Lenguaje: Interpolación

No siempre funciona mejor el modelo de trigramas sobre el de bigramas, o el de bigramas sobre el de unigramas. Muchas veces la bondad de un modelo depende de la evidencia disponible en el corpus de entrenamiento, si esta no es buena o confiable podemos generar trigramas, por ejemplo, realmente muy poco probables pero con un alto indice de ocurrencia.

martes, 16 de octubre de 2012

N-Gramas: Algunas herramientas

SRILM


"Conjunto de herramientas para la construcción y aplicación de modelos estadísticos del lenguaje, principalmente para su uso en el reconocimiento de voz."

http://www.speech.sri.com/projects/srilm/

Entre las herramientas cuenta con una llamada: "ngram-count",

Google N-Gramas


Google puso a disposición del publico general su modelo de lenguaje basado en n-gramas, les dejo un resumen de estos modelos:


Number of tokens:    1,024,908,267,229
Number of sentences:    95,119,665,584
Number of unigrams:         13,588,391
Number of bigrams:         314,843,401
Number of trigrams:        977,069,902
Number of fourgrams:     1,313,818,354
Number of fivegrams:     1,176,470,663


http://googleresearch.blogspot.com.ar/2006/08/all-our-n-gram-are-belong-to-you.html

Modelos de Lenguaje: Bigramas


La probabilidad de que la palabra wi venga después de la palabra wi-1 en una oración viene dada por la cantidad de veces que aparece la dupla: "wi-1 wi" en un corpus, dividida por el total de veces que aparece la palabra wi-1.

                P(wi | wi-1) = count (wi-1,wi)
                                        count (wi-1)

Veamos un ejemplo esclarecedor:

Supongamos que este es nuestro corpus:

<s>En un plato de trigo</s>
<s>tres tristes tigres</s>
<s>comen trigo</s>

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?

martes, 9 de octubre de 2012

Distancia Mínima de Edición Ponderada

Hay ocasiones en donde el algoritmo anterior (ver otros posts de Distancia Mínima de Edición) no se adecua del todo a nuestras necesidades. Pensemos por un momento en un corrector ortográfico, un usuario que tipea: "cattera", las palabras más cercanas son: "cartera" y "cantera" cada una con una distancia de 2.
   Sin embargo es mucho más probable que sea "cartera" que "cantera", porque la "T" y la "R" están juntas en un teclado Querty y dan lugar a errores comunes de tipeo, mientras que la "T" y la "N" están lejos y muy rara vez producen este tipo de error.

Distancia Mínima de Edición: Backtrace

Algunas veces no alcanza con solo encontrar la distancia mínima de edición sino que queremos alinear los strings de forma optima. Para eso necesitamos saber exactamente que operaciones aplicamos para ir del string A al B.

Esto se soluciona fácilmente dejando un rastro (backtrace en ingles) de las operaciones que nos llevaron a la celda actual de la tabla (ver post anterior.)

viernes, 5 de octubre de 2012

Distancia Mínima de Edición

A veces es importante identificar cuanto se parece una palabra a otra, es decir: cuan cerca está una palabra de otra .
Supongamos un corrector ortográfico, si el usuario tipea : "aselrgia"
¿Cuál es la palabra más cercana: alergiaalegría, alergias?

Distancia Mínima de Edición (Edit Distance)

La distancia mínima de edición entre dos strings es la menor cantidad de operaciones de edición:
  • Inserción
  • Borrado
  • Sustitución
necesarias para convertir un string en otro.

jueves, 4 de octubre de 2012

Normalización del Texto => Segmentación de oraciones y arboles de decisión

El tercer paso es la identificación de las oraciones en un texto para poder analizarlas como elementos separados.

Antes, una definición que puede sernos útil:

 Corpus Lingüístico: conjunto, habitualmente muy amplio, de ejemplos reales de uso de una lengua. Estos ejemplos pueden ser textos (lo más común) o muestras orales (generalmente transcritas). Por ejemplo todos los textos de Shakespare constituyen un corpus lingüístico.

Lo más simple es localizar los símbolos: ".", "?" o "!" que por lo general suelen identificar el fin de una oración.
Sin embargo estos símbolos pueden ser ambiguos o no estar presentes

Normalización del Texto => Normalización de palabras y stemming

Como dije antes el segundo paso en la normalización del texto es la normalización de las palabras.
¿Qué implica eso?

unificar la forma de los terminos con un mismo significado:

    por ejemplo: Bs. As., Buenos Aires, CABA => Buenos Aires

miércoles, 3 de octubre de 2012

Normalización del Texto => Tokenización

Antes de realizar una tarea de PLN hay que normalizar el texto, esto incluye 3 actividades:

1. Segmentación/tokenización de las palabras.
2. Normalización del formato de las plabras
3. Segmentación de las oraciones en el texto.

Algunos conceptos:

Lema (Lemma): palabras que comparten un tronco común, que hacen referencia al mismo concepto básico 
           Ejemplo: gato, gatos, gata son palabras con el mismo lema.

Bienvenidos al Blog

Hola,
este blog tendrá entradas basadas en el curso de procesamiento de lenguaje natural (PLN o NLP según sus siglas en ingles) dictado de forma gratuita y on-line por los profesores de Stanford University: Dan Jurafsky  y Christopher Manning a través del sitio Coursera (pero en lo posible aplicadas al idioma español) más algunos aportes propios.