Instalar Librerias

library(tm)
library(pdftools)
library(SnowballC)
library(readr)
library(qdap)
library(syuzhet)

Preparar los Corpus

txt92 <- readLines("Aladdin_1992.txt")
corp92 <- Corpus(VectorSource(txt92))
txt19 <- readLines("Aladdin_2019.txt")
corp19 <- Corpus(VectorSource(txt19))

Limpiar los corpus

Ahora limpiemos los corpus

# Definir una función para limpiar el texto
clean_text <- function(text) {
  # Convertir el texto a minúsculas
  text <- tolower(text)
  # Eliminar cualquier tipo de comillas
  text <- gsub("\"|“|”|‘|’", "", text)
  # Eliminar la puntuación y los números
  text <- gsub("[[:punct:][:digit:]]", "", text)
  # Eliminar espacios en blanco adicionales
  text <- gsub("\\s+", " ", text)
  # Eliminar espacios en blanco al principio y al final
  text <- trimws(text)
  return(text)
}

# Aplicar limpieza al corpus de 1992
corp92cl <- tm_map(corp92, content_transformer(clean_text))
corp92cl <- tm_map(corp92cl, removeWords, stopwords("english"))

# Aplicar limpieza al corpus de 2019
corp19cl <- tm_map(corp19, content_transformer(clean_text))
corp19cl <- tm_map(corp19cl, removeWords, stopwords("english"))

Combination of both into a single corpus for comparative analysis

corpcomb <- c(corp92cl, corp19cl)

Analisis de texto

Term-Document Matrix

# Term-Document Matrix para la version de 1992
dtm92 <- TermDocumentMatrix(corp92cl)

# Term-Document Matrix para la version del 2019
dtm19 <- TermDocumentMatrix(corp19cl)

# Term-Document Matrix para la version combinada
dtm <- TermDocumentMatrix(corpcomb)
dtm_matrix <- as.matrix(dtm)

Frecuencia de palabras

freq_terms <- findFreqTerms(dtm, lowfreq = 50)
freq_matrix <- dtm_matrix[freq_terms, ]
apply(freq_matrix, 1, sum)
##      "",     "abu "aladdin   "genie    "iago   "jafar "jasmine  "sultan 
##     1252       53      412      178       72      168      188       72 
##      abu  aladdin      ali     back      can   carpet     dont    genie 
##      120      127       57       79       59       75       90       96 
##      get      got    jafar  jasmine     just     know     lamp     like 
##       69       60       76       61       77       52       59       90 
##    looks    never      now      one   prince princess    right      see 
##       53       60       65       67       99       52       62       65 
##   sultan    thats    think     will     wish    youre 
##       61       51       54       69       64       55

Analisis de Asociasion

Asociaremos las palabras que mas aparecen con una palabra en especifico en este caso “abu”

associations <- findAssocs(dtm, "abu", 0.3)

# Extracting the associations for 'geni' and sorting them in decreasing order
abuas <- associations$abu
abuasmix <- sort(abuas, decreasing = TRUE)

# Getting the top 10 associations
top10as <- head(abuasmix, 10)

# Print the top 10 associations
print(top10as)
##  "guard   "iago  "jafar "jafars    "say "street "sultan   "take  "thats    "try 
##       1       1       1       1       1       1       1       1       1       1

Terminos Frecuentes

# Encontramos los terminos mas frecuentes para la version de 1992
ft92 <- findFreqTerms(dtm92, lowfreq = 80)

# Encontramos los terminos mas frecuentes para la version de 2019
ft19 <- findFreqTerms(dtm19, lowfreq = 80)

#Guardamos las palabras mas frecuentes de la version de 1992 en la variable freq92
freqmatrix92 <- as.matrix(dtm92[ft92, ])
freq92 <- rowSums(freqmatrix92)

# Guardamos las palabras mas frecuentes de la version de 2019 en la variable freq19
freqmatrix19 <- as.matrix(dtm19[ft19, ])
freq19 <- rowSums(freqmatrix19)

