-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathREADME.Rmd
225 lines (161 loc) · 11.8 KB
/
README.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
---
output: github_document
---
<!-- README.md is generated from README.Rmd. Please edit that file -->
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = FALSE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```
# ACEP: Análisis Computacional de Eventos de Protesta<img src="man/figures/logo.svg" align="right" height="139"/>
<!-- badges: start -->
[![Codecov test coverage](https://codecov.io/gh/agusnieto77/ACEP/branch/master/graph/badge.svg)](https://app.codecov.io/gh/agusnieto77/ACEP?branch=master)
[![R-CMD-check](https://github.com/agusnieto77/ACEP/workflows/R-CMD-check/badge.svg)](https://github.com/agusnieto77/ACEP/actions)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6800706.svg)](https://doi.org/10.5281/zenodo.6800706)
[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)
[![](https://www.r-pkg.org/badges/version/ACEP)](https://cran.r-project.org/package=ACEP)
[![](https://img.shields.io/badge/devel%20version-0.0.3.9005-blue.svg)](https://github.com/agusnieto77/ACEP)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://cran.r-project.org/web/licenses/MIT)
[![](https://img.shields.io/github/languages/code-size/agusnieto77/ACEP.svg)](https://github.com/agusnieto77/ACEP)
[![](https://img.shields.io/badge/lifecycle-stable-brightgreen.svg)](https://lifecycle.r-lib.org/articles/stages.html#stable)
[![](https://img.shields.io/badge/Build%20with-R%20&%20RStudio-blue?style=plastic=appveyor)](https://github.com/agusnieto77/ACEP)
[![](https://img.shields.io/badge/ACEP-ready%20to%20use-color:%20#39c?style=plastic=appveyor)](https://github.com/agusnieto77/ACEP)
[![](https://img.shields.io/badge/Developed%20by-SISMOS-darkred?style=plastic=appveyor)](https://observatoriodeconflictividad.org/el-pulso-de-la-conflictividad-en-tiempo-real/)
[![](http://cranlogs.r-pkg.org/badges/grand-total/ACEP)](https://cran.r-project.org/package=ACEP)
[![](http://cranlogs.r-pkg.org/badges/last-month/ACEP)](https://cran.r-project.org/package=ACEP)
<!-- badges: end -->
### Vision general
ACEP es un paquete de funciones en lenguaje R útiles para la detección y el análisis de eventos de protesta en corpus de textos periodísticos. Sus funciones son aplicables a cualquier corpus de textos. Ademas de las funciones, ACEP contiene también bases de datos con colecciones de notas sobre protestas y una colección de diccionarios de palabras conflictivas y otros tópicos referidos a diferentes aspectos del análisis de eventos de protesta.
### Instalacion de la version estable
Puedes instalar la versión estable de ACEP desde [CRAN](https://CRAN.R-project.org/package=ACEP) con:
``` r
install.packages("ACEP")
```
### Instalacion de la version en desarrollo
Puedes instalar la versión de desarrollo de ACEP desde [GitHub](https://github.com/agusnieto77/ACEP) con:
``` r
# install.packages("devtools")
devtools::install_github("agusnieto77/ACEP")
```
### Funciones
| Nombre | Ciclo | Descripción |
|:--|:--|:-----|
|`acep_clean()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-deprecated.svg)|Limpieza de texto.|
|`acep_cleaning()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)|Limpieza de texto.|
|`acep_context()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)|Función para extraer contexto de palabras o frases.|
|`acep_count()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-stable.svg)|Frecuencia de menciones de palabras.|
|`acep_db()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-stable.svg)|Frecuencia, menciones e intensidad.|
|`acep_detect()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-stable.svg)|Detección de menciones de palabras.|
|`acep_extract()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)|Extraer palabras de un texto.|
|`acep_frec()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-stable.svg)|Frecuencia de palabras totales.|
|`acep_gpt()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)|Función para interactuar con los modelos de OpenAI.|
|`acep_int()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-stable.svg)|Índice de intensidad.|
|`acep_load_base()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-stable.svg)|Carga bases de datos creadas por el Observatorio.|
|`acep_may()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)|Convierte el texto mayúsculas|
|`acep_men()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-deprecated.svg)|Frecuencia de menciones de palabras.|
|`acep_min()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)|Convierte el texto minúsculas.|
|`acep_plot_rst()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-stable.svg)|Resumen visual de la serie temporal de los índices de conflictividad.|
|`acep_plot_st()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-stable.svg)|Gráfico de barras de la serie temporal de índices de conflictividad.|
|`acep_postag()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)|Función para etiquetado POS, lematización, tokenización, extracción de entidades.|
|`acep_rst()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-deprecated.svg)|Serie temporal de índices de conflictividad.|
|`acep_sst()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-stable.svg)|Serie temporal de índices de conflictividad.|
|`acep_svo()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)|Función para extraer tripletes SVO (Sujeto-Verbo-Objeto).|
|`acep_token()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)|Función para tokenizar.|
|`acep_token_plot()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)|Gráfico de barras de palabras más recurrentes en un corpus.|
|`acep_token_table()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)|Tabla de frecuencia de palabras tokenizadas.|
|`acep_upos()`|![](https://lifecycle.r-lib.org/articles/figures/lifecycle-experimental.svg)|Función para etiquetado POS, lematización, tokenización.|
### Colecciones
| Nombre | Descripción |
|:---|:------|
|`acep_bases`|Colección de notas.|
|`acep_diccionarios`|Colección de diccionarios.|
|`acep_prompt_gpt`|Colección de instrucciones.|
|`acep_rs`|Cadenas de caracteres para limpiar y normalizar textos.|
### Corpus
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6800663.svg)](https://doi.org/10.5281/zenodo.6800663) Colección de notas del diario ***La Nación***
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6800765.svg)](https://doi.org/10.5281/zenodo.6800765) Subset de notas del diario ***La Nación***
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6800617.svg)](https://doi.org/10.5281/zenodo.6800617) Colección de notas del ***Ecos Diarios***
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6800637.svg)](https://doi.org/10.5281/zenodo.6800637) Colección de notas de la ***Revista Puerto***
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6800650.svg)](https://doi.org/10.5281/zenodo.6800650) Colección de notas del diario ***La Nueva***
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6800660.svg)](https://doi.org/10.5281/zenodo.6800660) Colección de notas del diario ***La Capital***
### Bases de datos de Eventos de protesta disponibles online
[ACLED](https://acleddata.com/#/dashboard): Armed Conflict Location & Event Data Project.
[GDELT](https://www.gdeltproject.org/): The GDELT Project About.
[GPT](https://carnegieendowment.org/publications/interactive/protest-tracker#): Global Protest Tracker.
[MMPD](https://dataverse.harvard.edu/dataverse/MMdata): Mass Mobilization Protest Data Project.
[NAVCO](https://dataverse.harvard.edu/dataverse/navco): Nonviolent and Violent Campaigns and Outcomes data project.
[NVCO](https://nvdatabase.swarthmore.edu/): Global Nonviolent Action Database.
[SCAD](https://www.strausscenter.org/ccaps-research-areas/social-conflict/database/): Social Conflict Analysis Database.
[SPEED](https://clinecenter.illinois.edu/project/human-loop-event-data-projects/SPEED): The Social, Political and Economic Event Database Project.
[UCDP](https://www.pcr.uu.se/research/ucdp/): Uppsala Conflict Data Program.
### Bases de datos de interes general
[FMI](https://data.imf.org/?sk=388dfa60-1d26-4ade-b505-a05a558d9a42): FMI Data.
[BM](https://datos.bancomundial.org/): Datos de libre acceso del Banco Mundial.
[OIT](https://www.ilo.org/global/statistics-and-databases/lang--es/index.htm): Estadísticas y bases de datos.
[CEPAL](https://www.cepal.org/es/datos-y-estadisticas): Datos y estadísticas.
[DARG](https://www.datos.gob.ar/): Datos abiertos de Argentina.
[MGP](https://datos.mardelplata.gob.ar/): Datos abiertos del Municipio de Gral. Pueyrredon, Buenos Aires, Argentina.
### Uso de las funciones del paquete ACEP: un ejemplo.
```{r ejemplo1, eval=require("tibble"), message=FALSE, warning=FALSE}
# Cargamos la librería
require(ACEP)
# Cargamos la base de notas de la Revista Puerto con la función acep_load_base()
rev_puerto <- acep_load_base(acep_bases$rp_mdp)
# Cargamos el diccionario de conflictos de SISMOS
dicc_confl_sismos <- acep_diccionarios$dicc_confl_sismos
# Con la función acep_frec() contamos la frecuencia de palabras de cada nota
# y creamos una nueva columna llamada n_palabras
rev_puerto$n_palabras <- acep_frec(rev_puerto$nota)
# Imprimimos en pantalla la base con la nueva columna de frecuencia de palabras
head(rev_puerto)
# Ahora con la función acep_count() contamos la frecuencia de menciones de
# términos del diccionario de conflictividad de SISMOS de cada nota y
# creamos una nueva columna llamada conflictos.
# Elaboramos un corpus acotado para el ejemplo
rev_puerto <- rev_puerto[1:100, ]
rev_puerto$conflictos <- acep_count(rev_puerto$nota, dicc_confl_sismos)
# Imprimimos en pantalla la base con la nueva columna de
# menciones del diccionario de conflictividad
head(rev_puerto)
# Ahora con la función acep_int() calculamos un índice de intensidad de
# la conflictividad y creamos una nueva columna llamada intensidad
rev_puerto$intensidad <- acep_int(
rev_puerto$conflictos,
rev_puerto$n_palabras,
3)
# Imprimimos en pantalla la base con la nueva columna de intensidad
head(rev_puerto)
```
```{r ejemplo2, eval=require("tibble"), message=FALSE, warning=FALSE}
# Volvemos a cargar la base de notas de la Revista Puerto sin procesar
rev_puerto <- acep_load_base(acep_bases$rp_mdp)
# Creamos un subset
subset_rp <- rev_puerto[1:100, ]
# Cargamos el diccionario de conflictos de SISMOS
dicc_confl_sismos <- acep_diccionarios$dicc_confl_sismos
# Ahora con la función acep_db() aplicamos las tres funciones en un solo paso
rp_procesada <- acep_db(subset_rp, subset_rp$nota, dicc_confl_sismos, 3)
# Imprimimos en pantalla la base con las tres columna creadas
head(rp_procesada)
```
```{r ejemplo3, eval=require("tibble"), message=FALSE, warning=FALSE}
# Cargamos los datos procesados
rp_procesada <- acep_bases$rp_procesada
# Ahora con la función acep_sst() elaboramos un resumen estadístico
rp_procesada <- acep_sst(rp_procesada, st = "anio", u = 4)
# Imprimimos en pantalla la base con las métricas de conflictividad
head(rp_procesada)
# Ahora con la función acep_plot_st() elaboramos un gráfico de barras
# con menciones del diccionario de conflictividad
acep_plot_st(rp_procesada$st, rp_procesada$frecm,
t = "Evolucion de la conflictividad en el sector pesquero argentino",
ejex = "A\u00f1os analizados",
ejey = "Menciones del diccionario de conflictos",
etiquetax = "horizontal")
# Ahora con la función acep_plot_rst() elaboramos una visualización resumen.
# con cuatro gráficos de barras
acep_plot_rst(rp_procesada, tagx = "vertical")
```