Modelado de aspectos en análisis de sentimiento

Prerrequisito: Análisis de sentimiento 

Antes de entrar en los detalles del modelado de aspectos, primero comprendamos brevemente qué es el análisis de sentimientos con un ejemplo de la vida real. 

Análisis de Sentimiento (SA): 

Es una técnica para distinguir el sentimiento de una persona hacia algo o alguien en base a un texto que ha escrito sobre ello. Puede ser positivo, negativo o neutro. Consideremos un ejemplo de la vida real. 

Vemos millones de tweets en Twitter a diario. Aquí, podemos construir un modelo de análisis de sentimientos para determinar si su actitud hacia un tema en particular es feliz, triste, enojado o neutral. Las limitaciones actuales de esta técnica son la detección del sarcasmo. 

Modelado de aspectos en análisis de sentimiento (ABSA): 

El modelado de aspectos es una técnica avanzada de análisis de texto que se refiere al proceso de dividir la entrada de texto en categorías de aspecto y sus términos de aspecto y luego identificar el sentimiento detrás de cada aspecto en la entrada de texto completa. Los dos términos clave en este modelo son:

  • Sentimientos: Una crítica positiva o negativa sobre un aspecto en particular
  • Aspectos: la categoría, característica o tema que se está observando.

Requisito

En el mundo de los negocios, siempre existe una gran necesidad de identificarse para observar el sentimiento de las personas hacia un producto o servicio en particular para garantizar su interés continuo en su producto comercial. ABSA cumple este propósito identificando el sentimiento detrás de cada categoría de aspecto como comida, ubicación, ambiente, etc. 

Esto ayuda a las empresas a realizar un seguimiento del sentimiento cambiante del cliente en cada campo de su negocio. 

ABSA Arquitectura

El modelo ABSA incluye los siguientes pasos para obtener el resultado deseado. 

Step 1 -   Consider the input text corpus and pre-process the dataset. 
   
Step 2 -   Create Word Embeddings of the text input. (i.e. vectorize the text input 
           and create tokens.)
           
Step 3.a - Aspect Terms Extraction -> Aspect Categories Model 
 
Step 3.b - Sentiment Extraction -> Sentiment Model 
 
Step 4 -   Combine 3.a and 3.b to create to get Aspect Based Sentiment.(OUTPUT)

Intuición:

Aspecto: Se define como un concepto en el que se basa una opinión o un sentimiento. Pongamos un ejemplo para una mejor comprensión. 

Suponga que una empresa crea una aplicación web que funciona lentamente pero ofrece resultados confiables con alta precisión. Aquí, dividimos este texto en dos aspectos. » La aplicación web funciona lento » y » resultados confiables con alta precisión «. Al observar las dos categorías de aspectos, puede concluir fácilmente que tienen un sentimiento diferente asociado con ellas. (Como se muestra en la figura 1)

Fig. 1: diferentes sentimientos con diferentes aspectos

Implementación de código:

La siguiente implementación de código realiza el proceso de extracción de aspectos y lo asocia con un sentimiento particular para que esté listo para el entrenamiento.

Python3

# Importing the required libraries
import spacy
sp = spacy.load("en_core_web_sm")
from textblob import TextBlob
  
# Creating a list of positive and negative sentences.
mixed_sen = [
  'This chocolate truffle cake is really tasty',
  'This party is amazing!',
  'My mom is the best!',
  'App response is very slow!'
  'The trip to India was very enjoyable'
]
  
# An empty list for obtaining the extracted aspects
# from sentences. 
ext_aspects = []
  
# Performing Aspect Extraction
for sen in mixed_sen:
  important = sp(sentence)
  descriptive_item = ''
  target = ''
  for token in important:
    if token.dep_ == 'nsubj' and token.pos_ == 'NOUN':
      target = token.text
    if token.pos_ == 'ADJ':
      added_terms = ''
      for mini_token in token.children:
        if mini_token.pos_ != 'ADV':
          continue
        added_terms += mini_token.text + ' '
      descriptive_item = added_terms + token.text
  ext_aspects.append({'aspect': target,
    'description': descriptive_item})
  
print("ASPECT EXTRACTION\n")
print(ext_aspects)
  
  
for aspect in ext_aspects:
  aspect['sentiment'] = TextBlob(aspect['description']).sentiment
  
print("\n")
print("SENTIMENT ASSOCIATION\n")
print(ext_aspects)

Producción:

SALIDA OBTENIDA

Publicación traducida automáticamente

Artículo escrito por prakharr0y y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *