Nlp

Análisis (clasificación, etc.) de textos muy cortos

Nlp, R
Uno de mis proyectos permanentemente pospuestos es el del análisis de textos muy cortos. Se citarán Twitter y similares, aunque el € está en otros sitios, como los mensajes asociados a transferencias bancarias, reseñas o keywords. Pero parece que no soy el único interesado en el tema. Otros con más tiempo y talento han desarrollado BTM, que parece ser una versión modificada de LDA para el análisis de textos cortos.

Mariposa

Quieres saber dónde está el escorpión, Ni ayer ni antes vos sos corona dorada. Ya os ves más tal cual tortuga pintada, A él nos gusta andar con cola marrón. Ella es quién son las alas de algún gorrión. Si al fin podés ver tu imagen manchada, O hoy vas bajo un cielo azul plateada, Por qué estás tan lejos del aguijón. No hay luz que al sol se enreda en tus palmera.

Entre lo fofo y lo hierático,modelos loglineales

El contexto, por fijar ideas, el problema de taguear fechas en textos. La estrategia gomosa, fofa (ñof, ñof, ñof), y en la que parecen parecer creer algunos, embeddings más TensorFlow. La estrategia hierática, inflexible y reminiscente de robots de pelis de serie B, expresiones regulares encadenadas con ORs. En la mitad donde mora la virtud, extracción de features (principalmente con expresiones regulares) y luego, esto. Nota: esta entrada es un recordatorio para mí mismo y por si retorna cierto asunto que dejé postergado hace un par de días.

Dónde están las letras

Inspirado en esto construí usando como texto el Quijote y como código una versión mucho más simple y limpia que (aunque inspirado en) la del enlace original: library(stringr) library(plyr) library(ggplot2) raw <- readLines("http://www.gutenberg.org/cache/epub/2000/pg2000.txt") # limpieza de encabezamientos textfile <- raw[-(1:36)] textfile <- text[1:which(text == "Fin")] # en una única cadena textfile <- paste(textfile, collapse= " ") # limpieza textfile <- str_to_lower(textfile) textfile <- str_replace_all(textfile, "[[:punct:]]|[[:digit:]]", " ") # selección de palabras words <- unique(unlist(str_split(textfile, " "))) words <- words[words !

Advertencias sobre el uso de los n-gramas de Google

Dudaba en si dedicar la entrada a popularizar los n-gramas de Google en lugar de advertir sobre sus sesgos. Pero, habida cuenta de que lo primero sería llover sobre mojado (véase esto o esto), me he decantado por lo segundo. El primer problema es el del reconocimiento de caracteres. Aunque la tecnología mejorará, aún se encuentra, p.e., cami6n en lugar de camión. El fundamental, no obstante, es que los libros aparecen una única vez independientemente de su popularidad.

Probando hunspell para el procesamiento de texto en español

Nlp, R
El paquete hunspell de R permite procesar texto utilizando como soporte la infraestructura proporcionada por Hunspell, el corrector ortográfico que subyace a muchas aplicaciones en R. Existe una viñeta que ilustra el uso del paquete pero, como siempre, en inglés. En español las cosas son parecidas pero, como siempre, nunca exactamente iguales. En esta entrada, por lo tanto, voy a repasar partes de la viñeta aplicándolas a nuestra tan frecuentemente maltratada mas por ello no menos querida por algunos como yo (pausa) lengua.

Un corpus de textos en español para NLP

Mañana doy clase de NLP en el máster de ciencia de datos de KSchool. Para lo que necesito un corpus decente. Los hay en inglés a tutiplén, pero las hordas de lingüistas hispanoparlantes que se pagan los vicios a costa de tajadas de mi IRPF han sido incapaces de colgar ninguno en español que pueda ubicar y reutilizar. Necesito una colección de textos en español con ciertas características: Tener un cierto tamaño (¿unas cuantas centenas de ellos?

Para los que buscáis proyectos de análisis / visualización de datos

Igual hay alguien que busca un proyecto interesante de análisis / visualización de datos. Tengo uno en mente para el que ando sin tiempo. Así que lo sugiero aquí por si alguien quiere hincarle el diente. Consiste en: Bajarse el BOE hasta cuando hay texto en formatos decentes (principios de los 90, si no recuerdo mal) Extraer los 1,2,3,¿4?-gramas Construir algo parecido a esto Ponerme en la letra chiquita de los créditos y pagarme una cerveza ¿O no es interesante?

Una curiosa trasposición legal (hecha, manifiestamente, a malagana)

Nlp, R
El parlamento de la Unión Europea aprueba directivas. Los parlamentos nacionales las trasponen, es decir, las convierten en leyes nacionales (véase el enlace anterior). No sé hasta qué punto la trasposición tiene que ser literal. La única experiencia seria que tengo es con esta y sus trasposiciones nacionales a España y el RU. Y era notorio cómo cada país, aprovechando las ambigüedades del texto original, arrimaba el ascua a su sardina.

¿Dónde están aquellos caballeros andantes?

Pues precedidos del mi favorito de todos ellos, Felixmarte de Hircania, el del desnudo brazo, en dentro del texto del Quijote. El código para obtener el gráfico anterior es library(qdap) quijote.raw <- readLines("http://www.gutenberg.org/cache/epub/2000/pg2000.txt", encoding = "utf8") # es posible que necesites esto en Windows: quijote <- iconv(quijote.raw, from = "utf8", to = "latin1") quijote <- quijote[-(1:36)] quijote <- quijote[-(37453:length(quijote))] dispersion_plot(quijote, c("felixmarte", "amadís", "leandís", "bencimarte", "palmerín", "olivante", "tirante", "belianís", "gironcilio", "lisuarte", "esplandián", "roldán", "rodamonte", "florimorte", "platir", "tablante")) Tenéis permiso mío para buscar otros términos en otros textos y ver qué pinta tiene la distribución.

"Lengua y Markov" en MartinaCocina este sábado

Hija de la improvisación de hace un ratico, habrá mañana sábado día 4 (de 2014), a las 19:00 una reunión de gente poco cabal en MartinaCocina para discutir asuntos relacionados con el análisis de textos (y en una vertiente más lúdica, la generación de textos) usando cadenas de Markov. Nos juntaremos, entre otros, los autores del Escritor Exemplar (uno de los cuales es quien suscribe) y el de Markov Desencadenado.

La complejidad de la ley

El otro día publiqué código para bajar el BOE completo. Pero no conté qué me llevó a escribirlo. El motivo es que, en un tiempo en que andaba menos ocupado que ahora, quise ver si se podía medir la complejidad de la ley. En realidad, la de los textos legales. ¿Debería haber motivo para que estos sean más impenetrables —de serlo— que un manual de Python? En eso consistía ese proyecto en el que acabé no embarcándome.