En el siguiente ejercicio, analizaremos el discurso dado por el ex presidente Sebastián Piñera el 19 de octubre de 2019. Este discurso adquiere relevancia al ser el primero que da después de los hechos ocurriodos el día anterior, que dieron origen al denominado “Estallido Social”. El documento original se encuentra en el sitio de la Presidencia de Chile (ver enlace acá). Este tipo de análisis puede ser aplicado a otro tipo de documentos, como por ejemplo, una transcripción.
Una vez cargados los packafges necesarios, que están detallados en el código proporcionado, se extrae el documento en su versión pdf. Cabe señalar que es la versión disponible en el sitio web de la la Presidencia, la que fue descargada desde Internet y que, en este ejercicio se accede por medio de un enlace compartido.
Ello es relevante de considerar, pues, el proceso de preparación del documento varía bastante dependiente del formato en el que esté almacenado el respectivo documento.
El primer paso, es extraer el texto desde el documento pdf
En este documento, se almacena en “text1” un objeto que contiene el comunicado completo, contenido en 4 párrafos “[1:4]. Al revisar el documento, junto con el texto se importante determinados caracteres que es necesario depurar antes de trabajar directamente en el documento, como por ejemplo el caracter #\n que indica la presencia de un espacio.
text1 <- pdf_text("https://www.dropbox.com/scl/fi/ali0vslhdh9opnmg34fr5/Comunicado_103689.pdf?rlkey=crq0rb4d7xhd04hhmr2iyi842&st=npxidhwx&dl=1")
class(text1)
## [1] "character"
summary(text1)
## Length Class Mode
## 4 character character
#Ver el documento
print(text1)
## [1] "Presidente Piñera: \"Estoy seguro de que, con la unidad de\ntodos los chilenos, vamos a derrotar a los violentistas y vamos\na recuperar el país en paz y el país con libertad que todos\nqueremos\"\n20 OCT. 2019\n\n\n\n\nEl Jefe de Estado dio un mensaje valorando el trabajo de Bomberos, las Fuerzas Armadas,\nCarabineros y la Policía de Investigaciones para resguardar la seguridad de la ciudadanía ante\nlos gravísimos hechos de desorden público.\n\n\n\nMuy buenas noches:\n\n\nQuiero hablarles a todos mis compatriotas que hoy día están recogidos en sus casas. Estamos en\nguerra contra un enemigo poderoso, implacable, que no respeta a nada, ni a nadie, que está dispuesto\na usar la violencia y la delincuencia sin ningún límite, incluso cuando significa pérdidas de vidas\nhumanas, que está dispuesto a quemar nuestros hospitales, nuestras estaciones del Metro, nuestros\nsupermercados, con el único propósito de producir el mayor daño posible a todos los chilenos.\n\n\nEllos están en guerra contra todos los chilenos de buena voluntad que queremos vivir en democracia\ncon libertad y en paz.\n\n\nFrente a esta situación, el General Iturriaga, que está a cargo de este Estado de Emergencia ha podido\ndisponer de 9 mil 500 hombres para resguardar la paz, la tranquilidad y sus derechos, sus libertades.\n"
## [2] "Yo quiero expresar mi profundo agradecimiento y reconocimiento a la labor que cumplen esos 9 mil\n500 de las Fuerzas Armadas y de nuestras Fuerzas de Orden, protegiendo, patrullando y enfrentando a\nestos violentistas y delincuentes.\n\n\nY quiero decirle General, y a través el suyo a todas las fuerzas que están bajo su mando que cuentan\ncon el total apoyo y respaldo de nuestro Gobierno y yo estoy seguro también de la inmensa mayoría de\nlos chilenos que queremos y amamos nuestra libertad, nuestra democracia, nuestro estado de derecho\ny todo aquello que con tanto esfuerzo hemos construido.\n\n\nHoy no es tiempo de ambigüedades, llamo a todos mis compatriotas a unirnos en esta lucha contra la\nviolencia, contra la delincuencia. Por eso, hemos establecido Estado de Emergencia en la Región\nMetropolitana, después lo extendimos a la Región de Valparaíso y Biobío, a la Región de Coquimbo y\nO’Higgins, y ahora lo hemos extendido en la Región de Antofagasta, a la Región del Maule, a la Región\nde Los Ríos, Magallanes.\n\n\nPorque el deber de nuestro Gobierno, y así está establecido en la Constitución, es proteger y\nresguardar el orden público y la seguridad, tranquilidad y paz de todos nuestros compatriotas.\n\n\nHoy no es tiempo de dudas o ambigüedades, hay que tomar partido y yo llamo a todas las fuerzas\npolíticas y a todos los hombres y mujeres de buena voluntad a condenar sin ninguna duda, con total\nfortaleza esta violencia y delincuencia. Hay algunos que no lo han hecho, o cuando lo hacen siempre\ndejan espacios a la ambigüedad, ellos no están contribuyendo a la paz, la tranquilidad y la seguridad\nde todos nuestros compatriotas, y en cierta forma está facilitando el camino de aquellos que quieren\ndestruir nuestra democracia, nuestras libertades, nuestro estado de derecho y atentar contra su vida,\nsu tranquilidad, su libertad y sus derechos.\n\n\nPor esa razón, mañana vamos a tener un día difícil, estamos muy conscientes de que tienen un grado\nde organización, de logística, que es propia de una organización criminal. Y aquí estoy hablando de los\nverdaderos criminales, porque yo entiendo perfectamente bien que muchos de nuestros compatriotas\ntienen todo el derecho a expresarse, a protestar e incluso comprendemos y compartimos muchas de\nsus inquietudes, muchos de sus anhelos, muchas de sus necesidades.\n\n\nHemos hecho un esfuerzo gigantesco para lograr que mañana sea un día lo más normal posible.\nHemos tomado todas las providencias para que el sistema de transporte público funcione lo mejor\nposible. Va a estar funcionando la línea 1 del Metro entre las estaciones Los Domínicos y Pajaritos, 27\nestaciones.\n\n\nHemos fortalecido el transporte público de superficie, complementando con más buses, facilitando el\ntrabajo de los taxis y permitiendo también que haya solidaridad entre los chilenos. Mañana yo le pido a\ntodos nuestros compatriotas que ayuden a quienes tengan dificultades en transportarse.\n"
## [3] "Hemos hecho un enorme esfuerzo por normalizar la situación del sector de la educación, y mañana\nvan a abrir las universidades, los colegios y jardines infantiles. Sabemos que muchas personas no van\na poder llegar por las dificultades en el transporte o por temor, pero aquellos que puedan hacerlo,\nqueremos que la ciudad mañana funcione con la mayor normalidad.\n\n\nEn materia de salud, los hospitales, los consultorios van a estar absolutamente funcionando con gran\nnormalidad.\n\n\nLo mismo ocurre con el tema del abastecimiento. Entendemos que los atentados a las farmacias, a los\nsupermercados, a las bombas de bencina dificultan el abastecimiento de bienes tan esenciales como\nlos alimentos, como el combustible y como los medicamentos.\n\n\nPor eso, estos 9 mil 500 bajo las órdenes del General Iturriaga están defendiendo todos los puntos\nneurálgicos, críticos que estos violentistas y delincuentes están atacando.\n\n\nY, por eso, yo les pido a todos mis compatriotas que nos unamos en esta batalla que no podemos\nperder, que nos ayudemos a que todos los demás puedan tener mañana un día lo más normal posible\ny también que logremos, por fin, empezar a ganar esta batalla. No vamos a permitir que los\nviolentistas, los delincuentes se sientan dueños de nuestro país.\n\n\nEl país nos pertenece a todos y muy especialmente a los que queremos vivir en paz y en libertad.\n\n\nPor eso, les pido comprensión, sé que han sufrido los efectos de estos actos vandálicos y\ndelincuenciales, sé que a muchos de ustedes los ha afectado directamente, pero quiero también\ndecirles que todos somos responsables de aportar cada uno de acuerdo a sus medios para que triunfe\nla democracia, la libertad, el estado de derecho y el derecho a vivir en paz de todos nuestros\ncompatriotas sobre aquellos que pretenden por la vía de la delincuencia, el vandalismo y la violencia\nimponernos por la fuerza su forma de pensar.\n\n\nQuiero terminar estas palabras agradeciendo la comprensión, compartiendo la angustia, el sufrimiento,\nel temor que yo sé, invade las almas y corazones de muchos de nuestros compatriotas, pero quiero\nque sepan que tenemos un Gobierno 100% comprometido con resguardar sus derechos, sus\nlibertades; tenemos las Fuerzas Armadas y las Fuerzas de Orden que están cumpliendo en forma\nejemplar la labor que la propia Constitución y la Ley les han encargado.\n\n\nY, quiero terminar, una vez más, agradeciendo a tantas personas que han entregado lo mejor de sí\nmismos en estos últimos días, a nuestras Fuerzas Armadas, a Carabineros de Chile, a la Policía de\nInvestigaciones, a los Bomberos de Chile que han tenido una tarea titánica para apagar incendios\nporque el incendio, el fuego es el instrumento que usan porque saben que es un instrumento\ntremendamente destructivo; nunca dan la cara porque son, en el fondo, cobardes.\n"
## [4] "Y yo estoy seguro de que, con la unidad de todos los chilenos vamos a derrotar a los violentistas y\nvamos a recuperar el país en paz y el país con libertad que todos queremos.\n\n\nTermino diciendo que comprendo perfectamente bien a aquellos que protestan, a aquellos que se\nmanifiestan porque tienen carencias, porque tiene privaciones, porque sienten que no les hemos\nentregado lo que corresponde y comprometo el mayor esfuerzo de nuestro Gobierno como lo hemos\nestado haciendo estos años para poner a los niños “Primeros en la fila”, para mejorar las pensiones,\npara bajar el precio de los medicamentos, para lograr que todos los chilenos tengan oportunidad de\nuna vida más plena y más feliz.\n\n\nAgradezco a mis compatriotas y créanme que viendo el ejemplo de muchos chilenos y chilenas que\nhan demostrado lo mejor de sí mismos en tiempos difíciles me siento muy orgulloso de ser chileno y\nmuy orgulloso de ser el Presidente de Chile.\n\n\nMuchas gracias.\n"
Una vez descargado el texto, el siguiente paso es transformar éste a un corpus, que es el formato con el cual se trabaja para su posterior análisis. Ello implica limpiar el texto, removiendo caracteres como puntos, comas, números. simbolos, etcétera. También implica dejar las palabras sólo en minsúculas (si una misma palabra involucra mayúsculas, por ejemplo, se considera como una distinta) y remover palabras que no tienen un significado por sí mismas, sino que cumplen otro tipo de funciones en un texto, como por ejemplo, conectores.
corp = corpus(text1)
summary(corp)
## Corpus consisting of 4 documents, showing 4 documents:
##
## Text Types Tokens Sentences
## text1 130 236 5
## text2 240 524 14
## text3 242 514 12
## text4 103 174 4
limpieza_texto = tokens(corp, remove_punct = T,
remove_numbers = T,
remove_symbols = T,
remove_url = T) %>%
tokens_tolower()%>%
tokens_remove(stopwords("spanish"))
Entre los análisis posibles de realizar, se exploran los siguientes. Frecuencia de palabras, co-ocurrencias y palabras en contexto:
Una vez preparado el documento, se elabora una matriz de documento término (DTM), que es una matriz en la que las filas son los documentos o bloques de textos, las columnas las palabras, y las celdas la cantidad de palabras que está en cada bloque/documento. A partir de ello, podemos proceder a identificar cuales son las palabras que más se reiteran, lo que nos permite identificar, por ejemplo, que palabras son las más importantes.
## compatriotas chilenos paz fuerzas libertad quiero
## 10 8 8 8 7 7
## vamos país queremos región
## 6 6 6 6
Entre los análisis que es posible realizar, está en el análisis de frecuencias, que permite ver los términos que más aparecen. Visualmente, ello puede representarse en un gráfico que se denomina “nube de palabras”, en el cual el tamaño de la palabra representa aquella que más se reitera. En este ejemplo, ello diría que el término que más enfatizaba el ex presidente, en ese discurso, serían los conceptos de chilenos, compatriotas y paz. En el contexto de un trabajo o informe, esta evidencia se interpreta, en una argumentación, con elementos contextuales en que éste discurso fue dado, inicio del estallido social, o de características del emisor, en este caso el ex presidente Piñera.
En este caso, el ajuste considera que se proyecten en la imagen, palabras que tengan un mínimo de ocho frecuencias (Ejemplo 1). En el ejemplo 2, se añaden otras opciones, como acotar el gráfico a un máximo de palabras - 50- y utilizar una paleta predeterminada de colores del package RColorBrewer, que permite que la frequencia de palabras se refleje en el tamaño de letra.
library(quanteda.textplots)
#Ejemplo 1
textplot_wordcloud(crear_dfm, min_freq=8)
#Ejemplo 2
textplot_wordcloud(crear_dfm, max_words = 50, color = RColorBrewer::brewer.pal(8, "Dark2"))
Junto con ello, una segunda manera de analizar el conteo de palabras es generado una tabla de frecuencias de los términos más utilizados. Ello implica transformar el cuerpo de texto (corpus) en una tabla donde se indica el término analizado, la frecuencia (veces) que éste aparece y el ránking, que indica la posición de un término, de mayor a menor. A partir del uso de la tabla, podemos crear un gráfico de barras, que indica los 20 principales términos que estructuran, en este caso, el discurso del ex presidente Piñera el 19 de octubre de 2019.
#Crear una tabla de frecuencias
library(quanteda.textstats)
tabla_frecuencias = textstat_frequency(crear_dfm)
print(tabla_frecuencias)
## feature frequency rank docfreq group
## 1 compatriotas 10 1 4 all
## 2 chilenos 8 2 3 all
## 3 paz 8 2 4 all
## 4 fuerzas 8 2 3 all
## 5 libertad 7 5 4 all
## 6 quiero 7 5 3 all
## 7 vamos 6 7 4 all
## 8 país 6 7 3 all
## 9 queremos 6 7 4 all
## 10 región 6 7 1 all
## 11 mañana 6 7 2 all
## 12 violentistas 5 12 4 all
## 13 derecho 5 12 2 all
## 14 aquellos 5 12 3 all
## 15 armadas 4 15 3 all
## 16 resguardar 4 15 3 all
## 17 público 4 15 2 all
## 18 día 4 15 3 all
## 19 violencia 4 15 3 all
## 20 delincuencia 4 15 3 all
## 21 posible 4 15 3 all
## 22 democracia 4 15 3 all
## 23 tranquilidad 4 15 2 all
## 24 gobierno 4 15 3 all
## 25 esfuerzo 4 15 3 all
## 26 muchas 4 15 3 all
## 27 seguro 3 27 3 all
## 28 seguridad 3 27 2 all
## 29 hoy 3 27 2 all
## 30 estaciones 3 27 2 all
## 31 mayor 3 27 3 all
## 32 vivir 3 27 2 all
## 33 general 3 27 3 all
## 34 mil 3 27 3 all
## 35 derechos 3 27 3 all
## 36 libertades 3 27 3 all
## 37 orden 3 27 2 all
## 38 delincuentes 3 27 2 all
## 39 todas 3 27 1 all
## 40 hecho 3 27 2 all
## 41 forma 3 27 2 all
## 42 transporte 3 27 2 all
## 43 mejor 3 27 3 all
## 44 pido 3 27 2 all
## 45 van 3 27 1 all
## 46 sé 3 27 1 all
## 47 chile 3 27 2 all
## 48 presidente 2 48 2 all
## 49 unidad 2 48 2 all
## 50 derrotar 2 48 2 all
## 51 recuperar 2 48 2 all
## 52 trabajo 2 48 2 all
## 53 bomberos 2 48 2 all
## 54 carabineros 2 48 2 all
## 55 policía 2 48 2 all
## 56 investigaciones 2 48 2 all
## 57 guerra 2 48 1 all
## 58 dispuesto 2 48 1 all
## 59 incluso 2 48 2 all
## 60 hospitales 2 48 2 all
## 61 metro 2 48 2 all
## 62 supermercados 2 48 2 all
## 63 buena 2 48 2 all
## 64 voluntad 2 48 2 all
## 65 situación 2 48 2 all
## 66 iturriaga 2 48 2 all
## 67 emergencia 2 48 2 all
## 68 hombres 2 48 2 all
## 69 labor 2 48 2 all
## 70 bajo 2 48 2 all
## 71 total 2 48 1 all
## 72 tiempo 2 48 1 all
## 73 ambigüedades 2 48 1 all
## 74 llamo 2 48 1 all
## 75 establecido 2 48 1 all
## 76 constitución 2 48 2 all
## 77 facilitando 2 48 1 all
## 78 vida 2 48 2 all
## 79 tener 2 48 2 all
## 80 organización 2 48 1 all
## 81 propia 2 48 2 all
## 82 perfectamente 2 48 2 all
## 83 bien 2 48 2 all
## 84 lograr 2 48 2 all
## 85 normal 2 48 2 all
## 86 funcione 2 48 2 all
## 87 funcionando 2 48 2 all
## 88 dificultades 2 48 2 all
## 89 personas 2 48 1 all
## 90 temor 2 48 1 all
## 91 puedan 2 48 1 all
## 92 normalidad 2 48 1 all
## 93 abastecimiento 2 48 1 all
## 94 medicamentos 2 48 2 all
## 95 batalla 2 48 1 all
## 96 comprensión 2 48 1 all
## 97 terminar 2 48 1 all
## 98 agradeciendo 2 48 1 all
## 99 entregado 2 48 2 all
## 100 mismos 2 48 2 all
## 101 instrumento 2 48 1 all
## 102 orgulloso 2 48 1 all
## 103 ser 2 48 1 all
## 104 piñera 1 104 1 all
## 105 oct 1 104 1 all
## 106 jefe 1 104 1 all
## 107 dio 1 104 1 all
## 108 mensaje 1 104 1 all
## 109 valorando 1 104 1 all
## 110 ciudadanía 1 104 1 all
## 111 gravísimos 1 104 1 all
## 112 hechos 1 104 1 all
## 113 desorden 1 104 1 all
## 114 buenas 1 104 1 all
## 115 noches 1 104 1 all
## 116 hablarles 1 104 1 all
## 117 recogidos 1 104 1 all
## 118 casas 1 104 1 all
## 119 enemigo 1 104 1 all
## 120 poderoso 1 104 1 all
## 121 implacable 1 104 1 all
## 122 respeta 1 104 1 all
## 123 nadie 1 104 1 all
## 124 usar 1 104 1 all
## 125 ningún 1 104 1 all
## 126 límite 1 104 1 all
## 127 significa 1 104 1 all
## 128 pérdidas 1 104 1 all
## 129 vidas 1 104 1 all
## 130 humanas 1 104 1 all
## 131 quemar 1 104 1 all
## 132 único 1 104 1 all
## 133 propósito 1 104 1 all
## 134 producir 1 104 1 all
## 135 daño 1 104 1 all
## 136 frente 1 104 1 all
## 137 cargo 1 104 1 all
## 138 podido 1 104 1 all
## 139 disponer 1 104 1 all
## 140 expresar 1 104 1 all
## 141 profundo 1 104 1 all
## 142 agradecimiento 1 104 1 all
## 143 reconocimiento 1 104 1 all
## 144 cumplen 1 104 1 all
## 145 protegiendo 1 104 1 all
## 146 patrullando 1 104 1 all
## 147 enfrentando 1 104 1 all
## 148 decirle 1 104 1 all
## 149 través 1 104 1 all
## 150 mando 1 104 1 all
## 151 cuentan 1 104 1 all
## 152 apoyo 1 104 1 all
## 153 respaldo 1 104 1 all
## 154 inmensa 1 104 1 all
## 155 mayoría 1 104 1 all
## 156 amamos 1 104 1 all
## 157 aquello 1 104 1 all
## 158 construido 1 104 1 all
## 159 unirnos 1 104 1 all
## 160 lucha 1 104 1 all
## 161 metropolitana 1 104 1 all
## 162 después 1 104 1 all
## 163 extendimos 1 104 1 all
## 164 valparaíso 1 104 1 all
## 165 biobío 1 104 1 all
## 166 coquimbo 1 104 1 all
## 167 o’higgins 1 104 1 all
## 168 ahora 1 104 1 all
## 169 extendido 1 104 1 all
## 170 antofagasta 1 104 1 all
## 171 maule 1 104 1 all
## 172 ríos 1 104 1 all
## 173 magallanes 1 104 1 all
## 174 deber 1 104 1 all
## 175 así 1 104 1 all
## 176 proteger 1 104 1 all
## 177 dudas 1 104 1 all
## 178 tomar 1 104 1 all
## 179 partido 1 104 1 all
## 180 políticas 1 104 1 all
## 181 mujeres 1 104 1 all
## 182 condenar 1 104 1 all
## 183 ninguna 1 104 1 all
## 184 duda 1 104 1 all
## 185 fortaleza 1 104 1 all
## 186 hacen 1 104 1 all
## 187 siempre 1 104 1 all
## 188 dejan 1 104 1 all
## 189 espacios 1 104 1 all
## 190 ambigüedad 1 104 1 all
## 191 contribuyendo 1 104 1 all
## 192 cierta 1 104 1 all
## 193 camino 1 104 1 all
## 194 quieren 1 104 1 all
## 195 destruir 1 104 1 all
## 196 atentar 1 104 1 all
## 197 razón 1 104 1 all
## 198 difícil 1 104 1 all
## 199 conscientes 1 104 1 all
## 200 grado 1 104 1 all
## 201 logística 1 104 1 all
## 202 criminal 1 104 1 all
## 203 aquí 1 104 1 all
## 204 hablando 1 104 1 all
## 205 verdaderos 1 104 1 all
## 206 criminales 1 104 1 all
## 207 entiendo 1 104 1 all
## 208 expresarse 1 104 1 all
## 209 protestar 1 104 1 all
## 210 comprendemos 1 104 1 all
## 211 compartimos 1 104 1 all
## 212 inquietudes 1 104 1 all
## 213 anhelos 1 104 1 all
## 214 necesidades 1 104 1 all
## 215 gigantesco 1 104 1 all
## 216 tomado 1 104 1 all
## 217 providencias 1 104 1 all
## 218 sistema 1 104 1 all
## 219 va 1 104 1 all
## 220 línea 1 104 1 all
## 221 domínicos 1 104 1 all
## 222 pajaritos 1 104 1 all
## 223 fortalecido 1 104 1 all
## 224 superficie 1 104 1 all
## 225 complementando 1 104 1 all
## 226 buses 1 104 1 all
## 227 taxis 1 104 1 all
## 228 permitiendo 1 104 1 all
## 229 solidaridad 1 104 1 all
## 230 ayuden 1 104 1 all
## 231 transportarse 1 104 1 all
## 232 enorme 1 104 1 all
## 233 normalizar 1 104 1 all
## 234 sector 1 104 1 all
## 235 educación 1 104 1 all
## 236 abrir 1 104 1 all
## 237 universidades 1 104 1 all
## 238 colegios 1 104 1 all
## 239 jardines 1 104 1 all
## 240 infantiles 1 104 1 all
## 241 sabemos 1 104 1 all
## 242 poder 1 104 1 all
## 243 llegar 1 104 1 all
## 244 hacerlo 1 104 1 all
## 245 ciudad 1 104 1 all
## 246 materia 1 104 1 all
## 247 salud 1 104 1 all
## 248 consultorios 1 104 1 all
## 249 absolutamente 1 104 1 all
## 250 gran 1 104 1 all
## 251 mismo 1 104 1 all
## 252 ocurre 1 104 1 all
## 253 tema 1 104 1 all
## 254 entendemos 1 104 1 all
## 255 atentados 1 104 1 all
## 256 farmacias 1 104 1 all
## 257 bombas 1 104 1 all
## 258 bencina 1 104 1 all
## 259 dificultan 1 104 1 all
## 260 bienes 1 104 1 all
## 261 tan 1 104 1 all
## 262 esenciales 1 104 1 all
## 263 alimentos 1 104 1 all
## 264 combustible 1 104 1 all
## 265 órdenes 1 104 1 all
## 266 defendiendo 1 104 1 all
## 267 puntos 1 104 1 all
## 268 neurálgicos 1 104 1 all
## 269 críticos 1 104 1 all
## 270 atacando 1 104 1 all
## 271 unamos 1 104 1 all
## 272 podemos 1 104 1 all
## 273 perder 1 104 1 all
## 274 ayudemos 1 104 1 all
## 275 demás 1 104 1 all
## 276 logremos 1 104 1 all
## 277 fin 1 104 1 all
## 278 empezar 1 104 1 all
## 279 ganar 1 104 1 all
## 280 permitir 1 104 1 all
## 281 sientan 1 104 1 all
## 282 dueños 1 104 1 all
## 283 pertenece 1 104 1 all
## 284 especialmente 1 104 1 all
## 285 sufrido 1 104 1 all
## 286 efectos 1 104 1 all
## 287 actos 1 104 1 all
## 288 vandálicos 1 104 1 all
## 289 delincuenciales 1 104 1 all
## 290 ustedes 1 104 1 all
## 291 afectado 1 104 1 all
## 292 directamente 1 104 1 all
## 293 decirles 1 104 1 all
## 294 responsables 1 104 1 all
## 295 aportar 1 104 1 all
## 296 cada 1 104 1 all
## 297 acuerdo 1 104 1 all
## 298 medios 1 104 1 all
## 299 triunfe 1 104 1 all
## 300 pretenden 1 104 1 all
## 301 vía 1 104 1 all
## 302 vandalismo 1 104 1 all
## 303 imponernos 1 104 1 all
## 304 fuerza 1 104 1 all
## 305 pensar 1 104 1 all
## 306 palabras 1 104 1 all
## 307 compartiendo 1 104 1 all
## 308 angustia 1 104 1 all
## 309 sufrimiento 1 104 1 all
## 310 invade 1 104 1 all
## 311 almas 1 104 1 all
## 312 corazones 1 104 1 all
## 313 sepan 1 104 1 all
## 314 comprometido 1 104 1 all
## 315 cumpliendo 1 104 1 all
## 316 ejemplar 1 104 1 all
## 317 ley 1 104 1 all
## 318 encargado 1 104 1 all
## 319 vez 1 104 1 all
## 320 tantas 1 104 1 all
## 321 últimos 1 104 1 all
## 322 días 1 104 1 all
## 323 tarea 1 104 1 all
## 324 titánica 1 104 1 all
## 325 apagar 1 104 1 all
## 326 incendios 1 104 1 all
## 327 incendio 1 104 1 all
## 328 fuego 1 104 1 all
## 329 usan 1 104 1 all
## 330 saben 1 104 1 all
## 331 tremendamente 1 104 1 all
## 332 destructivo 1 104 1 all
## 333 nunca 1 104 1 all
## 334 dan 1 104 1 all
## 335 cara 1 104 1 all
## 336 fondo 1 104 1 all
## 337 cobardes 1 104 1 all
## 338 termino 1 104 1 all
## 339 diciendo 1 104 1 all
## 340 comprendo 1 104 1 all
## 341 protestan 1 104 1 all
## 342 manifiestan 1 104 1 all
## 343 carencias 1 104 1 all
## 344 privaciones 1 104 1 all
## 345 sienten 1 104 1 all
## 346 corresponde 1 104 1 all
## 347 comprometo 1 104 1 all
## 348 haciendo 1 104 1 all
## 349 años 1 104 1 all
## 350 poner 1 104 1 all
## 351 niños 1 104 1 all
## 352 primeros 1 104 1 all
## 353 fila 1 104 1 all
## 354 mejorar 1 104 1 all
## 355 pensiones 1 104 1 all
## 356 bajar 1 104 1 all
## 357 precio 1 104 1 all
## 358 oportunidad 1 104 1 all
## 359 plena 1 104 1 all
## 360 feliz 1 104 1 all
## 361 agradezco 1 104 1 all
## 362 créanme 1 104 1 all
## 363 viendo 1 104 1 all
## 364 ejemplo 1 104 1 all
## 365 chilenas 1 104 1 all
## 366 demostrado 1 104 1 all
## 367 tiempos 1 104 1 all
## 368 difíciles 1 104 1 all
## 369 siento 1 104 1 all
## 370 chileno 1 104 1 all
## 371 gracias 1 104 1 all
#Crear gráfico
tabla_frecuencias %>%
slice_max(n = 20, order_by = frequency) %>%
ggplot(aes(x = reorder(feature, frequency), y = frequency)) +
geom_col(fill = "steelblue") +
coord_flip() +
labs(x = NULL, y = "Frecuencia", title = "20 palabras más frecuentes")
El análisis de co-ocurrencias indica las palabras que están asociadas entre sí. Es útil para complementar el análisis anterior, identificando por ejemplo, que palabras están asociadas a términos que aparecen de manera reiterada, por ejemplo “compatriotas” o de algún interés asociado, en este caso al contexto del discurso de ejemplo, como “paz” o “libertad”.
Para realizarlo, se muestra la cantidad de veces en que una palabra aparece vinculada a otra. Cada palabra es representada en un punto (grafo), donde cada línea representa un vínculo entre ambas palabras y el grosor de la respectiva línea, la intensidad de ese vínculo. El conjunto de esos tres elementos se analiza en una estructura de redes.
Para analizar una base de datos de estas características, las filas están representadas a su vez en las columnas, donde la respectiva celdas representan cuando co-ocurren ambos términos. En el ejemplo 1, podemos ver que el término “vamos” está asociado a “chilenos” 14 veces. En el ejemplo 2, la opción “window” junta la distancia que una palabra tiene con otra hasta 5 términos - 5 a la izquierda y 5 a la derecha- y la diagonal de una matriz (muestra, por ejemplo, solo la ocurrencia de “presidente” y “chilenos” y no considera la de “chilenos” y “presidente”, que es lo mismo.
Una vez que se construye esta matriz, puede verse la cantidad de veces que un término aparece asociado a cualquier otro término. Por ejemplo, la palabra “paz” aparece vinculada a 78 palabras
#Ejemplo 1
red_ocurrencia = fcm(limpieza_texto)
print(red_ocurrencia)
## Feature co-occurrence matrix of: 371 by 371 features.
## features
## features presidente piñera seguro unidad chilenos vamos derrotar
## presidente 0 1 2 2 6 4 2
## piñera 0 0 1 1 3 2 1
## seguro 0 0 0 2 8 5 2
## unidad 0 0 0 0 6 4 2
## chilenos 0 0 0 0 7 14 6
## vamos 0 0 0 0 0 2 4
## derrotar 0 0 0 0 0 0 0
## violentistas 0 0 0 0 0 0 0
## recuperar 0 0 0 0 0 0 0
## país 0 0 0 0 0 0 0
## features
## features violentistas recuperar país
## presidente 2 2 4
## piñera 1 1 2
## seguro 3 2 4
## unidad 2 2 4
## chilenos 8 6 12
## vamos 7 4 10
## derrotar 2 2 4
## violentistas 1 2 8
## recuperar 0 0 4
## país 0 0 3
## [ reached max_feat ... 361 more features, reached max_nfeat ... 361 more features ]
# Ejemplo 2
red_ocurrencia = fcm(limpieza_texto, context = "window", tri = FALSE, count = "frequency")
print(red_ocurrencia)
## Feature co-occurrence matrix of: 371 by 371 features.
## features
## features presidente piñera seguro unidad chilenos vamos derrotar
## presidente 0 1 1 1 1 1 0
## piñera 1 0 1 1 1 1 1
## seguro 1 1 0 2 3 2 2
## unidad 1 1 2 0 2 4 2
## chilenos 1 1 3 2 2 4 2
## vamos 1 1 2 4 4 4 4
## derrotar 0 1 2 2 2 4 0
## violentistas 0 0 2 2 2 5 2
## recuperar 0 0 0 0 2 4 2
## país 0 0 0 0 0 6 2
## features
## features violentistas recuperar país
## presidente 0 0 0
## piñera 0 0 0
## seguro 2 0 0
## unidad 2 0 0
## chilenos 2 2 0
## vamos 5 4 6
## derrotar 2 2 2
## violentistas 0 2 6
## recuperar 2 0 4
## país 6 4 6
## [ reached max_feat ... 361 more features, reached max_nfeat ... 361 more features ]
#Ver frecuencias de relaciones de una palabra con otras
frecuencias <- rowSums(red_ocurrencia)
frecuencias <- sort(frecuencias, decreasing = TRUE)
head(frecuencias,20)
## compatriotas fuerzas paz chilenos libertad quiero
## 98 80 78 76 70 65
## país queremos región mañana vamos violentistas
## 60 60 60 60 58 50
## derecho aquellos armadas público día violencia
## 50 50 40 40 40 40
## delincuencia posible
## 40 40
Un segundo tipo de análisis es analizar las conexiones. Es decir, más que si una palabra aparece de una manera reiterada, es si cumple una función de vincular a otras palabras. Por ejemplo, la palbra “violentistas” aparece vinculada a 50 palabras, pero conecta otra 33 términos.
Para visualizar estos términos, se usa un gráfico de redes, como se ve en el ejemplo 1. Al enfocarnos en el ejemplo 2, ajustamos este número de vinculos y podemos ver ciertos patrones. Por ejemplo, el término “fuerzas” se estructura con “labor”,“orden”, pero sobre todo “armadas” (por la línea más gruesa).
#Numero de conexiones. Palabras que conectan a otras palabras
grado = colSums(red_ocurrencia > 0)
head(grado,20)
## presidente piñera seguro unidad chilenos vamos
## 11 6 16 7 55 30
## derrotar violentistas recuperar país paz libertad
## 9 33 8 21 53 49
## queremos oct jefe dio mensaje valorando
## 43 9 10 10 10 10
## trabajo bomberos
## 20 15
df_freq <- data.frame(palabra = names(frecuencias), frecuencia = frecuencias)
ggplot(df_freq[1:10,], aes(x = reorder(palabra, frecuencia), y = frecuencia)) +
geom_col(fill = "steelblue") +
coord_flip() +
labs(title = "Top 10 palabras más conectadas en la co-ocurrencia",
x = "Palabra", y = "Frecuencia")
#Número de conexiones y peso de aristas representadas en un gráfico de redes
textplot_network(red_ocurrencia, edge_color = "red")
## Warning: ggrepel: 340 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
#Gráfico de redes usando un filtro de palabras más recurrentes
textplot_network(red_ocurrencia, min_freq = 3, edge_color = "red")
Un segundo tipo de análisis que es posible realizar, es la co-ocurrencia de un término en específico que nos interese mostrar. Se analiza las palabras que se relacionan con “compatriotas”, seleccionando las diez prinicipales palabras que se vinculan con “compatriotas”. Las principales palabras son “paz”, “hoy” y “derecho”.
#Ver palabras relacionadas con un término especifico
#Extraer la fila como vector numérico, para poder contabilizar co-ocurrencias
vec <- as.numeric(red_ocurrencia["compatriotas",])
names(vec) <- colnames(red_ocurrencia)
# Ordenar por coocurrencia
sort(vec, decreasing = TRUE)[1:10]
## paz hoy derecho chilenos seguridad público
## 3 3 3 2 2 2
## quiero delincuencia tranquilidad tiempo
## 2 2 2 2
quanteda.textplots::textplot_network(
red_ocurrencia,
min_freq = 5,
omit_isolated = TRUE,
select = "compatriotas"
)
Finalmente, un tercer elemento es analizar cual es el contexto que rodeea a un determinado término. La opción “window”, indica la cantidad de palabras que rodean a un término tanto a su izquierda como a la derecha. La herramienta que se usa se denomina “Keyword in context”. En este ejemplo, vemos que en el caso del concepto “compatriotas”, en el tercer ejemplo, está relacionado con los conceptos “orden” “público”, entre otros, mientras que a su izquierda con términos como “hoy”, “dudas” o “ambiguedades”
kw1 = kwic(limpieza_texto, pattern="compatriotas", window=5)
print(kw1)
## Keyword-in-context with 10 matches.
## [text1, 39] público buenas noches quiero hablarles |
## [text2, 47] construido hoy tiempo ambigüedades llamo |
## [text2, 85] orden público seguridad tranquilidad paz |
## [text2, 117] ambigüedad contribuyendo paz tranquilidad seguridad |
## [text2, 153] verdaderos criminales entiendo perfectamente bien |
## [text2, 204] permitiendo solidaridad chilenos mañana pido |
## [text3, 73] críticos violentistas delincuentes atacando pido |
## [text3, 131] libertad derecho derecho vivir paz |
## [text3, 155] temor sé invade almas corazones |
## [text4, 50] oportunidad vida plena feliz agradezco |
##
## compatriotas | hoy día recogidos casas guerra
## compatriotas | unirnos lucha violencia delincuencia establecido
## compatriotas | hoy tiempo dudas ambigüedades tomar
## compatriotas | cierta forma facilitando camino aquellos
## compatriotas | derecho expresarse protestar incluso comprendemos
## compatriotas | ayuden dificultades transportarse
## compatriotas | unamos batalla podemos perder ayudemos
## compatriotas | aquellos pretenden vía delincuencia vandalismo
## compatriotas | quiero sepan gobierno comprometido resguardar
## compatriotas | créanme viendo ejemplo chilenos chilenas