File size: 3,320 Bytes
16ddb03
 
 
 
 
 
1857749
16ddb03
 
98672a2
fa6d33e
98672a2
16ddb03
94236da
ee9d252
 
94236da
1994179
 
 
 
 
 
 
 
 
1857749
 
 
 
 
 
 
 
1994179
98672a2
b956289
 
 
 
 
 
94236da
 
1857749
b956289
16ddb03
 
 
 
 
 
b956289
 
c97deae
 
 
16ddb03
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# Imports
import os
import torch
from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
import transformers
import gradio as gr
#from pysentimiento import create_analyzer
import pandas as pd

model_name_c = "MoritzLaurer/mDeBERTa-v3-base-xnli-multilingual-nli-2mil7"
tokenizer_c = AutoTokenizer.from_pretrained(model_name_c)
classifier = pipeline("zero-shot-classification", model=model_name_c,tokenizer=tokenizer_c)

# Inicializa Modelo de Clasificación de Sentimientos
model_name_sent = 'pysentimiento/robertuito-sentiment-analysis'
classifier_sent = pipeline("text-classification", model=model_name_sent)


def classify_text(text):
    """
    Clasifica un texto como positivo, negativo o neutro utilizando un clasificador.
    Args:
    text (str): El texto a clasificar.
    Returns:
    str: La clasificación del texto, que puede ser "Positivo", "Negativo" o "Neutro".
    """
    #return classifier_sent(text)
    result = classifier_sent(text)[0]['label']
    if result == "POS":
        return "Positivo"
    elif result == "NEG":
        return "Negativo"
    else:
        return "Neutro"

def clasificador(input1, input2):  
    sequence_to_classify = input1
    input2_list = input2.split(",") # Parse the input string as a list 
    candidate_labels= [item.strip() for item in input2_list]
    output0 = classifier(sequence_to_classify, candidate_labels, multi_label=False)
    output1=pd.DataFrame(output0)
    output1=output1.iloc[:,1:3]
    #analyzer = create_analyzer(task="sentiment", lang="es")
    #output2 = analyzer.predict(input1)
    output2=classify_text(input1)
    return output1, output2


iface = gr.Interface(
    fn=clasificador,
    inputs=[gr.inputs.Textbox(label="Ingrese texto"),gr.inputs.Textbox(label="Ingrese lista de labels")],
    #outputs=[gr.outputs.Textbox(label="Clasificación"),gr.outputs.Textbox(label="Sentimiento")],
    outputs=[gr.DataFrame(label="Clasificación"),gr.outputs.Textbox(label="Sentimiento")],
    #outputs=[gr.outputs.Textbox(label="Sentimiento")]#,
    #examples=[
    #    ['Antes de que avancemos con el tema, si yo tengo las cuentas bloqueadas por un fraude, yo lo explique por quinta vez, ya está todo resuelto, el tema del fraude online que se hizo y demás, sí por un préstamo sí, pero tengo las cuentas bloqueadas, no solamente no puedo pagar Galicia, sino no puedo pagar nada, soy vos, me haces un favor si podes de alguna manera acelerar que me desactiven la el bloqueo de la cuenta para yo poder pagar todo lo que debo pagar, me haces un favor, ya me llamaron, anoche volví a repetir lo mismo, que evidentemente no quedó claro. Sí, estoy queriendo, hoy nuevamente, comunicarme con la oficial de cuenta, María soledad, de la sucursal de Ramos Mejía, si damos para tener una respuesta con respecto al desbloqueo de mi cuenta. E claro, si voy a tener que hablar con la oficial señora, nosotros Por lo pronto todavía no lo vemos, pero llamamos justamente para. A ver lo que te pido es que por favor no me llamen mas, sí hasta que no. Cheque de que la cuenta esté desbloqueada porque no pagó nada, pero no, Galicia no pago nada, ni siquiera la empleada. ¿Me entiendes porque tengo bloqueada la cuenta?','desconocimiento de deuda, financiacion, fraude, imposibilidad de pago'],
    #]
)

iface.launch()