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.
Las entradas seguirán el formato de un curso de PLN, en las mismas se explicarán conceptos de: modelos de lenguaje, distancia de edición, análisis sintáctico, análisis de sentimientos, etc.
miércoles, 24 de octubre de 2012
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:
y hay muchas más aplicaciones.
¿Cómo calcular la probabilidad de una oración?
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.
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.)
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: alergia, alegría, alergias?
Supongamos un corrector ortográfico, si el usuario tipea : "aselrgia"
¿Cuál es la palabra más cercana: alergia, alegrí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
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
¿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.
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.
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.
Suscribirse a:
Entradas (Atom)