# Usaremos un dataframe para ver la comparacion de estos terminos frecuentes en ambas versiones
freqcomp <- merge(data.frame(Term = names(freq92), Aladdin_1992 = freq92),
                         data.frame(Term = names(freq19), Aladdin_2019 = freq19),
                         by = "Term", all = TRUE)

# Cualquier valor NA (es decir, términos que no estén presentes en una de las versiones) se reemplaza con 0.
freqcomp[is.na(freqcomp)] <- 0

# El dataframe freq_comparison se ordena en orden descendente según las frecuencias en la versión de 1992.
freqcomp2 <- freqcomp[order(-freqcomp$Aladdin_1992),]

# Se imprime el data frame para permitir ver la comparación entre ambas versiones.
print(freqcomp2)
##      Term Aladdin_1992 Aladdin_2019
## 2 aladdin          381          193
## 6   jafar          197            0
## 7 jasmine          194            0
## 1     abu          166            0
## 4   genie          164          133
## 8  sultan          110            0
## 5    iago           93            0
## 3  carpet           89            0

Metodo no utiizado en clase “Syuzhet”

# Conjunto de texto a analisar
texto <- c(corp92)
texto2 <- c(corp19)

#Aplicamos analisis de sentimientos
sentimientos <- get_sentiment(texto, method = "syuzhet")
sentimientos2 <- get_sentiment(texto2, method = "syuzhet")

#Vemos los resultados
print(sentimientos)
## [1] -26.95   0.00   0.00
print(sentimientos2)
## [1] 36.95  0.00  0.00
# Graficar los puntajes de sentimiento
plot(sentimientos, type = "l", xlab = "Posición en el texto", ylab = "Puntaje de sentimiento", main = "Análisis de Sentimientos con Syuzhet")

plot(sentimientos2, type = "l", xlab = "Posición en el texto", ylab = "Puntaje de sentimiento", main = "Análisis de Sentimientos con Syuzhet")

Este código generará un gráfico que muestra los puntajes de sentimiento a lo largo del texto en el eje x (posición en el texto) y los puntajes de sentimiento en el eje y.

Preguntas

¿Se tomará y analizará Todo lo que aparece en la página? ¿Que si y que no? ¿Por qué?
No, hay secciones que debemos limpiar del texto, todo aquello como signos de puntuacion, comillas, comillas especiales, espacios extra, existen instrucciones dentro del texto todo esto tiene que ser eliminado para tener un analisis mas preciso.

Comparacion de frecuencia y analisis de asociasion
En en analisis de asociacion podemos observar que palabras son las que mas se asocian con la palabra “abu” las cuales son aquellas como “guard”, “iago”, “jafar” entre otras y en cuanto a la comparacion de frecuencias en ambas versiones podemos ver aquellas palabras que mas se repiten en ambas versiones tales como “aladdin”, “genie”,“jasmine”,“jafar”, “abu”, entre otros.

