Cadenas de Markov para generar trayectorias posibles de huracanes

Supongo que todo el mundo estará enterado de lo que hizo Shannon en 1948: generar texto automático usando cadenas de Markov (el que no, que mire esto). El que no, que eche un vistazo a esto otro para ver cómo una extensión de la idea original permite simular posibles trayectorias de huracanes.

9 de enero de 2019 · Carlos J. Gil Bellosta

¿De qué matriz son los "embeddings" una factorización?

Hoy, embeddings. Esto va de reducir la dimensionalidad de un espacio generado por palabras (procedentes de textos). Si a cada palabra le asignamos un vector índice (todo ceros y un uno donde le corresponde), la dimensión del espacio de palabras es excesiva. La ocurrencia de algunos es asociar a cada palabra, $W_i$, un vector $w_i$ corto (p.e., 100) con entradas $w_{ij}$ a determinar de la manera que se explica a continuación. ...

3 de octubre de 2018 · Carlos J. Gil Bellosta

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 != ""] # recolección de estadísticas res <- ldply(words, function(word){ tmp <- str_split(word, "")[[1]] data.frame(word = word, letra = tmp, posicion = 1:length(tmp) / length(tmp), stringsAsFactors = FALSE) }) tmp <- table(res$letra) tmp <- names(tmp[tmp > 10]) res <- res[res$letra %in% tmp,] ggplot(res, aes(x = posicion)) + geom_density(fill = "red") + facet_wrap( ~ letra, scales = "free_y") + ggtitle("Dónde aparece cada letra dentro de un texto (El Quijote)") + ylab("proporción de aparicion") + xlab("% de la longitud de la palabra") + scale_fill_brewer(palette = "Set1") + theme_minimal() + theme(axis.ticks = element_blank(), axis.text.y = element_blank(), axis.text.x = element_blank(), legend.position = "none", panel.grid.major = element_blank(), panel.grid.minor = element_blank())

29 de enero de 2018 · Carlos J. Gil Bellosta

Cortar una cadena por un caracter solo cuando no forme parte de una subcadena entrecomillada

Algunos usuarios del paquete pxR han avisado de un error de implementación. Según las especificaciones del formato de datos PC-Axis, las líneas de ese tipo de ficheros acaban en punto y coma (y no necesariamente en un salto de línea). Así que era natural leer los ficheros íntegramente, concatenar sus líneas físicas y luego partirlas usando strsplit para obtener las líneas lógicas. Sin embargo, ciertos ficheros contienen descripciones (entrecomilladas) que contienen puntos y comas. Y eso produce caos. ...

4 de marzo de 2013 · Carlos J. Gil Bellosta