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

¿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.

11 de diciembre de 2014 · Carlos J. Gil Bellosta