metadata
tags:
- opinion-classifier
- text-classification
- transformers
- gradio
Clasificador de Opiniones Multietiqueta
Este m贸dulo utiliza modelos de Transformers para preprocesar y clasificar opiniones en m煤ltiples etiquetas como queja, sugerencia, agradecimiento, felicitaci贸n, ninguna y cambio positivo personal.
Descripci贸n
Explica brevemente qu茅 hace tu modelo, los datos en los que fue entrenado, y cualquier otra informaci贸n relevante.
C贸mo usar
Aqu铆 hay un ejemplo de c贸mo cargar y usar el modelo:
import pickle
from huggingface_hub import hf_hub_download
import ftfy
import re
import torch
import numpy as np
from transformers import DistilBertTokenizer, DistilBertModel
def corregir_codificacion(texto):
if isinstance(texto, str):
return ftfy.fix_text(texto)
return texto
def preprocesar_texto(texto):
texto = texto.lower()
texto = re.sub(r'\d+', '', texto)
texto = re.sub(r'[^\w\s]', '', texto)
return texto
class ClasificadorOpiniones:
def __init__(self):
model_path = hf_hub_download(repo_id="begoach1/opinion_classifier", filename="modelo_clasificador_reentrenado_lp_ros.pkl")
self.clf_combined = pickle.load(open(model_path, 'rb'))
self.tokenizer = DistilBertTokenizer.from_pretrained('distilbert-base-multilingual-cased')
self.model = DistilBertModel.from_pretrained('distilbert-base-multilingual-cased')
def clasificar_opinion(self, texto):
texto = corregir_codificacion(texto)
texto = preprocesar_texto(texto)
tokens = self.tokenizer(texto, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
outputs = self.model(**tokens)
encoded_text = outputs.last_hidden_state[:, 0, :].numpy()
prediccion = self.clf_combined.predict(encoded_text)
etiquetas = ['queja', 'sugerencia', 'agradecimiento', 'felicitacion', 'ninguna', 'cambio_positivo_personal']
resultado = dict(zip(etiquetas, prediccion[0]))
return resultado
clasificador = ClasificadorOpiniones()
texto = "me gust贸 mucho, tengo m谩s confianza en m铆 misma, 隆gracias!"
print(clasificador.clasificar_opinion(texto))