carlesabarca commited on
Commit
931664f
·
1 Parent(s): faff5a6

Cambio a slider

Browse files
Files changed (1) hide show
  1. app.py +55 -31
app.py CHANGED
@@ -2,41 +2,65 @@ import gradio as gr
2
  from transformers import pipeline
3
  from PyPDF2 import PdfReader
4
 
5
- # Inicializar el modelo de análisis de sentimiento con DistilBETO
6
- sentiment_analysis = pipeline("sentiment-analysis", model="finiteautomata/beto-sentiment-analysis")
7
-
8
- def analyze_text(text):
9
- result = sentiment_analysis(text)
10
- label = result[0]['label']
11
- score = result[0]['score']
12
- return f"Label: {label}, Score: {score}"
13
-
14
- def analyze_pdf(pdf):
15
- # Leer el contenido del PDF
16
- pdf_reader = PdfReader(pdf)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  text = ""
18
  for page in pdf_reader.pages:
19
- text += page.extract_text() + "\n"
20
 
21
- # Análisis del contenido del PDF
22
- result = sentiment_analysis(text)
23
- label = result[0]['label']
24
- score = result[0]['score']
25
- return f"Label: {label}, Score: {score}"
26
 
27
- # Interfaz de Gradio con dos inputs: texto o PDF
28
  with gr.Blocks() as demo:
29
- gr.Markdown("# Análisis de Sentimientos con DistilBETO")
30
- gr.Markdown("Ingrese un texto en español o cargue un PDF para analizar su sentimiento usando DistilBETO.")
31
-
32
- with gr.Row():
33
- text_input = gr.Textbox(label="Texto", placeholder="Escribe aquí el texto para análisis")
34
- pdf_input = gr.File(label="Cargar PDF", type="file")
35
-
36
- output = gr.Textbox(label="Resultado")
37
-
38
- submit_btn = gr.Button("Submit")
39
- submit_btn.click(fn=analyze_text, inputs=text_input, outputs=output)
40
- submit_btn.click(fn=analyze_pdf, inputs=pdf_input, outputs=output)
 
 
 
 
41
 
42
  demo.launch()
 
2
  from transformers import pipeline
3
  from PyPDF2 import PdfReader
4
 
5
+ # Cargar el modelo de DistilBETO
6
+ sentiment_analysis = pipeline("sentiment-analysis",
7
+ model="nlptown/bert-base-multilingual-uncased-sentiment")
8
+
9
+ # Función para analizar texto
10
+ def analyze_text_sentiment(text):
11
+ result = sentiment_analysis(text)[0]
12
+ score = result['score']
13
+ label = result['label']
14
+
15
+ # Convertir la etiqueta de sentimiento en un valor para el slider y su literal
16
+ if label == "1 star":
17
+ slider_value = 0
18
+ literal = "Muy negativo"
19
+ elif label == "2 stars":
20
+ slider_value = 25
21
+ literal = "Negativo"
22
+ elif label == "3 stars":
23
+ slider_value = 50
24
+ literal = "Neutro"
25
+ elif label == "4 stars":
26
+ slider_value = 75
27
+ literal = "Positivo"
28
+ elif label == "5 stars":
29
+ slider_value = 100
30
+ literal = "Muy positivo"
31
+
32
+ # Añadir el nivel de confianza al literal
33
+ confidence = round(score * 100, 2)
34
+ literal_with_confidence = f"{literal} (Confianza: {confidence}%)"
35
+
36
+ return slider_value, literal_with_confidence
37
+
38
+ # Función para extraer texto de PDF y analizar
39
+ def analyze_pdf_sentiment(pdf_file):
40
+ pdf_reader = PdfReader(pdf_file.name)
41
  text = ""
42
  for page in pdf_reader.pages:
43
+ text += page.extract_text()
44
 
45
+ return analyze_text_sentiment(text)
 
 
 
 
46
 
47
+ # Interfaz de Gradio
48
  with gr.Blocks() as demo:
49
+ with gr.Tabs():
50
+ with gr.Tab("Texto"):
51
+ text_input = gr.Textbox(label="Ingrese su texto aquí", lines=5)
52
+ analyze_button = gr.Button("Analizar")
53
+ slider_output = gr.Slider(label="Nivel de Sentimiento", minimum=0, maximum=100, step=1, interactive=False)
54
+ label_output = gr.Label()
55
+
56
+ analyze_button.click(analyze_text_sentiment, inputs=text_input, outputs=[slider_output, label_output])
57
+
58
+ with gr.Tab("PDF"):
59
+ pdf_input = gr.File(label="Subir PDF", file_types=[".pdf"])
60
+ analyze_button = gr.Button("Analizar")
61
+ slider_output = gr.Slider(label="Nivel de Sentimiento", minimum=0, maximum=100, step=1, interactive=False)
62
+ label_output = gr.Label()
63
+
64
+ analyze_button.click(analyze_pdf_sentiment, inputs=pdf_input, outputs=[slider_output, label_output])
65
 
66
  demo.launch()