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)
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:
Publicación traducida automáticamente
Artículo escrito por prakharr0y y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA