Análisis de sentimientos

El Triste

El análisis de sentimientos, o mineria de opinión, es utilizado para extraer de forma automática información sobre la connotación positiva o negativa del lenguaje de un documento.

El anáisis mostrará el resultado en 8 emociones básicas y 2 sentimientos.
Emociones Básicas: 1. Alegría (joy)
2. Tristeza (sadness)
3. Ira (anger)
4. Sorpresa (surprise)
5. Asco (disgust)
6. Miedo (fear)
7. Anticipación (anticipation)
8. Confianza (trust)

Sentimietos:
1. Positivo (positive) 2. Negativo(negative)

1. Instalar paquetes y llamar librerías

#install package
library(syuzhet)
#install package
library(RColorBrewer)

2. Cargar texto

#file.choose()

texto_cadena <-read.delim("C:/Users/lynet/OneDrive/Documents/Analítica 2023/triste.txt", header=FALSE)

View(texto_cadena)

3. Tokenizar texto

texto_palabras <- get_tokens(texto_cadena)

4. Explorar texto

head(texto_palabras)
## [1] "c"        "qué"      "triste"   "fue"      "decirnos" "adiós"
length(texto_cadena)
## [1] 1

5. Realizar análisis de sentimientos

sentimientos <- get_nrc_sentiment(texto_palabras, language = "spanish")

#Idiomas disponibles: spanish, english, french, german, italian, portuguese, etc.

summary(sentimientos)
##      anger          anticipation    disgust          fear     
##  Min.   :0.00000   Min.   :0     Min.   :0.00   Min.   :0.00  
##  1st Qu.:0.00000   1st Qu.:0     1st Qu.:0.00   1st Qu.:0.00  
##  Median :0.00000   Median :0     Median :0.00   Median :0.00  
##  Mean   :0.02286   Mean   :0     Mean   :0.04   Mean   :0.08  
##  3rd Qu.:0.00000   3rd Qu.:0     3rd Qu.:0.00   3rd Qu.:0.00  
##  Max.   :1.00000   Max.   :0     Max.   :1.00   Max.   :2.00  
##       joy             sadness          surprise     trust      negative     
##  Min.   :0.00000   Min.   :0.0000   Min.   :0   Min.   :0   Min.   :0.0000  
##  1st Qu.:0.00000   1st Qu.:0.0000   1st Qu.:0   1st Qu.:0   1st Qu.:0.0000  
##  Median :0.00000   Median :0.0000   Median :0   Median :0   Median :0.0000  
##  Mean   :0.03429   Mean   :0.2171   Mean   :0   Mean   :0   Mean   :0.2057  
##  3rd Qu.:0.00000   3rd Qu.:0.0000   3rd Qu.:0   3rd Qu.:0   3rd Qu.:0.0000  
##  Max.   :1.00000   Max.   :7.0000   Max.   :0   Max.   :0   Max.   :7.0000  
##     positive      
##  Min.   :0.00000  
##  1st Qu.:0.00000  
##  Median :0.00000  
##  Mean   :0.04571  
##  3rd Qu.:0.00000  
##  Max.   :1.00000
head(sentimientos)
##   anger anticipation disgust fear joy sadness surprise trust negative positive
## 1     0            0       0    0   0       0        0     0        0        0
## 2     0            0       0    0   0       0        0     0        0        0
## 3     1            0       1    2   0       5        0     0        5        0
## 4     0            0       0    0   0       0        0     0        0        0
## 5     0            0       0    0   0       0        0     0        0        0
## 6     0            0       0    0   0       0        0     0        0        0

6. Graficar Resultados de Emociones

barplot(
  colSums(prop.table(sentimientos[,1:8])),
  space=0.2,
  horiz=FALSE,
  las=1,
  cex.names =0.7,
  col=brewer.pal(n=8, name = "Set3"),
  main="Análisis de Sentimientos de la canción El triste",
  xlab="Emociones"
)

7.Profundizar Análisis de Emociones

