Ejemplo de análisis de texto

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:

Frecuencia de palabras

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")

Análisis de co-ocurrencias

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"
)

Analizar palabras en contexto.

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