Librerias a utilizar en el trabajo
library(tm)
library(SnowballC)
library(gridExtra)
library(wordcloud)
library(RColorBrewer)
library(wordcloud2)
library(ggplot2)
library(dplyr)
library(tidyr)
Para la Noticia 1 que habla sobre “Las graves consecuencias de la guerra en Gaza para la economía de Israel”. Primero debemos organizar nuestro texto.
Leémos el archivo del texto para la Noticia 1
noticia <- readLines("C:/Users/USUARIO/Downloads/TALLER 5 BUSINESS/noticia_1.txt", encoding = "UTF-8")
noticia1 <- Corpus(VectorSource(noticia))
Procesamiento del texto
noticia1 <- tm_map(noticia1, content_transformer(tolower))
noticia1 <- tm_map(noticia1, removePunctuation)
noticia1 <- tm_map(noticia1, removeNumbers)
noticia1 <- tm_map(noticia1, removeWords, stopwords("spanish"))
noticia1 <- tm_map(noticia1, stripWhitespace)
noticia1 <- tm_map(noticia1, stemDocument)
Luego creamos la matríz de términos del documento
tdm <- TermDocumentMatrix(noticia1)
Exploramos nuestros datos y visualizamos las palabras más frecuentes de la noticia
m <- as.matrix(tdm)
word_freqs <- sort(rowSums(m), decreasing = TRUE)
dm <- data.frame(word = names(word_freqs), freq = word_freqs)
head(dm)
Hacemos nuestro WordCloud
wordcloud(words = dm$word, freq = dm$freq, min.freq = 1,
max.words=70, random.order=FALSE,
colors=brewer.pal(8, "Dark2"), rot.per=0.35)
Ahora procedemos hacer nuestras gráficas normales con su respectivo análisis.
p1 <- ggplot(data = dm, aes(x= freq)) +
geom_histogram(binwidth = 1, col = "blue", fill = "blue") +
xlab("Frecuencia de aparición") + ylab("Número de palabras") +
ggtitle("Distribución de palabras no vacías en la Noticia 1")
print(p1)
De acuerdo con el histograma anterior acerca de la noticia de las graves consecuencias de la guerra en Gaza para la economía de Israel,se puede apreciar existe por lo menos una aparición en las palabras que demuestran ser relevantes o “no vacías” en el discurso, alcanzando un número de palabras de aproximadamente 350. Además, su frecuencia de aparición con mayores datos está en el intervalo de 2 a 5. Se puede decir que se presenta una frecuencia de hasta 20 datos, pero entre ellos, es decir de 10 a 15 y de 15 a 20, hay espacio entre ellos demostrando que la mayoría de las palabras tienen una presencia más limitada.
p2 <- ggplot(data = dm[1:20, ], aes(x= reorder(word, -freq), y = freq)) +
geom_point(col = "blue") +
xlab("Palabra") + ylab("Frecuencia de aparición") +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
ggtitle("20 palabras con mayor número de apariciones en la Noticia 1")
print(p2)
Según el gráfico de dispersión, se puede resaltar que de las 20 palabras con mayor frecuencia de aparición en la noticia 1, son “Guerra” e “Israel”con 20 apariciones seguidas de las palabras desde PAÍS al PIB las cuales en general se observa que muchas tienen la misma frecuencia. Por otro lado, de las 20, las palabra “estadística, febrero y oficina” son las que presentan una menor frecuencia en la noticia. Además, se puede observar que mucho más de la mitad de las palabras poseen una frecuencia de aparición menor a 9 repeticiones. Con esto podemos decir que las palabras clave, las que tienen la mayor frecuencia ofrecen una visión directa de los principales temas discutidos en el texto.
p3 <- ggplot(data = dm[1:20, ], aes(x= word, y= freq)) +
geom_bar(stat = "identity", color = "blue", fill = "blue") +
geom_text(aes(label = freq, vjust = -0.3), col = "black") +
coord_flip() +
labs(title = "20 palabras con mayor número de apariciones", x = "Palabras", y = "Frecuencia de aparición")
print(p3)
Como se puede corroborar en el gráfico de dispersión, este también muestra los mismos resultados de los cuales se pueden destacar las palabras “Guerra” e “Israel” con la mayor frecuencia de apariciones, y las palabras “estadística, febrero y oficina” con la menor frecuencia y que además de la mitad de las palabras tienen una frecuencia menor a 9.
Organziación del texto para la Noticia 2 que habla sobre “los efectos económicos que tiene El Salvador en la guerra.
Leémos el archivo del texto para la Noticia 2:
noticiaDos <- readLines("C:/Users/USUARIO/Downloads/TALLER 5 BUSINESS/noticia_2.txt", encoding = "UTF-8")
noticia2 <- Corpus(VectorSource(noticiaDos))
Procesamiento del texto
noticia2 <- tm_map(noticia2, content_transformer(tolower))
noticia2 <- tm_map(noticia2, removePunctuation)
noticia2 <- tm_map(noticia2, removeNumbers)
noticia2 <- tm_map(noticia2, removeWords, stopwords("spanish"))
noticia2 <- tm_map(noticia2, stripWhitespace)
noticia2 <- tm_map(noticia2, stemDocument)
Luego creamos la matríz de términos del documento
tdm2 <- TermDocumentMatrix(noticia2)
Exploramos nuestros datos y visualizamos las palabras más frecuentes de la noticia
m2 <- as.matrix(tdm2)
word_freqs2 <- sort(rowSums(m2), decreasing = TRUE)
dm2 <- data.frame(word = names(word_freqs2), freq = word_freqs2)
head(dm2)
Hacemos nuestro WordCloud
wordcloud(words = dm2$word, freq = dm2$freq, min.freq = 1,
max.words=100, random.order=FALSE,
colors=brewer.pal(8, "Dark2"), rot.per=0.35)
Ahora procedemos hacer nuestras gráficas normales con su respectivo análisis.
n1 <- ggplot(data = dm2, aes(x= freq)) +
geom_histogram(binwidth = 1, col = "purple", fill = "purple") +
xlab("Frecuencia de aparición") + ylab("Número de palabras") +
ggtitle("Distribución de palabras no vacías en la Noticia 2")
print(n1)
De acuerdo con el histograma anterior acerca de la noticia sobre los efectos económicos que está teniendo El Salvador la guerra ,se puede apreciar existe por lo menos una aparición en las palabras que demuestran ser relevantes o “no vacías” en el discurso, alcanzando un número de palabras de aproximadamente 800 Además, su frecuencia de aparición con mayores datos está en el intervalo de 2 a 4, aunque se puede decir que se presenta una frecuencia de hasta 10 datos, demostrando que la mayoría de las palabras siguientes tienen una presencia más limitada.
n2 <- ggplot(data = dm2[1:20, ], aes(x= reorder(word, -freq), y = freq)) +
geom_point(col = "purple") +
xlab("Palabra") + ylab("Frecuencia de aparición") +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
ggtitle("20 palabras con mayor número de apariciones en la Noticia 2")
print(n2)
Según el gráfico de dispersión, se puede resaltar que, de las 20 palabras con mayor frecuencia de aparición en la noticia 2, “Salvador” es la más repetida con 45 apariciones aproximadamente, seguidas de las palabras “Año” y “pais”, con lo que podemos decir que se puede considerar a la palabra “Salvador” como un dato atípico. Tambien se observa que de ahi en adelante muchas tienen la misma frecuencia. Por otro lado, de las 20, las palabra “cuenta, dice e innovación” son las que presentan una menor frecuencia en esta noticia.
n3 <- ggplot(data = dm2[1:20, ], aes(x= word, y= freq)) +
geom_bar(stat = "identity", color = "purple", fill = "purple") +
geom_text(aes(label = freq, vjust = -0.5), col = "black") +
coord_flip() +
labs(title = "20 palabras con mayor número de apariciones", x = "Palabras", y = "Frecuencia de aparición")
print(n3)
Como se puede corroborar en el gráfico de dispersión, el gráfico de barras también muestra los mismos resultados, de los cuales se pueden destacar que “Salvador” es la palabra con la mayor frecuencia de apariciones, y las palabras“cuenta, dice e innovación”tienen la menor frecuencia y que además de la mitad de las palabras tienen una frecuencia menor a 19.
Organziación del texto para la Noticia 3 que habla sobre “Delaware, el paraíso fiscal en Estados Unidos”
Leémos el archivo del texto para la Noticia 3:
noticiaTres <- readLines("C:/Users/USUARIO/Downloads/TALLER 5 BUSINESS/noticia_3.txt", encoding = "UTF-8")
noticia3 <- Corpus(VectorSource(noticiaTres))
Procesamiento del texto
noticia3 <- tm_map(noticia3, content_transformer(tolower))
noticia3 <- tm_map(noticia3, removePunctuation)
noticia3 <- tm_map(noticia3, removeNumbers)
noticia3 <- tm_map(noticia3, removeWords, stopwords("spanish"))
noticia3 <- tm_map(noticia3, stripWhitespace)
noticia3 <- tm_map(noticia3, stemDocument)
Luego creamos la matríz de términos del documento
tdm3 <- TermDocumentMatrix(noticia3)
Exploramos nuestros datos y visualizamos las palabras más frecuentes de la noticia
m3 <- as.matrix(tdm3)
word_freqs3 <- sort(rowSums(m3), decreasing = TRUE)
dm3 <- data.frame(word = names(word_freqs3), freq = word_freqs3)
head(dm3)
Hacemos nuestro WordCloud
wordcloud(words = dm3$word, freq = dm3$freq, min.freq = 1,
max.words=70, random.order=FALSE,
colors=brewer.pal(8, "Dark2"), rot.per=0.35)
Ahora procedemos hacer nuestras gráficas normales con su respectivo
análisis.
g1 <- ggplot(data = dm3, aes(x= freq)) +
geom_histogram(binwidth = 1, col = "orange", fill = "orange") +
xlab("Frecuencia de aparición") + ylab("Número de palabras") +
ggtitle("Distribución de palabras no vacías en la Noticia 3")
print(g1)
De acuerdo con el histograma anterior acerca de la noticia sobre “El paraiso fiscal en Estados Unidos Delaware, se puede apreciar existe por lo menos una aparición en las palabras que demuestran ser relevantes o “no vacías” en el discurso, alcanzando un número de palabras de aproximadamente 500 Además, su frecuencia de aparición con mayores datos está en el intervalo de 2 a 6, aunque se puede decir que se presenta una frecuencia de hasta 10 datos, demostrando que la mayoría de las palabras siguientes tienen una presencia mucho más limitada.
g2 <- ggplot(data = dm3[1:20, ], aes(x= reorder(word, -freq), y = freq)) +
geom_point(col = "orange") +
xlab("Palabra") + ylab("Frecuencia de aparición") +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
ggtitle("20 palabras con mayor número de apariciones en la Noticia 3")
print(g2)
Según el gráfico de dispersión, se puede resaltar que, de las 20 palabras con mayor frecuencia de aparición en la noticia 3, “Delawar” es la más repetida con 49 apariciones aproximadamente, y seguida de ella está “empresa” con 37 apariciones.Ahora, la palabra “Registrar”, es la que que presenta una menor frecuencia en esta noticia. Tambien se observa que de la palabra con más apariciones de ahí en adelante muchas tienen una frecuencia similar.
g3 <- ggplot(data = dm3[1:20, ], aes(x= word, y= freq)) +
geom_bar(stat = "identity", color = "orange", fill = "orange") +
geom_text(aes(label = freq, vjust = -0.5), col = "black") +
coord_flip() +
labs(title = "20 palabras con mayor número de apariciones", x = "Palabras", y = "Frecuencia de aparición")
print(g3)
Como se puede corroborar en el gráfico de dispersión, el gráfico de barras también muestra los mismos resultados, de los cuales se pueden destacar que “Delawar” es la palabra con la mayor frecuencia de apariciones, y la palabra “Registrar” tiene la menor frecuencia y que más de la mitad de las palabras tienen una frecuencia menor a 8.
Leemos las noticias
noticia1 <- tolower(readLines("C:/Users/USUARIO/Downloads/TALLER 5 BUSINESS/noticia_1.txt", warn = FALSE))
noticia2 <- tolower(readLines("C:/Users/USUARIO/Downloads/TALLER 5 BUSINESS/noticia_2.txt", warn = FALSE))
noticia3 <- tolower(readLines("C:/Users/USUARIO/Downloads/TALLER 5 BUSINESS/noticia_3.txt", warn = FALSE))
Limpieza del texto
noticias_limpias <- lapply(list(noticia1, noticia2, noticia3), function(texto) {
texto <- gsub("[[:punct:]]", "", texto)
texto <- tolower(texto) # Convertir a minúsculas
texto <- removeWords(texto, stopwords("es")) # Eliminar palabras vacías
texto <- unlist(strsplit(texto, " "))
texto <- texto[nchar(texto) > 2] # Filtrar palabras con longitud mayor a 2
texto
})
Combinamos las noticias y creamos objeto corpus:
noticias_combinadas <- paste(noticias_limpias[[1]], noticias_limpias[[2]], noticias_limpias[[3]], sep = " ")
corpus <- Corpus(VectorSource(noticias_combinadas))
dtm <- DocumentTermMatrix(corpus)
Obtenemos la frecuencia de las palabras y el data frame:
frecuencias <- sort(colSums(as.matrix(dtm)), decreasing = TRUE)
data <- data.frame(words = names(frecuencias), freq = frecuencias)
Hacemos nuestro WordCloud
wordcloud2(data, size = 0.6)
wordcloud(words = data$word, freq = data$freq, min.freq = 1,
max.words=80, random.order=FALSE,
colors=brewer.pal(8, "Dark2"), rot.per=0.35)
Las palabras que aparecen con mayor tamaño son las que tienen mayor frecuencia de aparición en las noticias combinadas, en este caso “delaware” que predomina con una frecuencia de 49 si recordamos el analisis de gráficas de la noticia 3. Estas palabras clave nos dan una idea general sobre los temas principales o más discutidos en las noticias. Las palabras como “empresas”, “guerra”, “pais”, “israel” “salvador” “delaware” y “economía”, que son las que más se destacan podemos inferir los temas centrales de las noticias.