Hugo Chávez. Palabras más frecuentes en algunos discursos, 1999-2002. Incluyendo palabras funcionales
Empleando la técnica de minería de texto, haremos un análisis descritivo de algunos textosy discursos emitidos por H. Chávez entre 1999 y 2002. Los discursos han sido obtenidos de Hugo Chávez Frías en La BitBlioteca. Usamos el paquete tm, Text Mining, de R.
El primer paso consiste en obtener la data. Podemos bajarla directamente al disco duro desde internet y conformar los diferentes directorios. Subimos cada uno de éstos a la cónsola de R, creando al mismo tiempo una base de datos de textos. Por ejemplo:
require(tm)
require(xtable)
a <- "~/chavez/1999"
c1999 <- Corpus(DirSource(a), readerControl = list(language = "es"))
Dado que hemos obtenidos estos discursos directamente de la web y no disponen de metadata, creamos entonces esta informacion. Por ejemplo, para los discursos de 1999:
meta(c1999, tag = "Author") <- c(rep("Hugo Chavez", 9))
meta(c1999, tag = "Heading") <- c("Bill Clinton", "Ilich Ramirez Sanchez", "Corte Suprema de Justicia",
"Cien dias de gobierno", "Desfile julio", "Alocucion Proceres", "Jesus Urdaneta Hernandez",
"Juramentacion Gabinete", "Discurso toma de posesion")
meta(c1999, tag = "Description") <- c("carta", "carta", "carta", "cadena nacional",
"discurso", "discurso", "entrevista", "cadena nacional", "discurso")
meta(c1999, tag = "ID") <- c("clinton", "chacal", "csj", "cien", "desfile",
"proceres", "urdaneta", "gabinete", "posesion")
meta(c1999, tag = "Language") <- c(rep("Spanish", 9))
meta(c1999, tag = "Origen") <- c(rep("www.analitica.com", 9))
Creamos una sola tabla con todos los discursos
disCompletos <- rbind(DMetaData(c1999), DMetaData(c2000), DMetaData(c2001),
DMetaData(c2002))
Generamos una tabla
miTabla <- xtable(disCompletos, caption = "H. Chavez. Textos analizados, 1999-2002",
digits = 0, floating.environment = "sidewaystable")
print(miTabla, include.rownames = FALSE, type = "html", hline.after = c(1))
MetaID | Author | Heading | Description | ID | Language | Origen |
---|---|---|---|---|---|---|
0 | Hugo Chavez | Bill Clinton | carta | clinton | Spanish | www.analitica.com |
0 | Hugo Chavez | Ilich Ramirez Sanchez | carta | chacal | Spanish | www.analitica.com |
0 | Hugo Chavez | Corte Suprema de Justicia | carta | csj | Spanish | www.analitica.com |
0 | Hugo Chavez | Cien dias de gobierno | cadena nacional | cien | Spanish | www.analitica.com |
0 | Hugo Chavez | Desfile julio | discurso | desfile | Spanish | www.analitica.com |
0 | Hugo Chavez | Alocucion Proceres | discurso | proceres | Spanish | www.analitica.com |
0 | Hugo Chavez | Jesus Urdaneta Hernandez | entrevista | urdaneta | Spanish | www.analitica.com |
0 | Hugo Chavez | Juramentacion Gabinete | cadena nacional | gabinete | Spanish | www.analitica.com |
0 | Hugo Chavez | Discurso toma de posesion | discurso | posesion | Spanish | www.analitica.com |
0 | Hugo Chavez | Respuesta Conferencia Episcopal | carta | cev | Spanish | www.analitica.com |
0 | Hugo Chavez | Dieciocho meses de gobierno | cadena nacional | dieciocho | Spanish | www.analitica.com |
0 | Hugo Chavez | Clausura II Cumbre OPEP | discurso | opep | Spanish | www.analitica.com |
0 | Hugo Chavez | Palabras en el Panteon Nacional | discurso | panteon | Spanish | www.analitica.com |
0 | Hugo Chavez | Frijolito II | entrevista | frijolitoII | Spanish | www.analitica.com |
0 | Hugo Chavez | Revolucion Democratica | programa gobierno | rev.democ | Spanish | www.analitica.com |
0 | Hugo Chavez | Presupuesto nacional | cadena nacional | presupuesto | Spanish | www.analitica.com |
0 | Hugo Chavez | Cadena nacional agosto | cadena | cadago | Spanish | www.analitica.com |
0 | Hugo Chavez | Cadena nacional junio | cadena | cadjun | Spanish | www.analitica.com |
0 | Hugo Chavez | cadena nacional octubre | cadena | cadoct | Spanish | www.analitica.com |
0 | Hugo Chavez | Cumbre Grupo de los Tres | discurso | grupo.tres | Spanish | www.analitica.com |
0 | Hugo Chavez | Entrevista Heinz Dieterich | entrevista | dietrich | Spanish | www.analitica.com |
0 | Hugo Chavez | Salutacion Cuerpo Diplomatico | discurso | salutacion | Spanish | www.analitica.com |
0 | Hugo Chavez | Cadena al Retoma el poder | cadena nacional | retoma | Spanish | www.analitica.com |
0 | Hugo Chavez | Francisco Arias Cardenas | entrevista | arias.cardenas | Spanish | www.analitica.com |
0 | Hugo Chavez | Consejo Federal de Gobierno | discurso | consejo | Spanish | www.analitica.com |
0 | Hugo Chavez | En la FAO | discurso | fao | Spanish | www.analitica.com |
0 | Hugo Chavez | Entrega Premio Nacional Periodista | discurso | premio.periodista | Spanish | www.analitica.com |
0 | Hugo Chavez | Marcha en Av Bolivar | discurso | marcha.respaldo | Spanish | www.analitica.com |
0 | Hugo Chavez | Plan vivienda productiva | discurso | vivenda.productiva | Spanish | www.analitica.com |
0 | Hugo Chavez | Con Jorge Gestoso | entrevista | j.gestoso | Spanish | www.analitica.com |
0 | Hugo Chavez | con Martha Harnecker | entrevista | m.harnecker | Spanish | www.analitica.com |
0 | Hugo Chavez | En Monterrey | discurso | monterrey | Spanish | www.analitica.com |
0 | Hugo Chavez | Con medios internacionales | entrevista | m.internacionales | Spanish | www.analitica.com |
0 | Hugo Chavez | Vision estrategica Venezuela | discurso | vision | Spanish | www.analitica.com |
A partir de las funciones Corpus(), TextDocumentMatrix(), y de las transformaciones que se incluyen en el paquete tm, creamos algunas funciones propias: Con ella extraemos los términos más frecuentes en cada uno de los discursos emitidos durante el lapso analizado.
Obtengamos una relación del número de palabras en cada uno de los años analizados:
m1999 <- crear_tdm(c1999)
m2000 <- crear_tdm(c2000)
m2001 <- crear_tdm(c2000)
m2002 <- crear_tdm(c1999)
distribucion99 <- hacer_tabla(m1999)
distribucion00 <- hacer_tabla(m2000)
distribucion01 <- hacer_tabla(m2001)
distribucion02 <- hacer_tabla(m2002)
# veamos cinco primeros registros de la tabla correspondiente a 199
head(distribucion99)
## palabras frecuencia
## que que 1490
## los los 595
## del del 399
## para para 348
## por por 338
## las las 315
Veamos rápidamente cuantas palabras posee cada corpa por año
discursos <- c(1999, 2000, 2001, 2002)
textos <- c(10, 8, 6, 15)
totalTerminos <- c(sum(distribucion99$frecuencia), sum(distribucion00$frecuencia),
sum(distribucion01$frecuencia), sum(distribucion02$frecuencia))
discursosDF <- data.frame(Fecha = discursos, Cantidad_textos = textos, total_palabras = totalTerminos)
Fecha | Cantidad_textos | total_palabras |
---|---|---|
1999 | 10 | 28308 |
2000 | 8 | 26341 |
2001 | 6 | 26341 |
2002 | 15 | 28308 |
En un total de 39 textos obtenidos provenientes de discursos escritos o emitidos/avalados por el presidente Chávez, entre e 1999 y 2002 hay un total 1.093 × 105 de palabras.
Adicionalmente, limpiamos mos el corpus, eliminando palabras funcionales, números, espacios en blanco, y llevando todos los caracteres de las bases de datos documentales a minúscula, para usarlo posteriormente para hacer análisis de los discursos sin palabras funcionales.
chavez.99 <- limpiar_corpus_es(c1999)
chavez00 <- limpiar_corpus_es(c2000)
chavez01 <- limpiar_corpus_es(c2001)
chavez02 <- limpiar_corpus_es(c2002)
Creamos la matriz documental, que nos permitirá contar la frecuencia de aparición de cada término en los diferentes documentos. A partir de esta matrix generamos sendas tablas por año. Igualmente, creamos un par de funciones propias, partiendo de las funciones del paquete tm, para agilizar el proceso
tdm.99 <- crear_tdm(c1999)
tdm00 <- crear_tdm(c2000)
tdm01 <- crear_tdm(c2001)
tdm02 <- crear_tdm(c2002)
terminos99 <- hacer_tabla(tdm.99)
terminos00 <- hacer_tabla(tdm00)
terminos01 <- hacer_tabla(tdm01)
terminos02 <- hacer_tabla(tdm02)
Veamos los 20 términos que más repite Chávez en estos textos entre 1999-2002
mas99 <- head(terminos99, 20)
mas00 <- head(terminos00, 20)
mas01 <- head(terminos01, 20)
mas02 <- head(terminos02, 20)
veinte99 <- data.frame(palabras = mas99$palabras, frecuencia = round(mas99$frecuencia/sum(mas99$frecuencia) *
1000), fecha = rep("1999", length(mas99)))
veinte00 <- data.frame(palabras = mas00$palabras, frecuencia = round(mas00$frecuencia/sum(mas00$frecuencia) *
1000), fecha = rep("2000", length(mas00)))
veinte01 <- data.frame(palabras = mas01$palabras, frecuencia = round(mas01$frecuencia/sum(mas01$frecuencia) *
1000), fecha = rep("2001", length(mas01)))
veinte02 <- data.frame(palabras = mas02$palabras, frecuencia = round(mas02$frecuencia/sum(mas02$frecuencia) *
1000), fecha = rep("2002", length(mas02)))
x <- rbind(veinte99, veinte00, veinte01, veinte02)
require(ggplot2)
g <- ggplot(x, aes(reorder(palabras, frecuencia), frecuencia, ylab = "")) +
facet_grid(. ~ fecha) + geom_point() + theme(axis.text.x = element_text(angle = 90)) +
coord_flip() + labs(title = "H. Chavez. Algunos discursos segun palabras mas frecuentes por cada mil")
g + xlab("")
De acuerdo con la Real Academia de la Lengua las veinte primeras palabras mas usadas del castellano son:
castellanoMas <- url("http://corpus.rae.es/frec/1000_formas.TXT")
castellanoDf <- read.table(castellanoMas, header = TRUE, sep = "\t")
head(castellanoDf, 20)
## Orden Frec.absoluta Frec.normalizada
## 1. de 9,999,518 65545.55
## 2. la 6,277,560 41148.59
## 3. que 4,681,839 30688.85
## 4. el 4,569,652 29953.48
## 5. en 4,234,281 27755.16
## 6. y 4,180,279 27401.19
## 7. a 3,260,939 21375.03
## 8. los 2,618,657 17164.95
## 9. se 2,022,514 13257.31
## 10. del 1,857,225 12173.87
## 11. las 1,686,741 11056.37
## 12. un 1,659,827 10879.95
## 13. por 1,561,904 10238.07
## 14. con 1,481,607 9711.74
## 15. no 1,465,503 9606.18
## 16. una 1,347,603 8833.36
## 17. su 1,103,617 7234.06
## 18. para 1,062,152 6962.26
## 19. es 1,019,669 6683.79
## 20. al 951,054 6234.03
No hay comentarios.:
Publicar un comentario