Analisis de Sentimientos

El analisis de sentimientos es utilizado para extraer de formar automatica informacion sobre la conotacion positiva o negativa del lenguaje de un documento.

El analisis mostrara el resultado en 8 emociones basicas y 2 sentimientos.

Emociones basicas:

  1. Alegria
  2. Tristeza
  3. Ira
  4. Sorpresa
  5. Asco
  6. Miedo
  7. Anticipacion
  8. Confianza

Sentimientos:

  1. Positivo
  2. Negativo

1. Instalar librerias

library(RColorBrewer)
library(syuzhet)

2. Cargar texto

himno_cadena <- read.delim("himnonacional.txt", header=FALSE)

3. Tokenizar texto

himno_palabras <- get_tokens(himno_cadena)

4. Explorar texto

head(himno_palabras)
## [1] "c"         "mexicanos" "al"        "grito"     "de"        "guerra"
length(himno_palabras)
## [1] 242

5. Realizar analisis de sentimientos

sentimientos_himno_df <- get_nrc_sentiment(himno_palabras, language = "spanish")
head(sentimientos_himno_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
summary(sentimientos_himno_df)
##      anger          anticipation        disgust             fear       
##  Min.   :0.00000   Min.   :0.00000   Min.   :0.00000   Min.   :0.0000  
##  1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.0000  
##  Median :0.00000   Median :0.00000   Median :0.00000   Median :0.0000  
##  Mean   :0.07438   Mean   :0.02893   Mean   :0.02066   Mean   :0.1033  
##  3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.0000  
##  Max.   :2.00000   Max.   :2.00000   Max.   :1.00000   Max.   :2.0000  
##       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.04132   Mean   :0.06198   Mean   :0.02479   Mean   :0.04545  
##  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.1198   Mean   :0.09091  
##  3rd Qu.:0.0000   3rd Qu.:0.00000  
##  Max.   :2.0000   Max.   :2.00000

6. Graficar Resultados de las emociones

barplot(
  colSums(prop.table(sentimientos_himno_df[,1:8])),
  space = 0.2,
  horiz = FALSE,
  las = 1,
  cex.names = 0.7,
  col = brewer.pal(n=8, name="Set3"),
  main = "Analisis de sentimientos de la cancion El Triste",
  xlab = "Emociones"
)

## 7. Graficar Resultados de las emociones

himno_tristeza <- himno_palabras[sentimientos_himno_df$sadness >0]
himno_tristeza_orden <- sort(table(unlist(himno_tristeza)),
decreasing = TRUE)

head(himno_tristeza_orden)
## 
##  guerra  sangre   grito destino soldado 
##       8       3       2       1       1

7. Graficar resultados de sentimientos

secuencia_himno_sentimientos <- (sentimientos_himno_df$negative*-1)+sentimientos_himno_df$positive

simple_plot(secuencia_himno_sentimientos)