--- 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: ```python 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))