--- title: FinalProject emoji: 馃憗 colorFrom: purple colorTo: indigo sdk: gradio sdk_version: 3.12.0 app_file: app.py pinned: false --- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference Documentaci贸n de todos los aspectos te贸ricos: Antes de empezar, es importante denotar el objetivo del presente proyecto, el cu谩l es la clasificaci贸n de piezas de texto, enfocado espec铆ficamente a los mensajes encontrados en la plataforma twitter. En donde se clasificar谩 si el mensaje es 'Bearish' (opini贸n bajista del mercado), 'Bullish' (opini贸n alcista del mercado) o si es 'Neutral'. Esto se realizar谩 haciendo uso de un modelo preentrenado bert-base-uncased y luego realizando un proceso de fine-tuning utilizando como dataset un conjunto de mensajes de twitter con un 煤nico label que representa los 3 sentimientos del mercado anteriormente mencionados, donde el 0 indica 'Bearish', el 1 indica 'Bullish' y el 2 ser铆a el sentimiento 'Neutral'. Cargamos el dataset el cual como se mencion贸, tiene un solo label con 3 posibles valores, algo que se deber谩 atacar m谩s adelante en el preprocesamiento debido a que no se puede tener un label con 3 valores, sino que se deben tener 3 labels donde cada valor representar谩 si dicho label es el resultado. Como se debe crear un arreglo de los labels para hacer m谩s c贸modo el preprocesamiento, se cre贸 manualmente "labels = ["Bearish", "Bullish", "Neutral"]" Luego se defini贸 la funci贸n de preprocesamiento, en el cual se hizo el cambio al dataset para que tuviera por cada entrada de texto, 3 labels con los valores correspondientes a dicho texto. En esta funci贸n, debido a que modelos como BERT no esperan una entrada de texto directamente, se usa la tokenizaci贸n para el texto (Aqu铆 usamos AutoTokenizer API), como estamos trabajando en un caso de m煤ltiples labels, se tendr谩 una matriz de (batch_size, num_labels). Tambi茅n se hizo un cambio a los valores de cada label a float para ser compatible con PyTorch. Esta funci贸n es usado en un map con el dataset para cumplir con el preprocesamiento. D谩ndonos un encoded dataset que ser谩 el usado para el fine-tuning. Se le dio formato torch al encoded_dataset y se crearon 2 diccionarios, uno de 铆ndices a labels y otro de labels a 铆ndices, que usaremos en la definici贸n creaci贸n del modelo preentrenado. En este proceso agregamos que el tipo de problema a resolver es "multi_label_classification", para que autom谩ticamente se use una funci贸n de p茅rdida apropiada al problema. Ahora se entrenar谩 el modelo usando la API de entrenamiento de HugginFace, que requiere que definamos los hyperpar谩metros y el objeto Trainer. Los argumentos de entrenamiento seleccionados fueron los elegidos en otros proyectos de clasificaci贸n de texto por dar buenos resultados. Adem谩s se definieron 2 funciones para computar las m茅tricas mientras se entrena nuestro modelo de m煤ltiple labels. fuente (https://jesusleal.io/2021/04/21/Longformer-multilabel-classification/) Luego de realizar el entrenamiento se le hizo una evaluaci贸n. En la evaluaci贸n con 2388 ejemplos, se obtuvo una precisi贸n de 0.886, una p茅rdida de 0.29 y un promedio de 0.89.