palabras_tristeza<-texto_palabras[sentimientos$sadness>0]
palabras_tristeza_orden<-sort(table(unlist(palabras_tristeza)),
                              decreasing = TRUE)
head(palabras_tristeza_orden, n=10)
## 
##  triste   dolor    azul    gris soledad 
##       4       2       1       1       1

8. Graficar Resultados de sentimientos

secuencua_sentimientos <- (sentimientos$negative*-1)+sentimientos$positive
simple_plot(secuencua_sentimientos)

Himno Mexicano

1. Cargar texto

#file.choose()

himno <-read.delim("C:/Users/lynet/OneDrive/Documents/Analítica 2023/himnomexicano.txt", header=FALSE)

View(himno)

2. Tokenizar texto

himnopalabras <- get_tokens(himno)

3. Explorar texto

head(himnopalabras)
## [1] "c"         "mexicanos" "al"        "grito"     "de"        "guerra"
length(himno)
## [1] 1

4. Realizar análisis de sentimientos

himnomex <- get_nrc_sentiment(himnopalabras, language = "spanish")

#Idiomas disponibles: spanish, english, french, german, italian, portuguese, etc.

summary(himnomex)
##      anger          anticipation        disgust             fear        
##  Min.   :0.00000   Min.   :0.00000   Min.   :0.00000   Min.   :0.00000  
##  1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.00000  
##  Median :0.00000   Median :0.00000   Median :0.00000   Median :0.00000  
##  Mean   :0.06237   Mean   :0.04225   Mean   :0.02213   Mean   :0.07445  
##  3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.00000  
##  Max.   :3.00000   Max.   :2.00000   Max.   :2.00000   Max.   :2.00000  
##       joy             sadness           surprise           trust        
##  Min.   :0.00000   Min.   :0.00000   Min.   :0.00000   Min.   :0.00000  
##  1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.00000  
##  Median :0.00000   Median :0.00000   Median :0.00000   Median :0.00000  
##  Mean   :0.04829   Mean   :0.04225   Mean   :0.02616   Mean   :0.04024  
##  3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.00000  
##  Max.   :2.00000   Max.   :2.00000   Max.   :2.00000   Max.   :2.00000  
##     negative          positive     
##  Min.   :0.00000   Min.   :0.0000  
##  1st Qu.:0.00000   1st Qu.:0.0000  
##  Median :0.00000   Median :0.0000  
##  Mean   :0.08249   Mean   :0.1006  
##  3rd Qu.:0.00000   3rd Qu.:0.0000  
##  Max.   :3.00000   Max.   :3.0000
head(himnomex)
##   anger anticipation disgust fear joy sadness surprise trust negative positive
## 1     0            0       0    0   0       0        0     0        0        0
## 2     0            0       0    0   0       0        0     0        0        0
## 3     0            0       0    0   0       0        0     0        0        0
## 4     2            0       0    1   0       1        2     0        2        0
## 5     0            0       0    0   0       0        0     0        0        0
## 6     1            0       0    2   0       1        0     0        2        0

5. Graficar Resultados de Emociones

barplot(
  colSums(prop.table(himnomex[,1:8])),
  space=0.2,
  horiz=FALSE,
  las=1,
  cex.names =0.7,
  col=brewer.pal(n=8, name = "Set3"),
  main="Análisis de Sentimientos del Himno Mexicano",
  xlab="Emociones"
)

6.Profundizar Análisis de Emociones

palabras_tristeza<-himnopalabras[sentimientos$sadness>0]
palabras_tristeza_orden<-sort(table(unlist(palabras_tristeza)),
                              decreasing = TRUE)
head(palabras_tristeza_orden, n=10)
## 
##        al        de      amor  arcángel  ardiente     bravo circundar    contra 
##         2         2         1         1         1         1         1         1 
##        el        en 
##         1         1

7. Graficar Resultados de sentimientos

secuencia_himno <- (himnomex$negative*-1)+himnomex$positive
simple_plot(secuencia_himno)

LS0tDQp0aXRsZTogIkFjdGl2aWRhZCA0LjUiDQphdXRob3I6ICJMeW5ldHRlIFNvbGlzIEEwMTU2MjM4OSINCmRhdGU6ICIyMDIzLTA5LTI1Ig0Kb3V0cHV0OiANCiBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUNCiAgICB0aGVtZTogInlldGkiDQogICAgaGlnaGxpZ2h0OiAidGFuZ28iDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KPGNlbnRlcj4NCiFbIF0oQzovVXNlcnMvbHluZXQvT25lRHJpdmUvRG9jdW1lbnRzL0FuYWzDrXRpY2EgMjAyMy9pbnNpZGUucG5nKQ0KDQoNCiMgPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuOyI+KkFuw6FsaXNpcyBkZSBzZW50aW1pZW50b3M8L3NwYW4+Kg0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW47Ij4qRWwgVHJpc3RlPC9zcGFuPioNCg0KRWwgKiphbsOhbGlzaXMgZGUgc2VudGltaWVudG9zKiosIG8gKiptaW5lcmlhIGRlIG9waW5pw7NuKiosIGVzIHV0aWxpemFkbyBwYXJhIGV4dHJhZXIgZGUgZm9ybWEgYXV0b23DoXRpY2EgaW5mb3JtYWNpw7NuIHNvYnJlIGxhIGNvbm5vdGFjacOzbiBwb3NpdGl2YSBvIG5lZ2F0aXZhIGRlbCBsZW5ndWFqZSBkZSB1biBkb2N1bWVudG8uICANCg0KRWwgYW7DoWlzaXMgbW9zdHJhcsOhIGVsIHJlc3VsdGFkbyBlbiA4IGVtb2Npb25lcyBiw6FzaWNhcyB5IDIgc2VudGltaWVudG9zLiAgDQpFbW9jaW9uZXMgQsOhc2ljYXM6DQoxLiBBbGVncsOtYSAoam95KSAgDQoyLiBUcmlzdGV6YSAoc2FkbmVzcykgIA0KMy4gSXJhIChhbmdlcikgIA0KNC4gU29ycHJlc2EgKHN1cnByaXNlKSAgDQo1LiBBc2NvIChkaXNndXN0KSAgDQo2LiBNaWVkbyAoZmVhcikgIA0KNy4gQW50aWNpcGFjacOzbiAoYW50aWNpcGF0aW9uKSAgDQo4LiBDb25maWFuemEgKHRydXN0KSAgDQoNCg0KU2VudGltaWV0b3M6ICANCjEuIFBvc2l0aXZvIChwb3NpdGl2ZSkgDQoyLiBOZWdhdGl2byhuZWdhdGl2ZSkgIA0KDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbjsiPioxLiBJbnN0YWxhciBwYXF1ZXRlcyB5IGxsYW1hciBsaWJyZXLDrWFzPC9zcGFuPioNCg0KYGBge3J9DQojaW5zdGFsbCBwYWNrYWdlDQpsaWJyYXJ5KHN5dXpoZXQpDQojaW5zdGFsbCBwYWNrYWdlDQpsaWJyYXJ5KFJDb2xvckJyZXdlcikNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW47Ij4qMi4gQ2FyZ2FyIHRleHRvPC9zcGFuPioNCg0KYGBge3J9DQojZmlsZS5jaG9vc2UoKQ0KDQp0ZXh0b19jYWRlbmEgPC1yZWFkLmRlbGltKCJDOi9Vc2Vycy9seW5ldC9PbmVEcml2ZS9Eb2N1bWVudHMvQW5hbMOtdGljYSAyMDIzL3RyaXN0ZS50eHQiLCBoZWFkZXI9RkFMU0UpDQoNClZpZXcodGV4dG9fY2FkZW5hKQ0KDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuOyI+KjMuIFRva2VuaXphciB0ZXh0bzwvc3Bhbj4qDQoNCmBgYHtyfQ0KdGV4dG9fcGFsYWJyYXMgPC0gZ2V0X3Rva2Vucyh0ZXh0b19jYWRlbmEpDQoNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW47Ij4qNC4gRXhwbG9yYXIgdGV4dG88L3NwYW4+Kg0KDQpgYGB7cn0NCmhlYWQodGV4dG9fcGFsYWJyYXMpDQoNCmxlbmd0aCh0ZXh0b19jYWRlbmEpDQoNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW47Ij4qNS4gUmVhbGl6YXIgYW7DoWxpc2lzIGRlIHNlbnRpbWllbnRvczwvc3Bhbj4qDQoNCmBgYHtyfQ0Kc2VudGltaWVudG9zIDwtIGdldF9ucmNfc2VudGltZW50KHRleHRvX3BhbGFicmFzLCBsYW5ndWFnZSA9ICJzcGFuaXNoIikNCg0KI0lkaW9tYXMgZGlzcG9uaWJsZXM6IHNwYW5pc2gsIGVuZ2xpc2gsIGZyZW5jaCwgZ2VybWFuLCBpdGFsaWFuLCBwb3J0dWd1ZXNlLCBldGMuDQoNCnN1bW1hcnkoc2VudGltaWVudG9zKQ0KaGVhZChzZW50aW1pZW50b3MpDQoNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW47Ij4qNi4gR3JhZmljYXIgUmVzdWx0YWRvcyBkZSBFbW9jaW9uZXM8L3NwYW4+Kg0KDQpgYGB7cn0NCmJhcnBsb3QoDQogIGNvbFN1bXMocHJvcC50YWJsZShzZW50aW1pZW50b3NbLDE6OF0pKSwNCiAgc3BhY2U9MC4yLA0KICBob3Jpej1GQUxTRSwNCiAgbGFzPTEsDQogIGNleC5uYW1lcyA9MC43LA0KICBjb2w9YnJld2VyLnBhbChuPTgsIG5hbWUgPSAiU2V0MyIpLA0KICBtYWluPSJBbsOhbGlzaXMgZGUgU2VudGltaWVudG9zIGRlIGxhIGNhbmNpw7NuIEVsIHRyaXN0ZSIsDQogIHhsYWI9IkVtb2Npb25lcyINCikNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW47Ij4qNy5Qcm9mdW5kaXphciBBbsOhbGlzaXMgZGUgRW1vY2lvbmVzPC9zcGFuPioNCg0KYGBge3J9DQpwYWxhYnJhc190cmlzdGV6YTwtdGV4dG9fcGFsYWJyYXNbc2VudGltaWVudG9zJHNhZG5lc3M+MF0NCnBhbGFicmFzX3RyaXN0ZXphX29yZGVuPC1zb3J0KHRhYmxlKHVubGlzdChwYWxhYnJhc190cmlzdGV6YSkpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVhc2luZyA9IFRSVUUpDQpoZWFkKHBhbGFicmFzX3RyaXN0ZXphX29yZGVuLCBuPTEwKQ0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbjsiPio4LiBHcmFmaWNhciBSZXN1bHRhZG9zIGRlIHNlbnRpbWllbnRvczwvc3Bhbj4qDQoNCmBgYHtyfQ0Kc2VjdWVuY3VhX3NlbnRpbWllbnRvcyA8LSAoc2VudGltaWVudG9zJG5lZ2F0aXZlKi0xKStzZW50aW1pZW50b3MkcG9zaXRpdmUNCnNpbXBsZV9wbG90KHNlY3VlbmN1YV9zZW50aW1pZW50b3MpDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuOyI+KkhpbW5vIE1leGljYW5vPC9zcGFuPioNCg0KIVsgXShDOi9Vc2Vycy9seW5ldC9PbmVEcml2ZS9Eb2N1bWVudHMvQW5hbMOtdGljYSAyMDIzL21leGljby5wbmcpDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbjsiPioxLiBDYXJnYXIgdGV4dG88L3NwYW4+Kg0KDQpgYGB7cn0NCiNmaWxlLmNob29zZSgpDQoNCmhpbW5vIDwtcmVhZC5kZWxpbSgiQzovVXNlcnMvbHluZXQvT25lRHJpdmUvRG9jdW1lbnRzL0FuYWzDrXRpY2EgMjAyMy9oaW1ub21leGljYW5vLnR4dCIsIGhlYWRlcj1GQUxTRSkNCg0KVmlldyhoaW1ubykNCg0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbjsiPioyLiBUb2tlbml6YXIgdGV4dG88L3NwYW4+Kg0KDQpgYGB7cn0NCmhpbW5vcGFsYWJyYXMgPC0gZ2V0X3Rva2VucyhoaW1ubykNCg0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbjsiPiozLiBFeHBsb3JhciB0ZXh0bzwvc3Bhbj4qDQoNCmBgYHtyfQ0KaGVhZChoaW1ub3BhbGFicmFzKQ0KDQpsZW5ndGgoaGltbm8pDQoNCmBgYA0KDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbjsiPio0LiBSZWFsaXphciBhbsOhbGlzaXMgZGUgc2VudGltaWVudG9zPC9zcGFuPioNCg0KYGBge3J9DQpoaW1ub21leCA8LSBnZXRfbnJjX3NlbnRpbWVudChoaW1ub3BhbGFicmFzLCBsYW5ndWFnZSA9ICJzcGFuaXNoIikNCg0KI0lkaW9tYXMgZGlzcG9uaWJsZXM6IHNwYW5pc2gsIGVuZ2xpc2gsIGZyZW5jaCwgZ2VybWFuLCBpdGFsaWFuLCBwb3J0dWd1ZXNlLCBldGMuDQoNCnN1bW1hcnkoaGltbm9tZXgpDQpoZWFkKGhpbW5vbWV4KQ0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbjsiPio1LiBHcmFmaWNhciBSZXN1bHRhZG9zIGRlIEVtb2Npb25lczwvc3Bhbj4qDQoNCmBgYHtyfQ0KYmFycGxvdCgNCiAgY29sU3Vtcyhwcm9wLnRhYmxlKGhpbW5vbWV4WywxOjhdKSksDQogIHNwYWNlPTAuMiwNCiAgaG9yaXo9RkFMU0UsDQogIGxhcz0xLA0KICBjZXgubmFtZXMgPTAuNywNCiAgY29sPWJyZXdlci5wYWwobj04LCBuYW1lID0gIlNldDMiKSwNCiAgbWFpbj0iQW7DoWxpc2lzIGRlIFNlbnRpbWllbnRvcyBkZWwgSGltbm8gTWV4aWNhbm8iLA0KICB4bGFiPSJFbW9jaW9uZXMiDQopDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuOyI+KjYuUHJvZnVuZGl6YXIgQW7DoWxpc2lzIGRlIEVtb2Npb25lczwvc3Bhbj4qDQoNCmBgYHtyfQ0KcGFsYWJyYXNfdHJpc3RlemE8LWhpbW5vcGFsYWJyYXNbc2VudGltaWVudG9zJHNhZG5lc3M+MF0NCnBhbGFicmFzX3RyaXN0ZXphX29yZGVuPC1zb3J0KHRhYmxlKHVubGlzdChwYWxhYnJhc190cmlzdGV6YSkpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcmVhc2luZyA9IFRSVUUpDQpoZWFkKHBhbGFicmFzX3RyaXN0ZXphX29yZGVuLCBuPTEwKQ0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbjsiPio3LiBHcmFmaWNhciBSZXN1bHRhZG9zIGRlIHNlbnRpbWllbnRvczwvc3Bhbj4qDQoNCmBgYHtyfQ0Kc2VjdWVuY2lhX2hpbW5vIDwtIChoaW1ub21leCRuZWdhdGl2ZSotMSkraGltbm9tZXgkcG9zaXRpdmUNCnNpbXBsZV9wbG90KHNlY3VlbmNpYV9oaW1ubykNCmBgYA0KDQoNCg==