El jueves 16 de mayo hablaré en el Grupo de Interés Local de Madrid de R sobre lematizadores probabilísticos.
Hablaré sobre el proceso de lematizacion y trataré de mostrar su importancia dentro del mundo del llamado procesamiento del lenguaje natural (NLP). La lematización es un proceso humilde dentro del NLP del que apenas nadie habla: su ejercicio solo ha hecho famoso a Martin Porter. Lo eclipsan otras aplicaciones más vistosas, como el siempre sobrevalorado análisis del sentimiento.
Hace unos días implementé un proceso MapReduce usando mincedmeat, un pequeño entorno en Python para desarrollar este tipo de procesos distribuidos. El código y los datos pueden descargarse de este enlace.
Los datos de partida están en 249 ficheros de unos 25kb que contienen filas del tipo
journals/algorithmica/HarelS98:::David Harel::Meir Sardas:::An Algorithm for Straight-Line of Planar Graphs
es decir, publicación, autor (o autores) separados por :: y título de la publicación. Los tres campos están separados por :::.
No es mío, pero sí una pequeña joya que merece la pena dar a conocer. Además de tener aquí, en mi bitácora-vademécum para futura referencia. Es este tutorial para el análisis de datos de Twitter realizado por Gastón Sánchez.
Estoy limpiando mi cartera y antes de mandar unos cuantos legajos al archivador (o al contenedor de reciclaje) quiero dejar nota de sus contenidos para referencia mía y, quién sabe, si inspiración de otros.
El primer artículo es Tackling the Poor Assumptions of Naive Bayes Text Classifiers. Tiene esencialmente dos partes. La primera analiza críticamente el método de clasificación bayesiano ingenuo (naive Bayes) en el contexto de la minería de textos identificando una serie de deficiencias.
Me he entretenido en los últimos tiempos tratando de responder una pregunta que, sin inquietarme, no dejaba de despertar mi curiosidad.
En la escuela nos enseñaron a definir palabras. Una de las primeras reglas de aquel juego era que el término definido no podía usarse en la definición: casa no se puede utilizar para definir casa. Los niños lo entendíamos. Sin embargo, los mayores hacían trampa: en el DRAE, construir se define en términos de edificar y edificar, en términos de construir.
El otro día publiqué mi pequeño lematizador para el español con R. Era el subproducto de un antiguo proyecto mío de cuyos resultados daré noticia en los próximos días.
Pero veo con infinita satisfacción que Emilio Torres, viejo conocido de quienes, por ejemplo, hayáis asistido a las II o III Jornadas de Usuarios de R, ha estado abundando en el asunto y, ciertamente mejorándolo (cosa que, todo hay que decir, tiene escaso mérito): basta mirar los sus comentarios a la entrada original.
Uno de los pasos previos para realizar lo que se viene llamando minería de texto es lematizar el texto. Desafortunadamente, no existen buenos lematizadores en español. Al menos, buenos lematizadores libres.
Existen el llamado algoritmo de porter y snowball pero, o son demasiado crudos o están más pensados para un lenguaje con muchas menos variantes morfológicas que el español.
Sinceramente, no sé a qué se dedican —me consta que los hay— los lingüistas computacionales de la hispanidad entera: ¿no son capaces de liberar una herramienta de lematización medianamente decente que podamos usar los demás?
Es fácil predecir a toro pasado. Casi tan fácil que asestarle una gran lanzada al moro muerto (el refranero es así de incorrecto políticamente, lo siento).
Esas son las ideas que me sugirieron fundamentalmente la lectura del un tanto hagiográfico Superordenadores para ‘predecir’ revoluciones y del artículo al que se refería, Culturomics 2.0: Forecasting large-scale human behavior using news media tone in time and space.
El artículo nos explica cómo utilizando resúmenes de noticias de diversas fuentes era posible haber predicho las revoluciones de Egipto, Túnez y Libia.
De acuerdo con una observación de Zipf (y supongo que de muchos otros y que no hay que confundir con su ley), la longitud de las palabras más corrientes es menor que las que se usan menos frecuentemente.
Un estudio reciente, Word lengths are optimized for efficient communication, matiza esa observación: la cantidad de información contenida en una palabra predice mejor la longitud de las palabras que la frecuencia de aparición pura.
O así nos cuenta Google. Y me explico rápidamente para que no me demande nadie.
Uno de los servicios de Google con los que he topado recientemente es Google Squared, un buscador muy particular —y que parece funcionar sólo en inglés— que devuelve tablas: uno puede buscar nikon lenses, o statistical software y obtendrá lo que verá al pinchar en los correspondientes enlaces: tablas en las que las filas corresponden a lentes de Nikon o paquetes estadísticos y las columnas a atributos.
No sé si te lo habrás preguntado alguna vez. Ni siquiera lo sabe Google.
Sin embargo, me admira esto.
¿Usáis Wolfram Alpha? ¿Qué os parece?
Hadley Wickman, el autor de plyr, reshape y ggplot2, ha vuelto a la carga en su exitoso empeño por hacernos cambiar de forma de programar en R.
Con su nuevo paquete, stringr, aspira a facilitarnos aún más la vida. En un reciente artículo, enumera sus ventajas:
Procesa factores y caracteres de la misma manera (de verdad, muy práctico) Da a las funciones nombres y argumentos consistentes Simplifica las operaciones de procesamiento de cadenas eliminando opciones que apenas se usan Produce salidas que pueden ser utilizadas fácilmente como entradas a otras funciones Incorpora funciones para procesar texto presentes en otros lenguajes pero no en R
Acabo de realizar unos cuantos cambios, mayormente cosméticos, en mi blog. He añadido una lista de artículos recomendados al final de cada entrada, he eliminado el enlace a la entrada aleatoria, he incluido una lista de los últimos comentarios y, finalmente, he incluido propaganda contextual de Google.
Lo he hecho por dos motivos. El primero es pecuniario, obviamente. No espero que me retire ni que me permita dejar de tener que madrugar.