Comandos de voz en StarTrek | Macarena Quiroga

Comandos de voz en StarTrek

¡Dos semanas al hilo! ¡Bien por mí! Decidí que voy a intentar participar todas las semanas del #TidyTuesday, aunque sea un solo gráfico sencillo. Lo importante es sostener la práctica y, además, intentar elegir al menos un área que explorar en cada caso.

(Para quienes no sepan: #TidyTuesday es un proyecto colaborativo que consiste en trabajar cada semana con un set de datos reales para practicar visualización y otras habilidades del mundo de la ciencia de datos. Pueden encontrar más información en su repositorio de GitHub y bajo el hashtag en twitter.)

El dataset de esta semana está compuesto por los comandos de voz que utilizan los distintos personajes de StarTrek. Entiendo que debe haber sido una gran oportunidad para quienes trabajan con análisis de texto; yo, irónicamente, no tengo idea de eso, aunque me interesa. Y encima no vi StarTrek, así que tampoco tuve demasiados conocimientos previos como para saber cómo sacarle jugo a este dataset.

Por lo tanto, para ser fiel a mi objetivo, decidí hacer un gráfico simple: contar cuántos enunciados se emitieron, organizarlos por tipo de enunciado y dividirlo según el tipo de personaje que lo enunció (persona o computadora). A partir de eso, pensé qué modificaciones visuales podía incorporar. Entender bien cómo funciona theme() siempre fue un desafío; en general, intento elegir un theme que me gusta y quedarme con él, porque no tengo muchas habilidades visuales.

Entonces, ¿qué aprendí esta semana?

  • Hice un lollipop chart; si bien ya los había usado anteriormente, esta vez me dediqué a leer un poco más sobre ellos. Aprendí que algunas personas consideran que el incremento en el atractivo visual del gráfico disminuye su precisión (porque el círculo de la punta es más impreciso que la línea recta de una barra).

  • Modifiqué muchos componentes del tema: aprendí que una cosa es el color del fondo del gráfico y otro el fondo de toda la imagen. Cambié la tipografía y el tamaño de fuente de todo el gráfico; reforcé el funcionamiento de las etiquetas en gráficos faceteados.

  • Aprendí la función tidytext::reorder_within(), que originalmente surgió de este blogpost de Tyler Rinker y luego incorporada al paquete tidytext (en este post de Julia Silge se explica con más detalle el proceso). Pero como con un gran poder viene una gran responsabilidad, esta función me duplicó las etiquetas de los factores (vaya une a saber por qué), así que tuve que modificarlas… a mano. En fin.

El código

library(tidyverse)
library(tidytext)
library(ggthemes)

tuesdata <- tidytuesdayR::tt_load(2021, week = 34)
## 
##  Downloading file 1 of 1: `computer.csv`
computer <- tuesdata$computer

computer <- computer %>% 
  mutate_all(.funs = tolower) %>%  # para unificar filas
  mutate_if(is.character, as.factor)

computer$char_type <- factor(computer$char_type, levels = c("computer", "person"), 
                             labels = c("Computadora", "Persona")) # ordena

computer %>% 
  group_by(char_type, type) %>% 
  summarise(count = n()) %>%  # cantidad de comandos
  mutate(type = reorder_within(type, count, char_type)) %>% # ordenados por cantidad
  ggplot(aes(x=reorder(type, count), y = count))+
  geom_point(color = "red")+
  geom_segment(aes(x=reorder(type, count), xend =type, y=0, yend=count, color = "red"))+
  facet_wrap(~char_type, 
             scales = "free", # para que no haya espacios vacíos entre las facetas
             labeller = labeller( # título del facet
               Computadora = computer,
               Persona = person))+
  coord_flip()+
  scale_y_reordered()+ # reordena los elementos dentro del facet
  scale_x_discrete(labels = c("response___Computadora" = "Respuesta",
                              "alert___Computadora" = "Alerta",
                              "info___Computadora" = "Información",
                              "countdown___Computadora" = "Cuenta Regresiva",
                              "clarification___Computadora" = "Clarificación",
                              "progress___Computadora" = "Progreso",
                              "conversation___Computadora" = "Conversación",
                              "command___Persona" = "Orden",
                              "wake word___Persona" = "Palabra Raíz",
                              "statement___Persona" = "Declaración",
                              "question___Persona" = "Pregunta",
                              "conversation___Persona" = "Conversación",
                              "password___Persona" = "Contraseña",
                              "comment___Persona" = "Comentario"))+
  theme_few()+
  theme(plot.background = element_rect(fill = "black"), # fondo de la imagen
        panel.background = element_rect(fill = "black"), # fondo del gráfico
        axis.text = element_text(color = "white", size = 12), # texto de los ejes
        plot.title = element_text(color = "white", 
                                  size = 20, 
                                  hjust = 5.5), # título del gráfico
        plot.caption = element_text(color = "white"), # fuente
        legend.position = "none", # quito el cuadro de referencias
        text = element_text(family = "Kefa"), # tipografía de todo el gráfico
        panel.grid.major.x = element_line(size = 4), # achica el espacio entre ticks
        strip.text = element_text(size = 12) # tamaño de título de facet
  )+
  labs(x = "", y = "",
       title = "¿Qué tipo de enunciados genera cada uno?",
       caption = "Fuente: Speech Interactions | http://www.speechinteraction.org/TNG/ | @_msquiroga"
    )

¡Espero que les sirva!

Macarena Quiroga
Macarena Quiroga
Lingüista/Becaria doctoral

Investigo la adquisición del lenguaje. Estudio estadística y ciencia de datos con R/Rstudio. Si te gusta lo que hago, podés invitarme un cafecito desde Argentina, o un kofi desde otros países. Suscribite a mi blog aquí.

Relacionado