1 Objetivo

Entender los diferentes léxicos usados por Comerciales, Expertos y Consumidores para sensaciones táctiles y de boca

lexico <- data.table::fread(here::here("data", "lexico.tsv"),
                            select = 1:4,
                            encoding = 'UTF-8')
data.table::setnames(lexico, 
         old = colnames(lexico),
         new = c("tipo", "id", "tactil", "boca"))

2 Preparar los datos

Un primer vistazo

2.1 Cambiamos el formato de la tabla

De ancho a largo

lexico_largo <- data.table::melt(lexico, 
                 id.vars = c("tipo", "id"),
                 variable.name = "sensacion",
                 value.name = "texto")

2.2 Pasamos el texto a minúsculas

lexico_largo[, texto := tolower(texto)]
lexico_largo[, tipo := tolower(tipo)]

2.3 Ajustamos tipos

Para una mejor representación gráfica

lexico_largo[, tipo := factor(tipo, levels = c("consumidores", "comercial", "experto"))]

2.4 Ajustamos errores gramaticales

lexico_largo[, texto:= stringr::str_replace_all(string = texto,
                pattern = "sensacion|sensaciones",
                replacement = "sensación")]

lexico_largo[, texto:= stringr::str_replace_all(string = texto,
                pattern = "sensaciónes",
                replacement = "sensación")]

lexico_largo[, texto:= stringr::str_replace_all(string = texto,
                pattern = "aspera",
                replacement = "aspero")]

2.5 Separamos las frases en palabras

Una palabra por fila

lexico_largo %>%
  unnest_tokens(output = palabra, input = texto) %>%
  count(tipo, sensacion, palabra, sort = TRUE) -> palabras

2.6 Eliminamos “stop words”

Quitamos palabras comunes que no aportan valor, por ejemplo: “y” o “la”

stop_words_espanolas <- rbind(data.frame(palabra = c("si", "mas", "nose"), stringsAsFactors = FALSE),
                               data.frame(palabra = tm::stopwords("spanish"), stringsAsFactors = FALSE))


palabras %>% 
  anti_join(stop_words_espanolas, by = "palabra") -> palabras

2.7 Resultado

palabras %>%
  paged_table(options = list(rows.print = 5))

3 Ánalisis del vocabulario

3.1 Calcular la frequencia de cada palabra

palabras_grupos <- palabras %>% 
  group_by(tipo, sensacion) %>% 
  summarize(total = sum(n))

palabras <- left_join(palabras, palabras_grupos, by = c("tipo","sensacion"))

palabras %>%
  paged_table(options = list(rows.print = 5))