# Extracción de palabas clave

#### Agustín Nieto

#### 2026-05-13

## 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 720 notas y 9 variables: id, fecha, seccion, titulo, bajada, nota, nota_norm, link, clas_hum. 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)`.

    # 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

    #> # A tibble: 720 × 9
    #>       id fecha      seccion   titulo       bajada nota  nota_norm link  clas_hum
    #>    <dbl> <date>     <fct>     <chr>        <chr>  <chr> <chr>     <chr> <lgl>
    #>  1     1 2016-03-01 La Ciudad Emotivo: po… "Hace… "Los… "los dos… http… FALSE
    #>  2     2 2016-03-01 La Ciudad El oficiali… "En l… "La … "la decl… http… TRUE
    #>  3     3 2016-03-02 La Ciudad Rech tambié… "El r… "El … "el conc… http… TRUE
    #>  4     4 2016-03-02 La Ciudad Anuncian in… "El i… "El … "el inte… http… FALSE
    #>  5     5 2016-03-02 La Ciudad Video: la p… "El C… "De … "de mane… http… FALSE
    #>  6     6 2016-03-03 La Ciudad Nuevas inve… "Una … "Rep… "represe… http… FALSE
    #>  7     7 2016-03-03 La Ciudad Exigimos un… "Para… "En … "en el m… http… TRUE
    #>  8     8 2016-03-03 La Ciudad Hoy en Mar … "Clas… "Yog… "yoga y … http… TRUE
    #>  9     9 2016-03-06 La Ciudad El Colegio … "Será… "El … "el cons… http… FALSE
    #> 10    10 2016-03-06 La Ciudad La inseguri… "A pe… "Un … "un grup… http… TRUE
    #> # ℹ 710 more rows

## 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.

    # 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

    #> # A tibble: 720 × 12
    #>       id fecha      seccion   titulo       bajada nota  nota_norm link  clas_hum
    #>    <dbl> <date>     <fct>     <chr>        <chr>  <chr> <chr>     <chr> <lgl>
    #>  1     1 2016-03-01 La Ciudad Emotivo: po… "Hace… "Los… "los dos… http… FALSE
    #>  2     2 2016-03-01 La Ciudad El oficiali… "En l… "La … "la decl… http… TRUE
    #>  3     3 2016-03-02 La Ciudad Rech tambié… "El r… "El … "el conc… http… TRUE
    #>  4     4 2016-03-02 La Ciudad Anuncian in… "El i… "El … "el inte… http… FALSE
    #>  5     5 2016-03-02 La Ciudad Video: la p… "El C… "De … "de mane… http… FALSE
    #>  6     6 2016-03-03 La Ciudad Nuevas inve… "Una … "Rep… "represe… http… FALSE
    #>  7     7 2016-03-03 La Ciudad Exigimos un… "Para… "En … "en el m… http… TRUE
    #>  8     8 2016-03-03 La Ciudad Hoy en Mar … "Clas… "Yog… "yoga y … http… TRUE
    #>  9     9 2016-03-06 La Ciudad El Colegio … "Será… "El … "el cons… http… FALSE
    #> 10    10 2016-03-06 La Ciudad La inseguri… "A pe… "Un … "un grup… http… TRUE
    #> # ℹ 710 more rows
    #> # ℹ 3 more variables: frec_conflictos <int>, frec_huelgas <int>,
    #> #   frec_actores <int>

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.

    # 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

    #> # A tibble: 720 × 15
    #>       id fecha      seccion   titulo       bajada nota  nota_norm link  clas_hum
    #>    <dbl> <date>     <fct>     <chr>        <chr>  <chr> <chr>     <chr> <lgl>
    #>  1     1 2016-03-01 La Ciudad Emotivo: po… "Hace… "Los… "los dos… http… FALSE
    #>  2     2 2016-03-01 La Ciudad El oficiali… "En l… "La … "la decl… http… TRUE
    #>  3     3 2016-03-02 La Ciudad Rech tambié… "El r… "El … "el conc… http… TRUE
    #>  4     4 2016-03-02 La Ciudad Anuncian in… "El i… "El … "el inte… http… FALSE
    #>  5     5 2016-03-02 La Ciudad Video: la p… "El C… "De … "de mane… http… FALSE
    #>  6     6 2016-03-03 La Ciudad Nuevas inve… "Una … "Rep… "represe… http… FALSE
    #>  7     7 2016-03-03 La Ciudad Exigimos un… "Para… "En … "en el m… http… TRUE
    #>  8     8 2016-03-03 La Ciudad Hoy en Mar … "Clas… "Yog… "yoga y … http… TRUE
    #>  9     9 2016-03-06 La Ciudad El Colegio … "Será… "El … "el cons… http… FALSE
    #> 10    10 2016-03-06 La Ciudad La inseguri… "A pe… "Un … "un grup… http… TRUE
    #> # ℹ 710 more rows
    #> # ℹ 6 more variables: frec_conflictos <int>, frec_huelgas <int>,
    #> #   frec_actores <int>, extract_conflictos <chr>, extract_huelgas <chr>,
    #> #   extract_actores <chr>

## 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.

    # 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

    #> # A tibble: 84 × 3
    #>    extract_conflictos                            extract_huelgas extract_actores
    #>    <chr>                                         <chr>           <chr>
    #>  1 un paro; reclamo; protesta; reclamos          un paro         docentes; trab…
    #>  2 conflicto; un paro                            un paro         gobierno; gobi…
    #>  3 protestas; un paro; paro                      un paro         municipal; vec…
    #>  4 al paro; reclamos; conflictos; conflicto; co… al paro         sindicato; vec…
    #>  5 un paro                                       un paro         sindicato; gob…
    #>  6 el paro; movilización                         el paro         gobierno; gobi…
    #>  7 un paro; conciliación obligatoria; el paro; … un paro; conci… trabajadores; …
    #>  8 huelga; un paro; paro; paro; huelga; un paro… huelga; un par… docentes; sind…
    #>  9 un paro; un paro; paro                        un paro; un pa… municipales
    #> 10 un paro; reclamo; movilización; huelga; movi… un paro; huelg… sindicatos; go…
    #> # ℹ 74 more rows

## 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()`.