Tokenizar con ACEP
Diego Pacheco
2022-11-29
Source:vignettes/tokenizar_con_acep.Rmd
tokenizar_con_acep.Rmd
Funciones a presentar:
En este artículo se explicarán los procesos que realizan las funciones:
acep_token()
acep_token_table()
acep_token_plot()
Función acep_token()
En primer lugar cargamos la librería ACEP. Luego, cargamos una base de tweets para su prueba.
library(ACEP)
url <- "https://observatoriodeconflictividad.org/basesdatos/la_fraternidad.rds"
base <- acep_load_base(url)[ , c("text")]$text
Ejecutamos la función acep_token() para los primeros dos elementos de la base.
¿Cuál es el resultado?
La función acep_token toma el vector y realiza diferentes acciones:
Verifica que el objeto entregado sea un vector (de lo contrario indica un mensaje de advertencia)
Cambia todo el texto a minúsculas
-
Crea un nuevo data frame con la siguiente información:
id_doc (columna que numera el documento)
texto (vector original)
id_token (numeración de cada uno de los tokens obtenidos)
id_token_doc (numeración del token por vector)
token (el token propiamente)
Cabe mencionar que los tokens quedarán identificados a través de los espacios en blanco, es decir, cada palabra es un token.
tweets <- acep_token(base[1:2])
tweets |> head()
#> id_doc
#> 1 1
#> 2 1
#> 3 1
#> 4 1
#> 5 2
#> 6 2
#> texto
#> 1 @LuisGasulla Googlea La Fraternidad
#> 2 @LuisGasulla Googlea La Fraternidad
#> 3 @LuisGasulla Googlea La Fraternidad
#> 4 @LuisGasulla Googlea La Fraternidad
#> 5 👉PROTESTA/La Fraternidad desoye conciliación obligatoria y mantiene paralizados los trenes\nhttps://t.co/644Ak0HZ7I
#> 6 👉PROTESTA/La Fraternidad desoye conciliación obligatoria y mantiene paralizados los trenes\nhttps://t.co/644Ak0HZ7I
#> id_token id_token_doc token
#> 1 1 1 @luisgasulla
#> 2 2 2 googlea
#> 3 3 3 la
#> 4 4 4 fraternidad
#> 5 5 1 👉protesta/la
#> 6 6 2 fraternidad
En este resultado podemos ver cómo la función identifica a cada observación como un documento aparte (en este caso, cada tweet es un documento identificado en la columna id_doc). La numeración del id_token continúa de principio a fin mientras que la numeración del id_token_doc se reinicia cada vez que empieza un nuevo documento. La columna texto presenta el documento completo original y por último podemos visualizar la columna token en la que la función aísla cada token.
Función acep_token_table()
Una vez que tenemos el data frame creado a partir de la función acep_token(), podemos utilizar la función acep_table() para obtener un nuevo data frame que nos proveerá la siguiente información:
token
frec (frecuencia que aparece ese token)
prop (el peso que tiene ese token en el total del corpus)
Para obtener una tabla que tenga sentido, podemos utilizar en primer lugar la función acep_clean() para deshacernos de los stop words, urls, menciones, # etc.
base_limpia <- acep_clean(base)
En segunda instancia, creamos un nuevo objeto derivado de la base limpia con acep_token() que nos devuelve, como vimos previamente, una tabla con la información de cada token.
tabla_tokenizada <- acep_token(base_limpia)
head(tabla_tokenizada)
#> id_doc
#> 1 1
#> 2 1
#> 3 2
#> 4 2
#> 5 2
#> 6 2
#> texto
#> 1 googlea fraternidad
#> 2 googlea fraternidad
#> 3 protesta fraternidad desoye conciliacion obligatoria mantiene paralizados trenes
#> 4 protesta fraternidad desoye conciliacion obligatoria mantiene paralizados trenes
#> 5 protesta fraternidad desoye conciliacion obligatoria mantiene paralizados trenes
#> 6 protesta fraternidad desoye conciliacion obligatoria mantiene paralizados trenes
#> id_token id_token_doc token
#> 1 1 1 googlea
#> 2 2 2 fraternidad
#> 3 3 1 protesta
#> 4 4 2 fraternidad
#> 5 5 3 desoye
#> 6 6 4 conciliacion
Por último, aplicamos la función acep_token_table() a la columna token.
Por defecto, acep_token_table() nos devuelve los 10 primeros registros, es decir, las 10 palabras con mayor frecuencia.
Si quisiéramos modificar la cantidad de palabras, debemos modificar el parámetro u =
Suponiendo que queremos obtener los 20 token de mayor frecuencia:
Ejemplo: acep_token_table(tabla_tokenizada$token, u = 20)
acep_token_table(tabla_tokenizada$token)
#> token frec prop
#> 1 fraternidad 5470 0.26719422
#> 2 aprista 1859 0.09080696
#> 3 peru 1742 0.08509183
#> 4 indoamerica 1689 0.08250293
#> 5 eudoro 1648 0.08050020
#> 6 terrones 1648 0.08050020
#> 7 gracias 1614 0.07883939
#> 8 nuevo 1609 0.07859515
#> 9 dr 1598 0.07805784
#> 10 negrete 1595 0.07791129
Función acep_token_plot()
Esta función permite visualizar en un gráfico de barras, los tokens más frecuentes.
A partir del resultado de acep_token(), podemos obtener el gráfico con los tokens más frecuentes.
Por defecto, el resultado serán los 10 tokens más frecuentes, sin embargo, a través del parámetro “u =” podemos modificar la cantidad de tokens a visualizar.
En este ejemplo, tomamos la tabla tokenizada y le indicamos la columna “token” a visualizar.
acep_token_plot(tabla_tokenizada$token, u =15)