---
title: "Extracci\u00f3n de palabas clave"
date: "`r Sys.Date()`"
author: "Agust\u00edn Nieto"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{extraccion_palabras_clave}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---
  
```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = FALSE,
  comment = "#>"
)
```

## Introducción

En este artículo presentamos las utilidades de la función `acep_extract()` para la extracción de palabras clave en un corpus de notas sobre la conflictividad laboral en la industria pesquera argentina con un enfoque de diccionario.

## El corpus de notas

Para que este artículo pueda reconstruirse en CRAN sin depender de descargas externas, los ejemplos ejecutables usan `ACEP::acep_bases$lc_720`, una muestra incluida en el paquete. Se compone de `r nrow(ACEP::acep_bases$lc_720)` notas y `r length(ACEP::acep_bases$lc_720)` variables: `r paste0(names(ACEP::acep_bases$lc_720), collapse = ', ')`. En una sesión interactiva con conexión también se puede cargar el corpus completo de Revista Puerto con `acep_load_base(acep_bases$rp_mdp)`.

```{r setup, eval=require("tibble"), message=FALSE}
# Cargamos la librería ACEP
library(ACEP)

# Cargamos una muestra incluida en el paquete
rev_puerto <- acep_bases$lc_720

# Imprimimos la base en consola
rev_puerto
```

##  Los diccionarios

Una vez cargada la base de notas vamos a crear variables numéricas y una de carácter que contengan las frecuencias de palabras totales, la frecuencia de palabras de cada diccionario usado para cada una de las notas y las palabras clave mencionadas en cada nota. En esta parte del código haremos uso de las funciones `acep_count()` y `acep_extract()`. También crearemos diccionarios breves para identificar menciones a conflictos, huelgas y actores colectivos.

```{r diccionarios0, eval=require("tibble"), message=FALSE}
# Creamos el diccionario de palabras que refieren a huelgas
dicc_huelgas <- c("en paro", "al paro", "huelga", "huelguistas", "paro y movil",
                  "paro de actividades", "conciliación obligatoria", "un paro", 
                  "paro total", "paro parcial", "trabajo a reglamento", 
                  "el paro", "de brazos caídos")

# Cargamos el diccionario de palabras que refieren a conflictividad
dicc_conflictos_base <- c("conflicto", "conflictos", "protesta", "protestas",
                          "reclamo", "reclamos", "paro", "huelga",
                          "movilización", "manifestación")
dicc_conflictos <- unique(c(dicc_conflictos_base, dicc_huelgas))

# Creamos la variable con la frecuencia de palabras que refieren a conflictividad
rev_puerto$frec_conflictos <- acep_count(rev_puerto$nota, dicc_conflictos)

# Creamos la variable con la frecuencia de palabras que refieren a huelgas
rev_puerto$frec_huelgas <- acep_count(rev_puerto$nota, dicc_huelgas)

# Creamos el diccionario de palabras que refieren a actores colectivos
dicc_actores <- c("trabajadores", "docentes", "sindicato", "vecinos",
                  "municipal", "gobierno")

# Creamos la variable con la frecuencia de palabras que 
# refieren a actores colectivos
rev_puerto$frec_actores <- acep_count(rev_puerto$nota, dicc_actores)

# Imprimimos la base en consola
rev_puerto

```

Ahora vamos a usar la función `acep_extract()` para extraer las palabras clave de los diccionarios de conflictividad, huelgas y actores colectivos que aparecen en cada una de las notas de la muestra.

```{r diccionarios1, eval=require("tibble")}

# Creamos la variable con las palabras que refieren a conflictividad
rev_puerto$extract_conflictos <- acep_extract(rev_puerto$nota, dicc_conflictos, izq = "")

# Creamos la variable con las palabras que refieren a huelgas
rev_puerto$extract_huelgas <- acep_extract(rev_puerto$nota, dicc_huelgas)

# Creamos la variable con las palabras que 
# refieren a actores colectivos
rev_puerto$extract_actores <- acep_extract(rev_puerto$nota, dicc_actores)

# Imprimimos la base en consola
rev_puerto

```

## Las palabras clave extraídas

Ya construidas las variables nos ocuparemos de poner el foco en el rendimiento de la función `acep_extract()`. Seleccionaremos las columnas referidas a las extracciones de conflictos y huelgas. Veamos.

```{r ratio, eval=require("tibble"), message=FALSE}
# Seleccionamos las variables de extracción de palabras clave
rev_puerto_huelgas <- rev_puerto[rev_puerto$extract_huelgas != "",]
rev_puerto_actores <- rev_puerto_huelgas[rev_puerto_huelgas$extract_actores != "",]
rev_puerto_seleccion <- rev_puerto_actores[ , c('extract_conflictos', 'extract_huelgas', 'extract_actores')]

# Imprimimos la base en consola
rev_puerto_seleccion

```


## Nota final

A lo largo de este breve tutorial sobre la función `acep_extract()` del paquete ACEP buscamos ejemplificar de qué modo puede ser usada esta función para individualizar cada una de las palabras clave que fueron contabilizadas en las notas con la función `acep_count()`.
