File size: 2,209 Bytes
eedc2ca
 
e6e702e
300defb
6ad0d2b
 
 
e6e702e
 
eedc2ca
e6e702e
 
931664f
e6e702e
 
 
931664f
e6e702e
931664f
e6e702e
931664f
e6e702e
931664f
e6e702e
 
 
931664f
e6e702e
931664f
e6e702e
 
faff5a6
 
931664f
e6e702e
 
eedc2ca
931664f
e6e702e
 
 
 
 
 
 
 
 
 
2839f8d
e6e702e
 
2839f8d
 
 
3dbe115
931664f
e6e702e
931664f
2839f8d
e6e702e
6ad0d2b
2839f8d
931664f
e6e702e
eedc2ca
e6e702e
 
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
61
62
63
64
65
66
67
import gradio as gr
from transformers import pipeline
import PyPDF2

# Mostrar versión de Gradio
print(f"Versión de Gradio instalada: {gr.__version__}")

# Cargar el modelo de análisis de sentimientos
sentiment_analysis = pipeline("sentiment-analysis", model="nlptown/bert-base-multilingual-uncased-sentiment")

def analyze_text(input_text):
    result = sentiment_analysis(input_text)[0]
    label = result['label']
    score = round(result['score'] * 100, 2)  # Convertir a porcentaje

    # Definir la categoría de sentimiento según la etiqueta
    if label == "1 star":
        sentiment_label = "Muy negativo"
    elif label == "2 stars":
        sentiment_label = "Negativo"
    elif label == "3 stars":
        sentiment_label = "Neutro"
    elif label == "4 stars":
        sentiment_label = "Positivo"
    else:
        sentiment_label = "Muy positivo"

    return f"{sentiment_label} ({score}%)", score

def analyze_pdf(pdf_file):
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    text = ""
    for page in pdf_reader.pages:
        text += page.extract_text()

    return analyze_text(text)

# Interfaz de Gradio
def text_analysis(input_text):
    sentiment, score = analyze_text(input_text)
    return sentiment, score

def pdf_analysis(pdf_file):
    sentiment, score = analyze_pdf(pdf_file)
    return sentiment, score

with gr.Blocks() as app:
    gr.Markdown("## Análisis de Sentimientos con DistilBETO")

    with gr.Column():
        gr.Markdown("### Análisis de Texto")
        text_input = gr.Textbox(label="Ingrese texto para análisis")
        text_button = gr.Button("Analizar texto")
        text_output = gr.Label(label="Resultado del análisis")
        slider_output = gr.Slider(label="Nivel de confianza en el resultado", minimum=0, maximum=100, interactive=False)

        text_button.click(text_analysis, inputs=text_input, outputs=[text_output, slider_output])

    with gr.Column():
        gr.Markdown("### Análisis de PDF")
        pdf_input = gr.File(label="Subir PDF para análisis")
        pdf_button = gr.Button("Analizar PDF")

        pdf_button.click(pdf_analysis, inputs=pdf_input, outputs=[text_output, slider_output])

# Ejecutar la aplicación
app.launch()