Este artículo es un análisis de sentimientos de Facebook utilizando Vader, hoy en día muchas instituciones gubernamentales y empresas necesitan conocer los comentarios y comentarios de sus clientes en las redes sociales como Facebook.
¿Qué es el análisis de sentimientos?
El análisis de sentimientos es una de las mejores ramas modernas del aprendizaje automático, que se utiliza principalmente para analizar los datos con el fin de conocer la propia idea, hoy en día muchas empresas lo utilizan para conocer los comentarios de los clientes.
¿Por qué deberíamos utilizar el análisis de sentimientos?
- Marketing invaluable:
las empresas de análisis de sentimientos y los propietarios de productos pueden usar el análisis de sentimientos para conocer la demanda y la oferta de sus productos a través de comentarios y comentarios de los clientes.
- Identificar desenstringntes emocionales clave:
en psicología y otras instituciones de tratamiento médico, el análisis de sentimientos se puede utilizar para detectar si la emoción de las personas es normal o anormal y, en función del registro de datos, pueden decidir la salud de la persona.
- Política:
En el ámbito político, los candidatos a ser elegidos pueden utilizar el análisis de sentimiento para predecir su estatus político, para medir la aceptación de la gente. También se puede utilizar para predecir los resultados de las elecciones para las comisiones de las juntas electorales.
- Educación: las
universidades y otros institutos superiores, como los colegios, pueden usar el análisis de sentimientos para conocer los comentarios y comentarios de sus estudiantes, por lo tanto, pueden considerar revisar o mejorar su plan de estudios educativo.
Instalaciones en Anaconda
- NLTK: se utiliza para la comprensión del lenguaje natural humano.
Instalación usando el comando conda.
conda install -c anaconda nltk
- Instalación usando pip.
pip install nltk
- NumPy: es un paquete de python utilizado para métodos científicos y computacionales en python.
Instalación usando conda.
conda install -c conda-forge numpy
- Usando pipa.
pip install numpy
- Pandas: es un módulo de Python utilizado para el preprocesamiento y análisis de datos.
Instalación usando conda
conda install -c anaconda pandas
- Instalación usando pip.
pip install pandas
- Matplotlib: es un módulo de Python utilizado para la visualización de datos y el trazado 2D para la representación de datos.
Instalación usando conda.
conda install -c conda-forge matplotlib
- Instalación usando pip.
pip install matplotlib
Autenticación
Hay muchas formas de obtener comentarios de Facebook, estas son:
- API de gráficos de Facebook
- Descarga directa desde Facebook
- Descarga desde otros sitios de proveedores de conjuntos de datos
Entre los métodos anteriores, utilizamos la descarga del conjunto de datos de comentarios de Facebook del sitio web de Kaggle, que es el mejor proveedor de conjuntos de datos. Para el código que ya usamos kindle.txt para el análisis del comentario de kindle amazon facebook, puede usar su propio comentario de Facebook usando este código para analizar sus propios comentarios o crear un archivo en formato de texto y probarlo para simplificarlo.
A continuación se muestra la implementación.
Python3
import time import pandas as pd import numpy as np import matplotlib.pyplot as plt import nltk import io import unicodedata import numpy as np import re import string from numpy import linalg from nltk.sentiment.vader import SentimentIntensityAnalyzer from nltk.tokenize import sent_tokenize, word_tokenize from nltk.tokenize import PunktSentenceTokenizer from nltk.tokenize import PunktSentenceTokenizer from nltk.corpus import webtext from nltk.stem.porter import PorterStemmer from nltk.stem.wordnet import WordNetLemmatizer with open('kindle.txt', encoding ='ISO-8859-2') as f: text = f.read() sent_tokenizer = PunktSentenceTokenizer(text) sents = sent_tokenizer.tokenize(text) print(word_tokenize(text)) print(sent_tokenize(text)) porter_stemmer = PorterStemmer() nltk_tokens = nltk.word_tokenize(text) for w in nltk_tokens: print ("Actual: % s Stem: % s" % (w, porter_stemmer.stem(w))) wordnet_lemmatizer = WordNetLemmatizer() nltk_tokens = nltk.word_tokenize(text) for w in nltk_tokens: print ("Actual: % s Lemma: % s" % (w, wordnet_lemmatizer.lemmatize(w))) text = nltk.word_tokenize(text) print(nltk.pos_tag(text)) sid = SentimentIntensityAnalyzer() tokenizer = nltk.data.load('tokenizers / punkt / english.pickle') with open('kindle.txt', encoding ='ISO-8859-2') as f: for text in f.read().split('\n'): print(text) scores = sid.polarity_scores(text) for key in sorted(scores): print('{0}: {1}, '.format(key, scores[key]), end ='') print()
Producción:
here is the sample output of the code: ['i', 'love', 'my', 'kindle'] ['i love my kindle'] Actual: i Stem: i Actual: love Stem: love Actual: my Stem: my Actual: kindle Stem: kindl Actual: i Lemma: i Actual: love Lemma: love Actual: my Lemma: my Actual: kindle Lemma: kindle [('i', 'NN'), ('love', 'VBP'), ('my', 'PRP$'), ('kindle', 'NN')] i love my kindle compound: 0.6369, neg: 0.0, neu: 0.323, pos: 0.677,
Seguimos estos pasos principales en nuestro programa:
- Descargar (obtener) el comentario de Facebook del sitio de Kaggle y guardarlo como formato de texto.
- Preprocesamiento de los datos a través de las bibliotecas SkLearn y nltk. Primero tokenizamos los datos y luego, después de tokenizarlos, los derivamos y lematizamos.
- Analice los comentarios usando la biblioteca Vader. Clasifique cada comentario como positivo, negativo o neutral.
Ahora, intentemos entender el código anterior:
- Primero abrimos un archivo llamado kindle que se descarga del sitio de Kaggle y se guarda en el disco local.
con open(‘kindle.txt’, codificación=’ISO-8859-2′) como f:
- Después de abrir un archivo, preprocesamos el texto a través de tokenizar, derivar y luego lematizar:
- Tokenizar el texto, es decir, separar palabras del texto.
- Tokenizar el texto, es decir, separar palabras del texto.
sent_tokenizer = PunktSentenceTokenizer(texto)
sents = sent_tokenizer.tokenize(text)
print(word_tokenize(texto))
print(sent_tokenize(texto))
- Stemize y lematiza el texto para la normalización del texto:
1) Para stemize usamos la función PorterStemmer():
from nltk.stem.porter import PorterStemmer
porter_stemmer = PorterStemmer()
nltk_tokens = nltk.word_tokenize(text)
for w in nltk_tokens:
print (“Actual: %s Stem: %s” % (w, porter_stemmer.stem(w)))
- 2) Para lematizar usamos la función WordNetLemmatizer() :
from nltk.stem.wordnet import WordNetLemmatizer
wordnet_lemmatizer = WordNetLemmatizer()
nltk_tokens = nltk.word_tokenize(text)
for w en nltk_tokens:
print (“Actual: %s Lemma: %s” % (w, wordnet_lemmatizer.lemmatize(w)))
- Etiquetado POS (parte del discurso) de los tokens y seleccione solo características / tokens significativos como adjetivos, adverbios y verbos, etc.
text = nltk.word_tokenize(text) print(nltk.pos_tag(text))
- Pase los tokens a un analizador de intensidad de sentimiento que clasifica los comentarios de Facebook como positivos, negativos o neutrales.
Así es como funciona el analizador de sentimientos vader:
- VADER utiliza una combinación de un léxico de sentimientos, que es una lista de características léxicas (p. ej., palabras) que generalmente se etiquetan según su orientación semántica como positivas o negativas.
- El analizador de sentimientos no solo informa sobre la puntuación de positividad y negatividad, sino que también nos informa sobre qué tan positivo o negativo es un sentimiento.
- Luego, usamos el método polarity_scores() para obtener los índices de polaridad para la oración dada.
Luego, construimos la intensidad y la polaridad del comentario como:
sid = SentimentIntensityAnalyzer()
tokenizer = nltk.data.load(‘tokenizers/punkt/english.pickle’)
with open(‘kindle.txt’, encoding=’ISO-8859-2′) como f:
para texto en f. read().split(‘\n’):
print(text)
puntuaciones = sid.polarity_scores(text)
for key in sorted(scores):
print(‘{0}: {1}, ‘.format(key, puntuaciones [tecla]), fin=”)
imprimir()
- Entendamos qué es el código de opinión y cómo funciona VADER en la salida del código anterior:
i love my kindle compound: 0.6369, neg: 0.0, neu: 0.323, pos: 0.677
- Los puntajes Positivo (pos), Negativo (neg) y Neutral (neu) representan la proporción de texto que cae en estas categorías. Esto significa que nuestra oración fue calificada como 67% Positiva, 32% Neutral y 0% Negativa. Por lo tanto, todos estos deben sumar 1.
- La puntuación compuesta es una métrica que calcula la suma de todas las valoraciones del léxico que se han normalizado entre -1 (negativo extremo) y +1 (positivo extremo).
- Finalmente, se devuelven las puntuaciones de opinión de los comentarios.
Publicación traducida automáticamente
Artículo escrito por newsgebrehiwot2 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA