Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import pipeline | |
from PyPDF2 import PdfReader | |
# Cargar el modelo de DistilBETO | |
sentiment_analysis = pipeline("sentiment-analysis", | |
model="nlptown/bert-base-multilingual-uncased-sentiment") | |
# Funci贸n para analizar texto | |
def analyze_text_sentiment(text): | |
result = sentiment_analysis(text)[0] | |
score = result['score'] | |
label = result['label'] | |
# Convertir la etiqueta de sentimiento en un valor para el slider y su literal | |
if label == "1 star": | |
slider_value = 0 | |
literal = "Muy negativo" | |
elif label == "2 stars": | |
slider_value = 25 | |
literal = "Negativo" | |
elif label == "3 stars": | |
slider_value = 50 | |
literal = "Neutro" | |
elif label == "4 stars": | |
slider_value = 75 | |
literal = "Positivo" | |
elif label == "5 stars": | |
slider_value = 100 | |
literal = "Muy positivo" | |
# A帽adir el nivel de confianza al literal | |
confidence = round(score * 100, 2) | |
literal_with_confidence = f"{literal} (Confianza: {confidence}%)" | |
return slider_value, literal_with_confidence | |
# Funci贸n para extraer texto de PDF y analizar | |
def analyze_pdf_sentiment(pdf_file): | |
pdf_reader = PdfReader(pdf_file.name) | |
text = "" | |
for page in pdf_reader.pages: | |
text += page.extract_text() | |
return analyze_text_sentiment(text) | |
# Interfaz de Gradio | |
with gr.Blocks() as demo: | |
with gr.Tabs(): | |
with gr.Tab("Texto"): | |
text_input = gr.Textbox(label="Ingrese su texto aqu铆", lines=5) | |
analyze_button = gr.Button("Analizar") | |
slider_output = gr.Slider(label="Nivel de Sentimiento", minimum=0, maximum=100, step=1, interactive=False) | |
label_output = gr.Label() | |
analyze_button.click(analyze_text_sentiment, inputs=text_input, outputs=[slider_output, label_output]) | |
with gr.Tab("PDF"): | |
pdf_input = gr.File(label="Subir PDF", file_types=[".pdf"]) | |
analyze_button = gr.Button("Analizar") | |
slider_output = gr.Slider(label="Nivel de Sentimiento", minimum=0, maximum=100, step=1, interactive=False) | |
label_output = gr.Label() | |
analyze_button.click(analyze_pdf_sentiment, inputs=pdf_input, outputs=[slider_output, label_output]) | |
demo.launch() |