Mostrando las entradas con la etiqueta discursos. Mostrar todas las entradas
Mostrando las entradas con la etiqueta discursos. Mostrar todas las entradas

sábado, 7 de septiembre de 2013

Usando R para clasificar textos. Cluster jerarquicos

Hugo Chávez. Asociaciones entre términos presentes en algunos de sus discursos, 1999-2002.

Hugo Chávez. Asociaciones entre términos presentes en algunos de sus discursos, 1999-2002.

El paquete tm nos permite también encontrar qué textos guardan mayor relación entre ellos. Para ello nos permite emplear cluster, o conglomerados, jerárquicos y también k-means. No obstante, se pueden emplear otros algorritmos empleando otros paquetes de R tales como cluster, gclus, vegan, vegclus, ape, FactoMineR, entre otros. Trabajaremos este post con las funciones desarrolladas en el paquete tm, para lo cual debemos trabajar con el paquete proxy.

Cluster jerárquico

Aplicamos cluster jerárquico en este concepto para observar qué discursos son más parecidos entre sí durante los años analizados. También podríamos emplear la técnica para observar durante qué años los contenidos de los discursos tendieron a ser semejantes. El cluster jerárquico emplea medidas de distancias para calcular qué tan cercano estan los textos entre sí. Existen numerosas medidas de distancias que se emplean para clasificar textos, sin embargo en el contexto de minería de texto usualmente se emplean las distancias “coseno” y “Jaccard”. Discutir las virtudes y limitaciones de esta medida está fuera del alcance de este post. Posiblemente más adelante revisemos este punto. Por ahora emplearemos la distancia “coseno” para examinar la similitud entre los diferentes textos que componen nuestra base de datos textual con algunos discursos emitidos por el presidente Chávez entre 1999 y 2002.

El primer paso para clasificar los texto dentro de este paradigma consiste en crear una matriz que calcule la distancia entre los textos. Para ello empleamos la funcion dissimilarity del paquete tm. Recordemos que seguimos empleando las bases de datos sin eliminar los términos funcionales y que los discursos, escritos o las transcripciones de discursos orales, que analizmos son:

H. Chavez. Textos analizados, 1999-2002
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
require(proxy)
## Loading required package: proxy
## 
## Attaching package: 'proxy'
## 
## The following object is masked from 'package:stats':
## 
## as.dist, dist
distancia99 <- dissimilarity(tdm.99, method = "cosine")
distancia00 <- dissimilarity(tdm00, method = "cosine")
distancia01 <- dissimilarity(tdm01, method = "cosine")
distancia02 <- dissimilarity(tdm02, method = "cosine")

El segundo paso consiste en visualizar los textos clasificados. Para ello empleamos la funciónn hclust. Para crear la aglomeración existen diversos métodos. En algún otro post discutiremos cada uno de ellos. En esta oportunidad simplemente emplearemos el métodos ward

plot(hclust(distancia99, method = "ward"), cex = 0.8, main = "Discursos 1999", 
    sub = "metodo Ward", ylab = "historia de aglomeracion", xlab = "Clasificación")

plot of chunk distancias99

El cluster identifica dos grupos de textos. La carta dirigida a Ilich Ramírez y los 8 restantes. Podemos observar que las cartas presentan mayores similarides entre sí que con el resto de los textos. Notamos además que el nivel de similaridad mayor entre los documentos ocurre en el contenido de la cadena nacional con motivo de los primeros cien días de gobierno y el discurso ofrecido el 2 de febrero por el presidente Chávez a raíz de la toma de posesión. Igualmente, el contenido de estos dos discursos está próximo al contenido del discurso ofrecido el mismo 2 de febrero en los Próceres.

plot(hclust(distancia00, method = "ward"), cex = 0.8, main = "Discursos 2000", 
    sub = "metodo Ward", ylab = "historia de aglomeracion", xlab = "Clasificación")

plot of chunk distancias00

Los textos de los discursos del año 2000 se dividen en dos grandes grupos. De un lado destaca el discurso de clausura de la Cumbre de la OPEP cuyo contenido en alguna forma es algo similar a la respuesta de Chávez a la Conferencia Episcopal y a la propuesta, programa de gobierno, para Continuar la Revolución. Sorprendentemente estos dos últimos textos han sido clasificados como bastantes similares. Del otro lado, el segundo grupo, consta de dos textos algo parecidos, el discurso en el Panteon y un conjunto de entrevistas que le hacen en diferentes contextos, más dos textos muy similares, que son la alocución con motivo de los dieciocho meses de gobierno y la alocución con motivo del Presupuesto 2000. La similaridad entre estos dos textos no sugiere que en ambos se discute ampliamente temas económicos.

plot(hclust(distancia01, method = "ward"), cex = 0.8, main = "Discursos 2001", 
    sub = "metodo Ward", ylab = "historia de aglomeracion", xlab = "Clasificación")

plot of chunk distancias01

En 2001 encontramos también dos grupos de textos. El discurso con motivo de la instalación del Grupo de los Tres, totalmente distinto a los textos del segundo grupo. En este último encontramos textos con cierto parecido, la Salutación al Cuerpo Diplomático, la entrevista concedida a H. Dieterich así como la cadena del 29 de octubre. Las cadenas del 15 de junio y del 8 de agosto, son bastante similares y ambas, están próximas al contenido del texto de la cadena de octubre.

plot(hclust(distancia02, method = "ward"), cex = 0.8, main = "Discursos 2002", 
    sub = "metodo Ward", ylab = "historia de aglomeracion", xlab = "Clasificación")

plot of chunk distancias02

En 2002 encontramos nuevamente dos grupos de documentos. En el primero figuran el discurso la FAO, y el discurso en Monterrey. En el segundo encontramos documentos con cierta nivel de cercanía. En este grupo encontramos que la entrevista concedida a Martha Hanecker y la rueda de prensa con motivo de la retoma del poder son bastante similares, al igual que el discurso ofrecido en la Av. Bolívar con motivo de la marcha en respaldo a su gobierno con la entrevista concedida a Jorge Gestoso.

En general podemos concluir que la técnica de cluster jerárquico clasifica en forma bastante aceptable los discursos que venimos analizando.

Rgraphviz. Asociaciones con terminos escogidos

Hugo Chávez. Asociaciones entre términos presentes en algunos de sus discursos, 1999-2002.

Hugo Chávez. Asociaciones entre términos presentes en algunos de sus discursos, 1999-2002.

Podemos seleccionar algunos términos y observar la asociacion entre ellos usando la función plot() incorporada en el paquete tm en combinación con el el paquete Rgraphviz de Bioconductor. En este caso queremos observar como pudo evolucionar la asociacion entre algunos términos en los discursos que venimos analizando del presidente Chávez.

Creando un grafo con términos escogidos

Observemos la evolucion de la asociación entre las palabras “venezuela”, “pais”, “soberania”,“pueblo”, “deuda”, “pdvsa”, “bolivar”, “pobreza”, “riqueza” en los años analizados. Observemos primero cómo funciona esta idea

set.seed(2345)
plot(tdm.99, corThreshold = 0.2, weighting = TRUE, terms = "venezuela")

plot of chunk creaAsocBio

Sólo hemos introducido un sólo término, es exactamente la visualización que obtenemos. Agremos pais, soberania

set.seed(2345)
plot(tdm.99, corThreshold = 0.2, weighting = TRUE, terms = c("venezuela", "pais", 
    "soberania"))

plot of chunk creaAsocBio2

No es ninguna sorpresa, soberania guarda una mayor asociación con Venezuela que con país. No obstante, en el año 1999, ocasionalmente pais y soberanía aparecieron juntas en algunos discusos. Incluyamos el resto de asociaciones:

set.seed(2345)
plot(tdm.99, corThreshold = 0.2, weighting = TRUE, terms = c("venezuela", "pais", 
    "soberania", "pueblo", "deuda", "pdvsa", "bolivar", "pobreza", "riqueza"), 
    attrs = list(node = list(fixedsize = FALSE, fontsize = 15, shape = "ellipse")))

plot of chunk creaAsocBio3

En 1999 los terminos analizados presentan un fuerte asociación en las siguientes combinaciones

  • venezuela-deuda-pais-bolivar-riqueza-pdvsa
  • pais-bolivar-deuda-pdvsa Otras combinaciones, sin embargo, presentan una asociación más bien débil, como es el caso de pais-riqueza-deuda. Llama la atención la baja asociación entre riqueza-deuda
set.seed(2345)
plot(tdm00, corThreshold = 0.2, weighting = TRUE, terms = c("venezuela", "pais", 
    "soberania", "pueblo", "deuda", "pdvsa", "bolivar", "pobreza", "riqueza"), 
    attrs = list(node = list(fixedsize = FALSE, fontsize = 15, shape = "ellipse")))

plot of chunk creaAsocBio4

En 2000, la palabra pobreza aparece en los discursos pero no está asociada a ninguna de las palabras que analizamos, al menos a un nivel de 0.2. Observamos que la mayoría de las asociaciones que durante el 1999 eran fuertes, aparecen en el año 2000 con intesidades moderadas a bajas y sólo se conserva un alto grado de asociación entre, por ejemplo, venezuela-riqueza-pais-pdvsa-deuda

set.seed(2345)
plot(tdm01, corThreshold = 0.2, weighting = TRUE, terms = c("venezuela", "pais", 
    "soberania", "pueblo", "deuda", "pdvsa", "bolivar", "pobreza"), attrs = list(node = list(fixedsize = FALSE, 
    fontsize = 15, shape = "ellipse")))

plot of chunk creaAsocBio5

En el año 2001 la palabra soberanía ya no aparece asociada a la rica red de relacione que observamos en los dos años anteriores. En este año, el término sólo guarda una asociación fuerte con venezuela y moderada con pais. La asociación entre venezuela y pdvsa se modera, pero se fortalece la asociación entre pdvsa y pobreza. La palabra riqueza no se menciona en asociación con ninguna de estas palabras, al menos a un nivel de 0.2.

set.seed(2345)
plot(tdm02, corThreshold = 0.2, weighting = TRUE, terms = c("venezuela", "pais", 
    "soberania", "pueblo", "deuda", "pdvsa", "bolivar", "pobreza", "riqueza"), 
    attrs = list(node = list(fixedsize = FALSE, fontsize = 15, shape = "ellipse")))

plot of chunk creaAsocBio6

En el año 2002 se recrea la red de relaciones en torno a la palabra soberania. Observamos además que la asociación entre los términos que venimos analizando se fortalece, pero pdvsa solo aparece en asociación, a este nivel de 0.2, con pais.