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?) Que no sean demasiado grandes (¿unos cuantos párrafos?) Ser medianamente homogéneos. Estar bien escritos, sin faltas de ortografía, etc. Así que he decidido poner en valor otra de esas onerosas reliquias de la cultura analógica y de letras que es el Museo Thyssen; en particular, las descripciones que constan en las fichas de los cuadros. De hecho, corriendo esto: ...

6 de mayo de 2016 · Carlos J. Gil Bellosta

Encuestas electorales: medios y sesgos (I)

Existen las encuestas electorales. Las publican medios. Algunos, se dice, tienen sesgos. Lo he estudiado y a continuación muestro resultados. Para el PP: Para el PSOE: Para Podemos y cía: Para Ciudadanos: Para IU: En otra entrada, datos y métodos. Hoy solo adelanto que el eje horizontal mide puntos porcentuales y que las encuestas se remontan a enero de 2015.

5 de mayo de 2016 · Carlos J. Gil Bellosta

Cómo ir de Regumiel de la Sierra a Montejo de la Vega de la Serrezuela

Pues así: Continúe por CALLE SAN JUAN DE RABANERA Gire justo a la izquierda por CALLE DIPUTACION Gire justo a la derecha por CALLE CABALLEROS Gire ligeramente a la izquierda por PLAZA RAMON Y CAJAL Gire a la izquierda por PLAZA MARIANO GRANADOS Gire a la izquierda por PASEO ESPOLON (EL) Gire ligeramente a la izquierda por AVENIDA VALLADOLID Gire ligeramente a la izquierda por N-122 Continúe por A-11 Continúe por N-122 Gire ligeramente a la izquierda por CARRETERA SIN NOMBRE Continúe por N-122 Gire a la izquierda por BU-924 Continúe por N-122 Continúe por BU-930 Gire a la derecha por BU-940 Continúe por CALLE FELIPE GARCIA Continúe por BU-940 Gire ligeramente a la derecha por BU-932 Gire a la izquierda por CALLE PAJARES Continúe por BU-V-9321 Continúe por SG-V-9321 Continúe por road Continúe por SG-V-9321 Gire a la derecha por CALLE BAÑUELOS O al menos, eso dice la novísima función caRtociudad::get_cartociudad_route. Que, además (y además de otras cosas) te dice que, en coche, tardarías 6969024… ¿milisegundos? ...

29 de abril de 2016 · Carlos J. Gil Bellosta

El impacto causal del óbito del Sr. Botín en la cotización bursátil del benemérito Banco de Santander

El Sr. Botín, presidente que fue del Banco de Santander, falleció el 2014-09-10. Cabe preguntarse por el impacto causal à la Google de no continuidad de su gestión a cargo de dicha institución. Comienzo pues. Primero los datos: library(tseries) library(CausalImpact) santander <- get.hist.quote(instrument="san.mc", start= Sys.Date() - 365*3, end= Sys.Date(), quote="AdjClose", provider="yahoo", origin="1970-01-01", compression="d", retclass="zoo") bbva <- get.hist.quote(instrument="bbva.mc", start= Sys.Date() - 365*3, end= Sys.Date(), quote="AdjClose", provider="yahoo", origin="1970-01-01", compression="d", retclass="zoo") ibex <- get.hist.quote(instrument="^IBEX", start= Sys.Date() - 365*3, end= Sys.Date(), quote="AdjClose", provider="yahoo", origin="1970-01-01", compression="d", retclass="zoo") obito.botin <- as.Date("2014-09-10") cotizaciones <- cbind(santander, bbva, ibex) cotizaciones <- cotizaciones[!is.na(cotizaciones$AdjClose.ibex)] Con lo anterior, he bajado las cotizaciones diarias de las acciones del Banco de Santander, las del BBVA y la del IBEX 35 durante los últimos tres años. Eso deja la fecha de la muerte del Sr. Botín, aproximadamente, en la mitad. ...

20 de abril de 2016 · Carlos J. Gil Bellosta

Diapositivas de mi charla sobre feather

Las diapositivas de mi charla Birds of the same feather… en el grupo de usuarios de R de Madrid pueden verse/bajarse de aquí.

19 de abril de 2016 · Carlos J. Gil Bellosta

Ahora caRtociudad encuentra información administrativa relativa a un punto

Y lo hace así: library(caRtociudad) get_cartociudad_location_info(40.473219,-3.7227241, year = 2015) # $seccion # [1] "2807908148" # # $distrito # [1] "2807908" # # $provincia # [1] "Madrid" # # $municipio # [1] "Madrid" Esto da respuesta a una pregunta de Rubén. La función es en su mayor parte (salvo algunos retoques más estéticos que otra cosa míos) de Luz Frías, que hizo omiso caso de la inexistente docuentación del INE sobre su servicio de mapas y capturó directamente la petición que el portal de Cartociudad hace al servicio. ...

15 de abril de 2016 · Carlos J. Gil Bellosta

Diapositivas de mi charla "Datos, modelos y parámetros"

Las diapositivas de mi charla Datos, modelos y parámetros en el grupo Machine Learning Spain pueden verse/bajarse de aquí.

14 de abril de 2016 · Carlos J. Gil Bellosta

¿Quieres aprender R? ¡Matricúlate en mi curso en KSchool!

Si quieres aprender R, bien puedes matricularte en el curso que voy a impartir en KSchool. Es un programa de iniciación a R centrado en aquellos aspectos de R que más usan en la práctica diaria quienes trabajan con datos (y no son estadísticos duros). ¡Y ya vamos por la tercera edición! Tendrá lugar durante el mes de junio (y un poco de julio). Son diez sesiones de tres horas. Los detalles están aquí. ...

13 de abril de 2016 · Carlos J. Gil Bellosta

Este jueves, Feather en la reunión de usuarios de R de Madrid

Sí, hablaré de feather. Los detalles, aquí.

12 de abril de 2016 · Carlos J. Gil Bellosta

Clústers de trayectorias con la distancia de Fréchet

Los viejos del lugar recordarán esto, donde agrupo trayectorias usando k-medias a pelo. El paquete kmlShape usa la distancia de Fréchet para hacer algo parecido: buscar trayectorias geométricamente similares. El código es library(kmlShape) library(tseries) library(zoo) library(XML) library(reshape) library(ggplot2) foo <- function( simbolo, final = Sys.time(), profundidad = 30 * 24 * 3600) { precios <- get.hist.quote( instrument= simbolo, start = final - profundidad, end = final, quote=c("AdjClose"), provider="yahoo", origin="1970-01-01", compression="d", retclass="zoo") colnames(precios) <- simbolo return(precios) } # lista de símbolos del ibex tmp <- readHTMLTable("http://finance.yahoo.com/q/cp?s=%5EIBEX+Components")[[5]] tmp <- as.character(tmp$V1[-(1:6)]) ibex <- do.call(merge, sapply(simbolos, foo, simplify = F)) ibex.scaled <- data.frame(t(scale(ibex))) tmp <- cldsWide(ibex.scaled) res <- kmlShape(tmp, 4, toPlot = "none") tmp <- data.frame( id = rownames(ibex.scaled), cluster = res@clusters, ibex.scaled) tmp <- melt(tmp, id.vars = c("id", "cluster")) tmp$fecha <- as.Date(tmp$variable, "X%Y.%m.%d") ggplot(tmp, aes(x=fecha, y=value, group=id)) + geom_line() + facet_wrap(~cluster) y el resultado, ...

8 de abril de 2016 · Carlos J. Gil Bellosta