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:
- Alegria
- Tristeza
- Ira
- Sorpresa
- Asco
- Miedo
- Anticipacion
- Confianza
Sentimientos:
- Positivo
- Negativo
1. Instalar librerias
library(RColorBrewer)
library(syuzhet)
2. Cargar texto
texto_cadena <- read.delim("letratriste.txt", header=FALSE)
3. Tokenizar texto
texto_palabras <- get_tokens(texto_cadena)
4. Explorar texto
## [1] "c" "que" "triste" "fue" "decirnos" "adiós"
## [1] 175
5. Realizar analisis de
sentimientos
sentimientos_df <- get_nrc_sentiment(texto_palabras, language = "spanish")
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
## 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
6. Graficar Resultados de las
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 = "Analisis de sentimientos de la cancion El Triste",
xlab = "Emociones"
)

7. Realizar analisis de
sentimientos
palabras_tristeza <- texto_palabras[sentimientos_df$sadness >0]
palabras_tristeza_orden <- sort(table(unlist(palabras_tristeza)),
decreasing = TRUE)
head(palabras_tristeza_orden)
##
## triste dolor azul gris soledad
## 4 2 1 1 1
8. Graficar resultados de
sentimientos
secuencia_sentimientos <- (sentimientos_df$negative*-1)+sentimientos_df$positive
simple_plot(secuencia_sentimientos)

LS0tCnRpdGxlOiAiU2VudGltaWVudG9zIgphdXRob3I6ICJQYXRyaWNpbyBTYW5jaGV6IgpkYXRlOiAiMjAyMy0wOS0yNSIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRSVUUKICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUKICAgIHRoZW1lOiAic2ltcGxleCIKICAgIGhpZ2hsaWdodDogInB5Z21lbnRzIgotLS0KCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+QW5hbGlzaXMgZGUgU2VudGltaWVudG9zPC9zcGFuPgoKRWwgYW5hbGlzaXMgZGUgc2VudGltaWVudG9zIGVzIHV0aWxpemFkbyBwYXJhIGV4dHJhZXIgZGUgZm9ybWFyIGF1dG9tYXRpY2EgaW5mb3JtYWNpb24gc29icmUgbGEgY29ub3RhY2lvbiBwb3NpdGl2YSBvIG5lZ2F0aXZhIGRlbCBsZW5ndWFqZSBkZSB1biBkb2N1bWVudG8uCgpFbCBhbmFsaXNpcyBtb3N0cmFyYSBlbCByZXN1bHRhZG8gZW4gOCBlbW9jaW9uZXMgYmFzaWNhcyB5IDIgc2VudGltaWVudG9zLgoKRW1vY2lvbmVzIGJhc2ljYXM6CgoxLiBBbGVncmlhCjIuIFRyaXN0ZXphCjMuIElyYQo0LiBTb3JwcmVzYQo1LiBBc2NvCjYuIE1pZWRvCjcuIEFudGljaXBhY2lvbgo4LiBDb25maWFuemEKClNlbnRpbWllbnRvczoKCjEuIFBvc2l0aXZvCjIuIE5lZ2F0aXZvCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij4xLiBJbnN0YWxhciBsaWJyZXJpYXM8L3NwYW4+CmBgYHtyfQpsaWJyYXJ5KFJDb2xvckJyZXdlcikKbGlicmFyeShzeXV6aGV0KQpgYGAKCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPjIuIENhcmdhciB0ZXh0bzwvc3Bhbj4KCmBgYHtyfQp0ZXh0b19jYWRlbmEgPC0gcmVhZC5kZWxpbSgibGV0cmF0cmlzdGUudHh0IiwgaGVhZGVyPUZBTFNFKQpgYGAKCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPjMuIFRva2VuaXphciB0ZXh0bzwvc3Bhbj4KCmBgYHtyfQp0ZXh0b19wYWxhYnJhcyA8LSBnZXRfdG9rZW5zKHRleHRvX2NhZGVuYSkKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij40LiBFeHBsb3JhciB0ZXh0bzwvc3Bhbj4KYGBge3J9CmhlYWQodGV4dG9fcGFsYWJyYXMpCmxlbmd0aCh0ZXh0b19wYWxhYnJhcykKYGBgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij41LiBSZWFsaXphciBhbmFsaXNpcyBkZSBzZW50aW1pZW50b3M8L3NwYW4+CmBgYHtyfQpzZW50aW1pZW50b3NfZGYgPC0gZ2V0X25yY19zZW50aW1lbnQodGV4dG9fcGFsYWJyYXMsIGxhbmd1YWdlID0gInNwYW5pc2giKQpoZWFkKHNlbnRpbWllbnRvc19kZikKc3VtbWFyeShzZW50aW1pZW50b3NfZGYpCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+Ni4gR3JhZmljYXIgUmVzdWx0YWRvcyBkZSBsYXMgZW1vY2lvbmVzPC9zcGFuPgpgYGB7cn0KYmFycGxvdCgKICBjb2xTdW1zKHByb3AudGFibGUoc2VudGltaWVudG9zX2RmWywxOjhdKSksCiAgc3BhY2UgPSAwLjIsCiAgaG9yaXogPSBGQUxTRSwKICBsYXMgPSAxLAogIGNleC5uYW1lcyA9IDAuNywKICBjb2wgPSBicmV3ZXIucGFsKG49OCwgbmFtZT0iU2V0MyIpLAogIG1haW4gPSAiQW5hbGlzaXMgZGUgc2VudGltaWVudG9zIGRlIGxhIGNhbmNpb24gRWwgVHJpc3RlIiwKICB4bGFiID0gIkVtb2Npb25lcyIKKQpgYGAKCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPjcuIFJlYWxpemFyIGFuYWxpc2lzIGRlIHNlbnRpbWllbnRvczwvc3Bhbj4KYGBge3J9CnBhbGFicmFzX3RyaXN0ZXphIDwtIHRleHRvX3BhbGFicmFzW3NlbnRpbWllbnRvc19kZiRzYWRuZXNzID4wXQpwYWxhYnJhc190cmlzdGV6YV9vcmRlbiA8LSBzb3J0KHRhYmxlKHVubGlzdChwYWxhYnJhc190cmlzdGV6YSkpLApkZWNyZWFzaW5nID0gVFJVRSkKCmhlYWQocGFsYWJyYXNfdHJpc3RlemFfb3JkZW4pCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+OC4gR3JhZmljYXIgcmVzdWx0YWRvcyBkZSBzZW50aW1pZW50b3M8L3NwYW4+CmBgYHtyfQpzZWN1ZW5jaWFfc2VudGltaWVudG9zIDwtIChzZW50aW1pZW50b3NfZGYkbmVnYXRpdmUqLTEpK3NlbnRpbWllbnRvc19kZiRwb3NpdGl2ZQoKc2ltcGxlX3Bsb3Qoc2VjdWVuY2lhX3NlbnRpbWllbnRvcykKYGBgCgo=