El presente documento tiene como objetivo analizar a través de un conteo de palabras y análisis de frecuencia las charlas.
Para este caso se hace el análisis de la charla “política e inteligencia artificial” impartida por Cristina Martínez y Fernando baños el 27 de octubre de 2020
Esquema del lenguaje natural
“Esquema del lenguaje natural”
Principales ecuaciones utilizadas
Si quisieramos poner una ecuación en texto sería esta forma \(E=mc^2\)
Paquetes
library(pacman)
p_load("dplyr", "stringr", "ggplot2", "wordcloud","rmdformats","vembedr", "xfun")
Video de youtube de la charla:
embed_url("https://youtu.be/5PLw3Macsxs")
Funciones
FreqCategory <- function(value) {
strCategory <- ifelse(value <=5, " 5",
ifelse(value <=10, " 10",
ifelse(value <=20, " 20",
ifelse(value <=50, " 50",
ifelse(value <=100, " 100",
ifelse(value <=500, " 500",
ifelse(value <=1000, " 1,000",
">1,000")))))))
strCategory
}
Datos
setwd("~/ea1130")
politica <- readLines("politica.txt")
head(politica)
## [1] "también se está comenzando transmisiones"
## [2] ""
## [3] "en facebook live y todos ustedes"
## [4] ""
## [5] "bienvenidos"
## [6] ""
Conteo de lineas
# Longitud de vector
intLineCount <- length(politica)
intLineCount
## [1] 3182
Conteo de palabras por linea
# separar
lstUNPrfLines <- str_split(politica," ")
# palabras por linea
vciUNPrfWperL <- unlist(lapply(lstUNPrfLines, length))
# imprimir media de palabras por linea
mean(vciUNPrfWperL)
## [1] 3.495915
conteo total de palabras
# deslistar para obtener un vector de palabras
vcsUNPrfWords <- unlist(lstUNPrfLines)
# recuento total de palabras = longitud del vector
intWordCount <- length(vcsUNPrfWords)
# imprimir
intWordCount
## [1] 11124
Mostrar palabras
head(vcsUNPrfWords,100)
## [1] "también" "se" "está" "comenzando"
## [5] "transmisiones" "" "en" "facebook"
## [9] "live" "y" "todos" "ustedes"
## [13] "" "bienvenidos" "" "muy"
## [17] "buenas" "tardes" "a" "todos"
## [21] "sean" "" "bienvenidos" "en"
## [25] "dos" "momentos" "iniciamos" ""
## [29] "pues" "de" "nuevo" "buenas"
## [33] "tardes" "a" "todos" "y"
## [37] "" "todas" "en" "mi"
## [41] "nombre" "es" "lulú" "velasco"
## [45] "y" "" "formó" "parte"
## [49] "del" "equipo" "del" "instituto"
## [53] "de" "" "emprendimiento" "del"
## [57] "tec" "de" "monterrey" ""
## [61] "región" "occidente" "muchas" "gracias"
## [65] "por" "" "acompañarnos" "en"
## [69] "esta" "serie" "donde" "vamos"
## [73] "a" "" "platicar" "sobre"
## [77] "inteligencia" "artificial" "" "y"
## [81] "bueno" "antes" "de" "dar"
## [85] "inicio" "les" "comparto" ""
## [89] "que" "al" "finalizar" "la"
## [93] "sesión" "tendremos" "" "algunos"
## [97] "minutos" "de" "preguntas" "y"
limpieza de palabras
# lower case
vcsUNPrfWords <- str_to_lower(vcsUNPrfWords)
# remove numbers
vcsUNPrfWords <- str_replace_all(vcsUNPrfWords, pattern="[[:digit:]]", "")
# remove punctuation
vcsUNPrfWords <- str_replace_all(vcsUNPrfWords, pattern="[[:punct:]]", "")
# remove white spaces
vcsUNPrfWords <- str_replace_all(vcsUNPrfWords, pattern="[[:space:]]", "")
# remove special chars
vcsUNPrfWords <- str_replace_all(vcsUNPrfWords, pattern="[~@#$%&-_=<>]", "")
# remove empty vectors
vcsUNPrfWords <- vcsUNPrfWords[vcsUNPrfWords != ""]
# hack & remove $
vcsUNPrfWords <- str_replace_all(vcsUNPrfWords, pattern="$", "")
# head
head(vcsUNPrfWords,100)
## [1] "tambiã©n" "se" "estã" "comenzando"
## [5] "transmisiones" "en" "facebook" "live"
## [9] "y" "todos" "ustedes" "bienvenidos"
## [13] "muy" "buenas" "tardes" "a"
## [17] "todos" "sean" "bienvenidos" "en"
## [21] "dos" "momentos" "iniciamos" "pues"
## [25] "de" "nuevo" "buenas" "tardes"
## [29] "a" "todos" "y" "todas"
## [33] "en" "mi" "nombre" "es"
## [37] "lulãº" "velasco" "y" "formã³"
## [41] "parte" "del" "equipo" "del"
## [45] "instituto" "de" "emprendimiento" "del"
## [49] "tec" "de" "monterrey" "regiã³n"
## [53] "occidente" "muchas" "gracias" "por"
## [57] "acompaã±arnos" "en" "esta" "serie"
## [61] "donde" "vamos" "a" "platicar"
## [65] "sobre" "inteligencia" "artificial" "y"
## [69] "bueno" "antes" "de" "dar"
## [73] "inicio" "les" "comparto" "que"
## [77] "al" "finalizar" "la" "sesiã³n"
## [81] "tendremos" "algunos" "minutos" "de"
## [85] "preguntas" "y" "respuestas" "que"
## [89] "podrãn" "compartir" "con" "nuestros"
## [93] "panelistas" "y" "posterior" "a"
## [97] "ellos" "serãn" "dirigidos" "a"
Data frame de palabras normales
# make data frame
dfrUNPrfWords <- data.frame(vcsUNPrfWords)
colnames(dfrUNPrfWords) <- c("Words")
dfrUNPrfWords$Words <- as.character(dfrUNPrfWords$Words)
# normal word count
head(dfrUNPrfWords,10)
## Words
## 1 tambiã©n
## 2 se
## 3 estã
## 4 comenzando
## 5 transmisiones
## 6 en
## 7 facebook
## 8 live
## 9 y
## 10 todos
Conteo de palabras normales
# resumiendo los datos
dfrUNPrfFreq <- dfrUNPrfWords %>%
group_by(Words) %>%
summarise(Freq=n()) %>%
arrange(desc(Freq))
head(dfrUNPrfFreq)
## # A tibble: 6 x 2
## Words Freq
## <chr> <int>
## 1 de 554
## 2 que 545
## 3 en 289
## 4 y 261
## 5 la 227
## 6 a 179
Nube de palabras normales
# nube de palabras
wordcloud(dfrUNPrfFreq$Words[1:100], dfrUNPrfFreq$Freq[1:100], random.order=F, max.words=100, colors=brewer.pal(8, "Dark2"))
## Descargas