La análisis de sentimientos es uno de los campos importantes del procesamiento del lenguaje natural que analiza automáticamente las emociones u opiniones de los datos de texto. En los últimos años, el modelo de aprendizaje profundo BERT (Representaciones de Codificador Bidireccional de Transformadores) ha demostrado un alto rendimiento en tareas de procesamiento del lenguaje natural y ha desempeñado un papel importante en el análisis de sentimientos. En este blog, exploraremos cómo realizar un análisis de sentimientos de manera sencilla utilizando BERT.
1. Procesamiento del Lenguaje Natural (NLP) y Análisis de Sentimientos (Sentiment Analysis)
El procesamiento del lenguaje natural es un campo que permite a las máquinas comprender y procesar el lenguaje humano, incluyendo la comprensión y el procesamiento de datos de texto.
El análisis de sentimientos es un subcampo importante del procesamiento del lenguaje natural que implica determinar si un texto dado tiene emociones positivas, negativas o neutrales.
El análisis de sentimientos se utiliza en diversas áreas, como en la gestión de la reputación de productos en negocios y en la adaptación de estrategias al comprender las opiniones de los clientes.
Además, en el ámbito financiero, se puede utilizar el análisis de sentimientos para predecir el sentimiento del mercado y tomar decisiones de inversión, o para mejorar la calidad del servicio analizando los comentarios de los clientes en el servicio al cliente.
2. ¿Qué es BERT?
BERT es un modelo de lenguaje basado en la arquitectura Transformer desarrollado por Google, que puede comprender las palabras y el contexto dentro de una oración y procesar eficazmente datos de texto. BERT es un modelo pre-entrenado que se ha aplicado con éxito en diversas tareas de procesamiento del lenguaje natural después de ser entrenado en grandes conjuntos de datos de texto. A continuación, veremos cómo utilizar BERT para realizar un análisis de sentimientos de texto de manera sencilla.
3. Realizando Análisis de Sentimientos con BERT
3.1. Instalación de Bibliotecas
Primero, instalamos la biblioteca Transformers utilizando el comando pip.
!pip install transformers
A continuación, importamos las bibliotecas necesarias.
import torch
from transformers import BertTokenizer, BertForSequenceClassification
import torch.nn.functional as F
El modelo "kykim/bert-kor-base" que utilizaremos es un modelo BERT en coreano, entrenado en coreano para la investigación de procesamiento del lenguaje natural en coreano. 'BertForSequenceClassification' es una clase de modelo para ajustar finamente el modelo BERT a tareas de clasificación de secuencias de texto.
3.2. Especificación del Tokenizador
A continuación, especificamos el tokenizador. La mayoría de los modelos de transformer no pueden recibir texto como entrada directa, sino que requieren la tokenización del texto como entrada. Utilizando la función BertTokenizer.from_pretrained, podemos obtener automáticamente el tokenizador necesario para cada modelo.
model_name = "kykim/bert-kor-base"
model = BertForSequenceClassification.from_pretrained(model_name, num_labels=2)
tokenizer = BertTokenizer.from_pretrained(model_name)
3.3. Realización de la Clasificación de Emociones mediante una Función
Luego, definimos la función 'classify_emotion' que toma datos de texto como entrada y realiza el análisis de sentimientos. El texto de entrada se tokeniza utilizando el tokenizador especificado anteriormente, se realiza una predicción con el modelo, se convierte el resultado de la predicción en probabilidades utilizando la función softmax, y se selecciona la clase (emoción) con la probabilidad más alta como resultado utilizando la función argmax.
def classify_emotion(text):
# 텍스트 토큰화 및 패딩
tokens = tokenizer(text, padding=True, truncation=True, return_tensors="pt")
# 예측 수행
with torch.no_grad():
prediction = model(**tokens)
# 예측 결과를 바탕으로 감정 출력
prediction = F.softmax(prediction.logits, dim=1)
output = prediction.argmax(dim=1).item()
labels = ["부정적", "긍정적"]
print(f'[{labels[output]}]\n')
3.4. Mostrando los Resultados del Análisis de Sentimientos
Finalmente, utilizando la función 'predict_sentence', ingresamos una oración desde el usuario, llamamos a la función 'classify_emotion' para realizar el análisis de sentimientos y mostramos los resultados.
def predict_sentence():
input_sentence = input('문장을 입력해 주세요: ')
classify_emotion(input_sentence)
predict_sentence()
Al ejecutar el código anterior, podemos realizar un análisis de sentimientos como se muestra en la imagen.
4. Conclusión
Al utilizar el modelo BERT base, podemos obtener resultados de análisis de sentimientos de manera rápida y sencilla. Sin embargo, este modelo tiene limitaciones en cuanto a precisión.
Para superar estas limitaciones, se puede aplicar el Ajuste Fino (Fine-Tuning) del modelo base para adaptarlo a tareas específicas. El Ajuste Fino es un proceso que ajusta los pesos del modelo para que sea más adecuado para un dominio o tarea específica y aumente la precisión.
Por ejemplo, al entrenar el modelo BERT con un conjunto de datos relacionados con emociones para realizar análisis de sentimientos, se pueden obtener resultados más precisos.
Por lo tanto, se recomienda aplicar el Ajuste Fino si se busca una mayor precisión.
¡Lee también este artículo!
Recopilación de Datos, Ahora Automatizada
Comienza en 5 minutos sin necesidad de programar · Experiencia en la extracción de datos de más de 5,000 sitios web




