ANÁLISIS DE SENTIMIENTOS

El análisis de sentimientos o minería 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álisis mostrará el resultado en 8 emociones básicas y 2 sentimientos

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)

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

LLAMAR LIBRERÍAS

# install.packages("syuzhet") 
# install.packages("RColorBrewer") 

library(syuzhet)
library(RColorBrewer)

CARGAR EL TEXTO

texto_cadena <-read.delim("C:\\Users\\luisa\\Documents\\R LUISA\\MODULO 4\\triste.txt",header=FALSE)
#View(texto_cadena)

TOKENIZAR TEXTO

texto_palabras <- get_tokens(texto_cadena)

EXPLORAR TEXTO

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

REALIZAR ANÁLISIS DE SENTIMIENTOS

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

#Idiomas disponibles: Spanish, English, French, German, Italian, Portuguese, entre otros. 


summary(sentimientos_df)
##      anger          anticipation    disgust             fear       
##  Min.   :0.00000   Min.   :0     Min.   :0.00000   Min.   :0.0000  
##  1st Qu.:0.00000   1st Qu.:0     1st Qu.:0.00000   1st Qu.:0.0000  
##  Median :0.00000   Median :0     Median :0.00000   Median :0.0000  
##  Mean   :0.02186   Mean   :0     Mean   :0.03825   Mean   :0.0765  
##  3rd Qu.:0.00000   3rd Qu.:0     3rd Qu.:0.00000   3rd Qu.:0.0000  
##  Max.   :1.00000   Max.   :0     Max.   :1.00000   Max.   :2.0000  
##       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.03279   Mean   :0.2077   Mean   :0   Mean   :0   Mean   :0.1967  
##  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.04372  
##  3rd Qu.:0.00000  
##  Max.   :1.00000
head(sentimientos_df)
##   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
#Un número grande significa que hay una emoción más fuerte

GRAFICAR RESULTADOS DE EMOCIONES

barplot(
  colSums(prop.table(sentimientos_df[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"
)

PROFUNDIZAR ANÁLISIS DE EMOCIONES

palabras_tristeza <- texto_palabras[sentimientos_df$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

GRAFICAR RESULTADOS DE SENTIMIENTOS

secuencia_sentimientos <-(sentimientos_df$negative*-1)+sentimientos_df$positive
simple_plot(secuencia_sentimientos)

ANÁLISIS DE SENTIMIENTOS-HIMNO MEXICANO

LLAMAR LIBRERÍAS

# install.packages("syuzhet") 
# install.packages("RColorBrewer") 

library(syuzhet)
library(RColorBrewer)

CARGAR EL TEXTO

texto_himno <-read.delim("C:\\Users\\luisa\\Documents\\R LUISA\\MODULO 4\\himnomexicano.txt",header=FALSE)
#View(texto_himno)

TOKENIZAR TEXTO

texto_palabras1 <- get_tokens(texto_himno)

EXPLORAR TEXTO

head(texto_palabras1)
## [1] "c"           "mexicanos"   "u2029al"     "u2029grito"  "u2029de"    
## [6] "u2029guerra"
length(texto_palabras1)
## [1] 285

REALIZAR ANÁLISIS DE SENTIMIENTOS

sentimientos1_df <- get_nrc_sentiment(texto_palabras1,language="spanish")

#Idiomas disponibles: Spanish, English, French, German, Italian, Portuguese, entre otros. 


summary(sentimientos1_df)
##      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.06667   Mean   :0.02456   Mean   :0.01754   Mean   :0.08772  
##  3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.00000  
##  Max.   :2.00000   Max.   :2.00000   Max.   :1.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.03509   Mean   :0.05614   Mean   :0.02105   Mean   :0.04211  
##  3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.00000  
##  Max.   :2.00000   Max.   :1.00000   Max.   :2.00000   Max.   :2.00000  
##     negative         positive      
##  Min.   :0.0000   Min.   :0.00000  
##  1st Qu.:0.0000   1st Qu.:0.00000  
##  Median :0.0000   Median :0.00000  
##  Mean   :0.1018   Mean   :0.09474  
##  3rd Qu.:0.0000   3rd Qu.:0.00000  
##  Max.   :2.0000   Max.   :2.00000
head(sentimientos1_df)
##   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
#Un número grande significa que hay una emoción más fuerte

GRAFICAR RESULTADOS DE EMOCIONES

barplot(
  colSums(prop.table(sentimientos1_df[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 HIMNO NACIONAL MEXICANO",
  xlab= "EMOCIONES"
)

PROFUNDIZAR ANÁLISIS DE EMOCIONES

palabras_fear <- texto_palabras1[sentimientos1_df$fear>0]
palabras_fear_orden <-sort(table(unlist(palabras_fear)),
decreasing = TRUE)
head(palabras_fear_orden,n=10)
## 
##  u2029guerra       guerra   u2029grito  u2029sangre       sangre u2029destino 
##            5            3            2            2            1            1 
##    u2029dios u2029enemigo 
##            1            1

GRAFICAR RESULTADOS DE SENTIMIENTOS

secuencia_sentimientos1<-(sentimientos1_df$negative*-1)+sentimientos1_df$positive
simple_plot(secuencia_sentimientos1)

LS0tDQp0aXRsZTogIkFjdGl2aWRhZCA0LjUgRU1PQ0lPTkFMIg0KYXV0aG9yOiAiTHVpc2EgQmVsdHLDoW4gQTAxNTcwNjkwIg0KZGF0ZTogIjIwMjMtMDktMjUiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiAieWV0aSINCiAgICBoaWdobGlnaHQ6ICJ0YW5nbyINCi0tLQ0KPGNlbnRlcj4gDQojIyA8c3BhbiBzdHlsZSA9ImNvbG9yOnBpbms7Ij5BTsOBTElTSVMgREUgU0VOVElNSUVOVE9TPC9zcGFuPg0KDQogIDxjZW50ZXI+DQohW10oQzpcXFVzZXJzXFxsdWlzYVxcRG9jdW1lbnRzXFxSIExVSVNBXFxNT0RVTE8gNFxcc2VudGltaWVudG9zLmpwZWcpDQoNCg0KRWwgKiphbsOhbGlzaXMgZGUgc2VudGltaWVudG9zIG8gbWluZXLDrWEgZGUgb3BpbmnDs24qKiwgZXMgdXRpbGl6YWRvIHBhcmEgZXh0cmFlciBkZSBmb3JtYSBhdXRvbcOhdGljYSBpbmZvcm1hY2nDs24gc29icmUgbGEgY29ubm90YWNpw7NuIHBvc2l0aXZhIG8gbmVnYXRpdmEgZGVsIGxlbmd1YWplIGRlIHVuIGRvY3VtZW50by4gDQoNCkVsIGFuw6FsaXNpcyBtb3N0cmFyw6EgZWwgcmVzdWx0YWRvIGVuICoqOCBlbW9jaW9uZXMgYsOhc2ljYXMgeSAyIHNlbnRpbWllbnRvcyoqDQoNCjEuQWxlZ3LDrWEgKGpveSkgICANCjIuVHJpc3RlemEgKHNhZG5lc3MpICAgIA0KMy5JcmEgKGFuZ2VyKSAgIA0KNC5Tb3JwcmVzYSAoc3VycHJpc2UpICAgDQo1LkFzY28gKGRpc2d1c3QpICAgIA0KNi4gTWllZG8gKGZlYXIpICAgDQo3LkFudGljaXBhY2nDs24gKGFudGljaXBhdGlvbikgICANCjguQ29uZmlhbnphICh0cnVzdCkgICANCg0KDQogICoqU2VudGltaWVudG9zOioqICAgDQogIDEuUG9zaXRpdm8gKHBvc2l0aXZlKSAgIA0KICAyLk5lZ2F0aXZvIChuZWdhdGl2ZSkgICANCg0KPGNlbnRlcj4gDQojIyA8c3BhbiBzdHlsZSA9ImNvbG9yOnBpbms7Ij5MTEFNQVIgTElCUkVSw41BUzwvc3Bhbj4NCg0KYGBge3J9DQojIGluc3RhbGwucGFja2FnZXMoInN5dXpoZXQiKSANCiMgaW5zdGFsbC5wYWNrYWdlcygiUkNvbG9yQnJld2VyIikgDQoNCmxpYnJhcnkoc3l1emhldCkNCmxpYnJhcnkoUkNvbG9yQnJld2VyKQ0KYGBgDQoNCjxjZW50ZXI+IA0KIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjpwaW5rOyI+Q0FSR0FSIEVMIFRFWFRPPC9zcGFuPg0KDQpgYGB7cn0NCnRleHRvX2NhZGVuYSA8LXJlYWQuZGVsaW0oIkM6XFxVc2Vyc1xcbHVpc2FcXERvY3VtZW50c1xcUiBMVUlTQVxcTU9EVUxPIDRcXHRyaXN0ZS50eHQiLGhlYWRlcj1GQUxTRSkNCiNWaWV3KHRleHRvX2NhZGVuYSkNCmBgYA0KDQo8Y2VudGVyPiANCiMjIDxzcGFuIHN0eWxlID0iY29sb3I6cGluazsiPlRPS0VOSVpBUiBURVhUTzwvc3Bhbj4NCg0KYGBge3J9DQp0ZXh0b19wYWxhYnJhcyA8LSBnZXRfdG9rZW5zKHRleHRvX2NhZGVuYSkNCmBgYA0KDQoNCjxjZW50ZXI+IA0KIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjpwaW5rOyI+RVhQTE9SQVIgVEVYVE88L3NwYW4+DQoNCmBgYHtyfQ0KaGVhZCh0ZXh0b19wYWxhYnJhcykNCmxlbmd0aCh0ZXh0b19wYWxhYnJhcykNCmBgYA0KPGNlbnRlcj4gDQojIyA8c3BhbiBzdHlsZSA9ImNvbG9yOnBpbms7Ij5SRUFMSVpBUiBBTsOBTElTSVMgREUgU0VOVElNSUVOVE9TPC9zcGFuPg0KDQpgYGB7cn0NCnNlbnRpbWllbnRvc19kZiA8LSBnZXRfbnJjX3NlbnRpbWVudCh0ZXh0b19wYWxhYnJhcyxsYW5ndWFnZT0ic3BhbmlzaCIpDQoNCiNJZGlvbWFzIGRpc3BvbmlibGVzOiBTcGFuaXNoLCBFbmdsaXNoLCBGcmVuY2gsIEdlcm1hbiwgSXRhbGlhbiwgUG9ydHVndWVzZSwgZW50cmUgb3Ryb3MuIA0KDQoNCnN1bW1hcnkoc2VudGltaWVudG9zX2RmKQ0KaGVhZChzZW50aW1pZW50b3NfZGYpDQojVW4gbsO6bWVybyBncmFuZGUgc2lnbmlmaWNhIHF1ZSBoYXkgdW5hIGVtb2Npw7NuIG3DoXMgZnVlcnRlDQpgYGANCjxjZW50ZXI+IA0KIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjpwaW5rOyI+R1JBRklDQVIgUkVTVUxUQURPUyBERSBFTU9DSU9ORVM8L3NwYW4+DQoNCmBgYHtyfQ0KYmFycGxvdCgNCiAgY29sU3Vtcyhwcm9wLnRhYmxlKHNlbnRpbWllbnRvc19kZlsxOjhdKSksDQogIHNwYWNlPSAwLjIsDQogIGhvcml6PSBGQUxTRSwNCiAgbGFzID0xLA0KICBjZXgubmFtZXMgPSAwLjcsDQogIGNvbD0gYnJld2VyLnBhbChuPTgsbmFtZT0iU2V0MyIpLA0KICBtYWluPSAiQU7DgUxJU0lTIERFIFNFTlRJTUlFTlRPUyBERSBMQSBDQU5DScOTTiBFTCBUUklTVEUiLA0KICB4bGFiPSAiRU1PQ0lPTkVTIg0KKQ0KYGBgDQoNCjxjZW50ZXI+IA0KIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjpwaW5rOyI+UFJPRlVORElaQVIgQU7DgUxJU0lTIERFIEVNT0NJT05FUzwvc3Bhbj4NCmBgYHtyfQ0KcGFsYWJyYXNfdHJpc3RlemEgPC0gdGV4dG9fcGFsYWJyYXNbc2VudGltaWVudG9zX2RmJHNhZG5lc3M+MF0NCnBhbGFicmFzX3RyaXN0ZXphX29yZGVuIDwtc29ydCh0YWJsZSh1bmxpc3QocGFsYWJyYXNfdHJpc3RlemEpKSwNCmRlY3JlYXNpbmcgPSBUUlVFKQ0KaGVhZChwYWxhYnJhc190cmlzdGV6YV9vcmRlbixuPTEwKQ0KYGBgDQo8Y2VudGVyPiANCiMjIDxzcGFuIHN0eWxlID0iY29sb3I6cGluazsiPkdSQUZJQ0FSIFJFU1VMVEFET1MgREUgU0VOVElNSUVOVE9TPC9zcGFuPg0KYGBge3J9DQpzZWN1ZW5jaWFfc2VudGltaWVudG9zIDwtKHNlbnRpbWllbnRvc19kZiRuZWdhdGl2ZSotMSkrc2VudGltaWVudG9zX2RmJHBvc2l0aXZlDQpzaW1wbGVfcGxvdChzZWN1ZW5jaWFfc2VudGltaWVudG9zKQ0KYGBgDQoNCjxjZW50ZXI+IA0KIyMgPHNwYW4gc3R5bGUgPSJjb2xvcjpwdXJwbGU7Ij5BTsOBTElTSVMgREUgU0VOVElNSUVOVE9TLUhJTU5PIE1FWElDQU5PPC9zcGFuPg0KDQogPGNlbnRlcj4NCiFbXShDOlxcVXNlcnNcXGx1aXNhXFxEb2N1bWVudHNcXFIgTFVJU0FcXE1PRFVMTyA0XFxtZXhpY28uanBnKQ0KPGNlbnRlcj4gDQojIyA8c3BhbiBzdHlsZSA9ImNvbG9yOnB1cnBsZTsiPkxMQU1BUiBMSUJSRVLDjUFTPC9zcGFuPg0KDQpgYGB7cn0NCiMgaW5zdGFsbC5wYWNrYWdlcygic3l1emhldCIpIA0KIyBpbnN0YWxsLnBhY2thZ2VzKCJSQ29sb3JCcmV3ZXIiKSANCg0KbGlicmFyeShzeXV6aGV0KQ0KbGlicmFyeShSQ29sb3JCcmV3ZXIpDQpgYGANCg0KPGNlbnRlcj4gDQojIyA8c3BhbiBzdHlsZSA9ImNvbG9yOnB1cnBsZTsiPkNBUkdBUiBFTCBURVhUTzwvc3Bhbj4NCg0KYGBge3J9DQp0ZXh0b19oaW1ubyA8LXJlYWQuZGVsaW0oIkM6XFxVc2Vyc1xcbHVpc2FcXERvY3VtZW50c1xcUiBMVUlTQVxcTU9EVUxPIDRcXGhpbW5vbWV4aWNhbm8udHh0IixoZWFkZXI9RkFMU0UpDQojVmlldyh0ZXh0b19oaW1ubykNCmBgYA0KDQo8Y2VudGVyPiANCiMjIDxzcGFuIHN0eWxlID0iY29sb3I6cHVycGxlOyI+VE9LRU5JWkFSIFRFWFRPPC9zcGFuPg0KDQpgYGB7cn0NCnRleHRvX3BhbGFicmFzMSA8LSBnZXRfdG9rZW5zKHRleHRvX2hpbW5vKQ0KYGBgDQo8Y2VudGVyPiANCiMjIDxzcGFuIHN0eWxlID0iY29sb3I6cHVycGxlOyI+RVhQTE9SQVIgVEVYVE88L3NwYW4+DQoNCmBgYHtyfQ0KaGVhZCh0ZXh0b19wYWxhYnJhczEpDQpsZW5ndGgodGV4dG9fcGFsYWJyYXMxKQ0KYGBgDQo8Y2VudGVyPiANCiMjIDxzcGFuIHN0eWxlID0iY29sb3I6cHVycGxlOyI+UkVBTElaQVIgQU7DgUxJU0lTIERFIFNFTlRJTUlFTlRPUzwvc3Bhbj4NCg0KYGBge3J9DQpzZW50aW1pZW50b3MxX2RmIDwtIGdldF9ucmNfc2VudGltZW50KHRleHRvX3BhbGFicmFzMSxsYW5ndWFnZT0ic3BhbmlzaCIpDQoNCiNJZGlvbWFzIGRpc3BvbmlibGVzOiBTcGFuaXNoLCBFbmdsaXNoLCBGcmVuY2gsIEdlcm1hbiwgSXRhbGlhbiwgUG9ydHVndWVzZSwgZW50cmUgb3Ryb3MuIA0KDQoNCnN1bW1hcnkoc2VudGltaWVudG9zMV9kZikNCmhlYWQoc2VudGltaWVudG9zMV9kZikNCiNVbiBuw7ptZXJvIGdyYW5kZSBzaWduaWZpY2EgcXVlIGhheSB1bmEgZW1vY2nDs24gbcOhcyBmdWVydGUNCmBgYA0KPGNlbnRlcj4gDQojIyA8c3BhbiBzdHlsZSA9ImNvbG9yOnB1cnBsZTsiPkdSQUZJQ0FSIFJFU1VMVEFET1MgREUgRU1PQ0lPTkVTPC9zcGFuPg0KDQpgYGB7cn0NCmJhcnBsb3QoDQogIGNvbFN1bXMocHJvcC50YWJsZShzZW50aW1pZW50b3MxX2RmWzE6OF0pKSwNCiAgc3BhY2U9IDAuMiwNCiAgaG9yaXo9IEZBTFNFLA0KICBsYXMgPTEsDQogIGNleC5uYW1lcyA9IDAuNywNCiAgY29sPSBicmV3ZXIucGFsKG49OCxuYW1lPSJTZXQzIiksDQogIG1haW49ICJBTsOBTElTSVMgREUgU0VOVElNSUVOVE9TIEhJTU5PIE5BQ0lPTkFMIE1FWElDQU5PIiwNCiAgeGxhYj0gIkVNT0NJT05FUyINCikNCmBgYA0KDQo8Y2VudGVyPiANCiMjIDxzcGFuIHN0eWxlID0iY29sb3I6cHVycGxlOyI+UFJPRlVORElaQVIgQU7DgUxJU0lTIERFIEVNT0NJT05FUzwvc3Bhbj4NCmBgYHtyfQ0KcGFsYWJyYXNfZmVhciA8LSB0ZXh0b19wYWxhYnJhczFbc2VudGltaWVudG9zMV9kZiRmZWFyPjBdDQpwYWxhYnJhc19mZWFyX29yZGVuIDwtc29ydCh0YWJsZSh1bmxpc3QocGFsYWJyYXNfZmVhcikpLA0KZGVjcmVhc2luZyA9IFRSVUUpDQpoZWFkKHBhbGFicmFzX2ZlYXJfb3JkZW4sbj0xMCkNCmBgYA0KDQo8Y2VudGVyPiANCiMjIDxzcGFuIHN0eWxlID0iY29sb3I6cHVycGxlOyI+R1JBRklDQVIgUkVTVUxUQURPUyBERSBTRU5USU1JRU5UT1M8L3NwYW4+DQpgYGB7cn0NCnNlY3VlbmNpYV9zZW50aW1pZW50b3MxPC0oc2VudGltaWVudG9zMV9kZiRuZWdhdGl2ZSotMSkrc2VudGltaWVudG9zMV9kZiRwb3NpdGl2ZQ0Kc2ltcGxlX3Bsb3Qoc2VjdWVuY2lhX3NlbnRpbWllbnRvczEpDQpgYGA=