LS0tDQp0aXRsZTogIkFuYWxpc2lzIGRlIEFsYWRkaW4iDQphdXRob3I6ICJMdWlzIE1lbmRvemEgLSBBMDA4MjkwOTkiDQpkYXRlOiAiMjAyNC0wNC0wMiINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KLS0tDQohW10oQzpcXFVzZXJzXFxMdWlzIFJvZHJpZ3VlelxcRG93bmxvYWRzXFxhYnUuZ2lmKQ0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KIyMgSW5zdGFsYXIgTGlicmVyaWFzDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeSh0bSkNCmxpYnJhcnkocGRmdG9vbHMpDQpsaWJyYXJ5KFNub3diYWxsQykNCmxpYnJhcnkocmVhZHIpDQpsaWJyYXJ5KHFkYXApDQpsaWJyYXJ5KHN5dXpoZXQpDQpgYGANCg0KIyMgUHJlcGFyYXIgbG9zIENvcnB1cw0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KdHh0OTIgPC0gcmVhZExpbmVzKCJBbGFkZGluXzE5OTIudHh0IikNCmNvcnA5MiA8LSBDb3JwdXMoVmVjdG9yU291cmNlKHR4dDkyKSkNCnR4dDE5IDwtIHJlYWRMaW5lcygiQWxhZGRpbl8yMDE5LnR4dCIpDQpjb3JwMTkgPC0gQ29ycHVzKFZlY3RvclNvdXJjZSh0eHQxOSkpDQpgYGANCg0KIyMgTGltcGlhciBsb3MgY29ycHVzDQpBaG9yYSBsaW1waWVtb3MgbG9zIGNvcnB1cw0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiMgRGVmaW5pciB1bmEgZnVuY2nDs24gcGFyYSBsaW1waWFyIGVsIHRleHRvDQpjbGVhbl90ZXh0IDwtIGZ1bmN0aW9uKHRleHQpIHsNCiAgIyBDb252ZXJ0aXIgZWwgdGV4dG8gYSBtaW7DunNjdWxhcw0KICB0ZXh0IDwtIHRvbG93ZXIodGV4dCkNCiAgIyBFbGltaW5hciBjdWFscXVpZXIgdGlwbyBkZSBjb21pbGxhcw0KICB0ZXh0IDwtIGdzdWIoIlwifOKAnHzigJ184oCYfOKAmSIsICIiLCB0ZXh0KQ0KICAjIEVsaW1pbmFyIGxhIHB1bnR1YWNpw7NuIHkgbG9zIG7Dum1lcm9zDQogIHRleHQgPC0gZ3N1YigiW1s6cHVuY3Q6XVs6ZGlnaXQ6XV0iLCAiIiwgdGV4dCkNCiAgIyBFbGltaW5hciBlc3BhY2lvcyBlbiBibGFuY28gYWRpY2lvbmFsZXMNCiAgdGV4dCA8LSBnc3ViKCJcXHMrIiwgIiAiLCB0ZXh0KQ0KICAjIEVsaW1pbmFyIGVzcGFjaW9zIGVuIGJsYW5jbyBhbCBwcmluY2lwaW8geSBhbCBmaW5hbA0KICB0ZXh0IDwtIHRyaW13cyh0ZXh0KQ0KICByZXR1cm4odGV4dCkNCn0NCg0KIyBBcGxpY2FyIGxpbXBpZXphIGFsIGNvcnB1cyBkZSAxOTkyDQpjb3JwOTJjbCA8LSB0bV9tYXAoY29ycDkyLCBjb250ZW50X3RyYW5zZm9ybWVyKGNsZWFuX3RleHQpKQ0KY29ycDkyY2wgPC0gdG1fbWFwKGNvcnA5MmNsLCByZW1vdmVXb3Jkcywgc3RvcHdvcmRzKCJlbmdsaXNoIikpDQoNCiMgQXBsaWNhciBsaW1waWV6YSBhbCBjb3JwdXMgZGUgMjAxOQ0KY29ycDE5Y2wgPC0gdG1fbWFwKGNvcnAxOSwgY29udGVudF90cmFuc2Zvcm1lcihjbGVhbl90ZXh0KSkNCmNvcnAxOWNsIDwtIHRtX21hcChjb3JwMTljbCwgcmVtb3ZlV29yZHMsIHN0b3B3b3JkcygiZW5nbGlzaCIpKQ0KYGBgDQoNCkNvbWJpbmF0aW9uIG9mIGJvdGggaW50byBhIHNpbmdsZSBjb3JwdXMgZm9yIGNvbXBhcmF0aXZlIGFuYWx5c2lzDQpgYGB7cn0NCmNvcnBjb21iIDwtIGMoY29ycDkyY2wsIGNvcnAxOWNsKQ0KYGBgDQoNCiMjIEFuYWxpc2lzIGRlIHRleHRvDQojIyMgVGVybS1Eb2N1bWVudCBNYXRyaXgNCmBgYHtyfQ0KIyBUZXJtLURvY3VtZW50IE1hdHJpeCBwYXJhIGxhIHZlcnNpb24gZGUgMTk5Mg0KZHRtOTIgPC0gVGVybURvY3VtZW50TWF0cml4KGNvcnA5MmNsKQ0KDQojIFRlcm0tRG9jdW1lbnQgTWF0cml4IHBhcmEgbGEgdmVyc2lvbiBkZWwgMjAxOQ0KZHRtMTkgPC0gVGVybURvY3VtZW50TWF0cml4KGNvcnAxOWNsKQ0KDQojIFRlcm0tRG9jdW1lbnQgTWF0cml4IHBhcmEgbGEgdmVyc2lvbiBjb21iaW5hZGENCmR0bSA8LSBUZXJtRG9jdW1lbnRNYXRyaXgoY29ycGNvbWIpDQpkdG1fbWF0cml4IDwtIGFzLm1hdHJpeChkdG0pDQpgYGANCg0KIyMjIEZyZWN1ZW5jaWEgZGUgcGFsYWJyYXMNCmBgYHtyfQ0KZnJlcV90ZXJtcyA8LSBmaW5kRnJlcVRlcm1zKGR0bSwgbG93ZnJlcSA9IDUwKQ0KZnJlcV9tYXRyaXggPC0gZHRtX21hdHJpeFtmcmVxX3Rlcm1zLCBdDQphcHBseShmcmVxX21hdHJpeCwgMSwgc3VtKQ0KYGBgDQoNCiMjIyBBbmFsaXNpcyBkZSBBc29jaWFzaW9uDQpBc29jaWFyZW1vcyBsYXMgcGFsYWJyYXMgcXVlIG1hcyBhcGFyZWNlbiBjb24gdW5hIHBhbGFicmEgZW4gZXNwZWNpZmljbyBlbiBlc3RlIGNhc28gImFidSINCmBgYHtyfQ0KYXNzb2NpYXRpb25zIDwtIGZpbmRBc3NvY3MoZHRtLCAiYWJ1IiwgMC4zKQ0KDQojIEV4dHJhY3RpbmcgdGhlIGFzc29jaWF0aW9ucyBmb3IgJ2dlbmknIGFuZCBzb3J0aW5nIHRoZW0gaW4gZGVjcmVhc2luZyBvcmRlcg0KYWJ1YXMgPC0gYXNzb2NpYXRpb25zJGFidQ0KYWJ1YXNtaXggPC0gc29ydChhYnVhcywgZGVjcmVhc2luZyA9IFRSVUUpDQoNCiMgR2V0dGluZyB0aGUgdG9wIDEwIGFzc29jaWF0aW9ucw0KdG9wMTBhcyA8LSBoZWFkKGFidWFzbWl4LCAxMCkNCg0KIyBQcmludCB0aGUgdG9wIDEwIGFzc29jaWF0aW9ucw0KcHJpbnQodG9wMTBhcykNCmBgYA0KIyMjIFRlcm1pbm9zIEZyZWN1ZW50ZXMNCmBgYHtyfQ0KIyBFbmNvbnRyYW1vcyBsb3MgdGVybWlub3MgbWFzIGZyZWN1ZW50ZXMgcGFyYSBsYSB2ZXJzaW9uIGRlIDE5OTINCmZ0OTIgPC0gZmluZEZyZXFUZXJtcyhkdG05MiwgbG93ZnJlcSA9IDgwKQ0KDQojIEVuY29udHJhbW9zIGxvcyB0ZXJtaW5vcyBtYXMgZnJlY3VlbnRlcyBwYXJhIGxhIHZlcnNpb24gZGUgMjAxOQ0KZnQxOSA8LSBmaW5kRnJlcVRlcm1zKGR0bTE5LCBsb3dmcmVxID0gODApDQoNCiNHdWFyZGFtb3MgbGFzIHBhbGFicmFzIG1hcyBmcmVjdWVudGVzIGRlIGxhIHZlcnNpb24gZGUgMTk5MiBlbiBsYSB2YXJpYWJsZSBmcmVxOTINCmZyZXFtYXRyaXg5MiA8LSBhcy5tYXRyaXgoZHRtOTJbZnQ5MiwgXSkNCmZyZXE5MiA8LSByb3dTdW1zKGZyZXFtYXRyaXg5MikNCg0KIyBHdWFyZGFtb3MgbGFzIHBhbGFicmFzIG1hcyBmcmVjdWVudGVzIGRlIGxhIHZlcnNpb24gZGUgMjAxOSBlbiBsYSB2YXJpYWJsZSBmcmVxMTkNCmZyZXFtYXRyaXgxOSA8LSBhcy5tYXRyaXgoZHRtMTlbZnQxOSwgXSkNCmZyZXExOSA8LSByb3dTdW1zKGZyZXFtYXRyaXgxOSkNCg0KIyBVc2FyZW1vcyB1biBkYXRhZnJhbWUgcGFyYSB2ZXIgbGEgY29tcGFyYWNpb24gZGUgZXN0b3MgdGVybWlub3MgZnJlY3VlbnRlcyBlbiBhbWJhcyB2ZXJzaW9uZXMNCmZyZXFjb21wIDwtIG1lcmdlKGRhdGEuZnJhbWUoVGVybSA9IG5hbWVzKGZyZXE5MiksIEFsYWRkaW5fMTk5MiA9IGZyZXE5MiksDQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5mcmFtZShUZXJtID0gbmFtZXMoZnJlcTE5KSwgQWxhZGRpbl8yMDE5ID0gZnJlcTE5KSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBieSA9ICJUZXJtIiwgYWxsID0gVFJVRSkNCg0KIyBDdWFscXVpZXIgdmFsb3IgTkEgKGVzIGRlY2lyLCB0w6lybWlub3MgcXVlIG5vIGVzdMOpbiBwcmVzZW50ZXMgZW4gdW5hIGRlIGxhcyB2ZXJzaW9uZXMpIHNlIHJlZW1wbGF6YSBjb24gMC4NCmZyZXFjb21wW2lzLm5hKGZyZXFjb21wKV0gPC0gMA0KDQojIEVsIGRhdGFmcmFtZSBmcmVxX2NvbXBhcmlzb24gc2Ugb3JkZW5hIGVuIG9yZGVuIGRlc2NlbmRlbnRlIHNlZ8O6biBsYXMgZnJlY3VlbmNpYXMgZW4gbGEgdmVyc2nDs24gZGUgMTk5Mi4NCmZyZXFjb21wMiA8LSBmcmVxY29tcFtvcmRlcigtZnJlcWNvbXAkQWxhZGRpbl8xOTkyKSxdDQoNCiMgU2UgaW1wcmltZSBlbCBkYXRhIGZyYW1lIHBhcmEgcGVybWl0aXIgdmVyIGxhIGNvbXBhcmFjacOzbiBlbnRyZSBhbWJhcyB2ZXJzaW9uZXMuDQpwcmludChmcmVxY29tcDIpDQpgYGANCg0KIyMjIE1ldG9kbyBubyB1dGlpemFkbyBlbiBjbGFzZSAiU3l1emhldCINCmBgYHtyfQ0KIyBDb25qdW50byBkZSB0ZXh0byBhIGFuYWxpc2FyDQp0ZXh0byA8LSBjKGNvcnA5MikNCnRleHRvMiA8LSBjKGNvcnAxOSkNCg0KI0FwbGljYW1vcyBhbmFsaXNpcyBkZSBzZW50aW1pZW50b3MNCnNlbnRpbWllbnRvcyA8LSBnZXRfc2VudGltZW50KHRleHRvLCBtZXRob2QgPSAic3l1emhldCIpDQpzZW50aW1pZW50b3MyIDwtIGdldF9zZW50aW1lbnQodGV4dG8yLCBtZXRob2QgPSAic3l1emhldCIpDQoNCiNWZW1vcyBsb3MgcmVzdWx0YWRvcw0KcHJpbnQoc2VudGltaWVudG9zKQ0KcHJpbnQoc2VudGltaWVudG9zMikNCg0KIyBHcmFmaWNhciBsb3MgcHVudGFqZXMgZGUgc2VudGltaWVudG8NCnBsb3Qoc2VudGltaWVudG9zLCB0eXBlID0gImwiLCB4bGFiID0gIlBvc2ljacOzbiBlbiBlbCB0ZXh0byIsIHlsYWIgPSAiUHVudGFqZSBkZSBzZW50aW1pZW50byIsIG1haW4gPSAiQW7DoWxpc2lzIGRlIFNlbnRpbWllbnRvcyBjb24gU3l1emhldCIpDQoNCnBsb3Qoc2VudGltaWVudG9zMiwgdHlwZSA9ICJsIiwgeGxhYiA9ICJQb3NpY2nDs24gZW4gZWwgdGV4dG8iLCB5bGFiID0gIlB1bnRhamUgZGUgc2VudGltaWVudG8iLCBtYWluID0gIkFuw6FsaXNpcyBkZSBTZW50aW1pZW50b3MgY29uIFN5dXpoZXQiKQ0KYGBgDQoNCkVzdGUgY8OzZGlnbyBnZW5lcmFyw6EgdW4gZ3LDoWZpY28gcXVlIG11ZXN0cmEgbG9zIHB1bnRhamVzIGRlIHNlbnRpbWllbnRvIGEgbG8gbGFyZ28gZGVsIHRleHRvIGVuIGVsIGVqZSB4IChwb3NpY2nDs24gZW4gZWwgdGV4dG8pIHkgbG9zIHB1bnRhamVzIGRlIHNlbnRpbWllbnRvIGVuIGVsIGVqZSB5LiANCg0KIyMjIFByZWd1bnRhcw0KDQrCv1NlIHRvbWFyw6EgeSBhbmFsaXphcsOhIFRvZG8gbG8gcXVlIGFwYXJlY2UgZW4gbGEgcMOhZ2luYT8gwr9RdWUgc2kgeSBxdWUgbm8/IMK/UG9yIHF1w6k/ICANCk5vLCBoYXkgc2VjY2lvbmVzIHF1ZSBkZWJlbW9zIGxpbXBpYXIgZGVsIHRleHRvLCB0b2RvIGFxdWVsbG8gY29tbyBzaWdub3MgZGUgcHVudHVhY2lvbiwgY29taWxsYXMsIGNvbWlsbGFzIGVzcGVjaWFsZXMsIGVzcGFjaW9zIGV4dHJhLCBleGlzdGVuIGluc3RydWNjaW9uZXMgZGVudHJvIGRlbCB0ZXh0byB0b2RvIGVzdG8gdGllbmUgcXVlIHNlciBlbGltaW5hZG8gcGFyYSB0ZW5lciB1biBhbmFsaXNpcyBtYXMgcHJlY2lzby4NCg0KQ29tcGFyYWNpb24gZGUgZnJlY3VlbmNpYSB5IGFuYWxpc2lzIGRlIGFzb2NpYXNpb24gIA0KRW4gZW4gYW5hbGlzaXMgZGUgYXNvY2lhY2lvbiBwb2RlbW9zIG9ic2VydmFyIHF1ZSBwYWxhYnJhcyBzb24gbGFzIHF1ZSBtYXMgc2UgYXNvY2lhbiBjb24gbGEgcGFsYWJyYSAiYWJ1IiBsYXMgY3VhbGVzIHNvbiBhcXVlbGxhcyBjb21vICJndWFyZCIsICJpYWdvIiwgImphZmFyIiBlbnRyZSBvdHJhcyB5IGVuIGN1YW50byBhIGxhIGNvbXBhcmFjaW9uIGRlIGZyZWN1ZW5jaWFzIGVuIGFtYmFzIHZlcnNpb25lcyBwb2RlbW9zIHZlciBhcXVlbGxhcyBwYWxhYnJhcyBxdWUgbWFzIHNlIHJlcGl0ZW4gZW4gYW1iYXMgdmVyc2lvbmVzIHRhbGVzIGNvbW8gImFsYWRkaW4iLCAiZ2VuaWUiLCJqYXNtaW5lIiwiamFmYXIiLCAiYWJ1IiwgZW50cmUgb3Ryb3MuIA0K