Overglitch commited on
Commit
0819d8c
·
verified ·
1 Parent(s): f9b176d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -7
app.py CHANGED
@@ -3,22 +3,25 @@ from modules.extractive import TFIDFSummarizer, TextRankSummarizer, CombinedSumm
3
  from modules.abstractive import load_summarizers, abstractive_summary
4
  from modules.preprocessing import Preprocessor, PDFProcessor
5
  from modules.utils import handle_long_text
 
6
 
7
  # Cargar modelos abstractivos finetuneados
8
  summarizers = load_summarizers()
9
 
10
-
11
  # Función principal para generar resúmenes
12
  def summarize(input_text, file, summary_type, method, num_sentences, model_name, max_length, num_beams):
13
  preprocessor = Preprocessor()
14
 
 
15
  if file is not None:
16
  pdf_processor = PDFProcessor()
17
  input_text = pdf_processor.pdf_to_text(file.name)
18
 
 
19
  if not input_text:
20
  return "Por favor, ingrese texto o cargue un archivo válido."
21
 
 
22
  cleaned_text = preprocessor.clean_text(input_text)
23
 
24
  if summary_type == "Extractivo":
@@ -33,6 +36,7 @@ def summarize(input_text, file, summary_type, method, num_sentences, model_name,
33
  else:
34
  return "Método no válido para resumen extractivo."
35
 
 
36
  return summarizer.summarize(
37
  preprocessor.split_into_sentences(cleaned_text),
38
  preprocessor.clean_sentences(preprocessor.split_into_sentences(cleaned_text)),
@@ -42,17 +46,21 @@ def summarize(input_text, file, summary_type, method, num_sentences, model_name,
42
  elif summary_type == "Abstractivo":
43
  if model_name not in summarizers:
44
  return "Modelo no disponible para resumen abstractivo."
 
45
  return handle_long_text(
46
  cleaned_text,
47
- summarizers[model_name][0],
48
- summarizers[model_name][1],
49
  max_length=max_length,
50
  stride=128,
51
  )
52
 
 
53
  elif summary_type == "Combinado":
54
  if model_name not in summarizers:
55
  return "Modelo no disponible para resumen abstractivo."
 
 
56
  extractive_summary = TFIDFSummarizer().summarize(
57
  preprocessor.split_into_sentences(cleaned_text),
58
  preprocessor.clean_sentences(preprocessor.split_into_sentences(cleaned_text)),
@@ -68,7 +76,6 @@ def summarize(input_text, file, summary_type, method, num_sentences, model_name,
68
 
69
  return "Seleccione un tipo de resumen válido."
70
 
71
-
72
  # Interfaz dinámica
73
  with gr.Blocks() as interface:
74
  gr.Markdown("# Demo: Generador de Resúmenes Inteligente")
@@ -106,7 +113,7 @@ with gr.Blocks() as interface:
106
  1, 10, value=4, step=1, label="Número de haces (Abstractivo)", visible=False
107
  )
108
 
109
-
110
  def update_options(summary_type):
111
  if summary_type == "Extractivo":
112
  return (
@@ -131,6 +138,7 @@ with gr.Blocks() as interface:
131
  outputs=[method, num_sentences, model_name, max_length, num_beams],
132
  )
133
 
 
134
  summarize_button = gr.Button("Generar Resumen")
135
  output = gr.Textbox(lines=10, label="Resumen generado", interactive=True)
136
  copy_button = gr.Button("Copiar Resumen")
@@ -141,11 +149,10 @@ with gr.Blocks() as interface:
141
  outputs=output,
142
  )
143
 
144
-
145
  def copy_summary(summary):
146
  return summary
147
 
148
-
149
  copy_button.click(
150
  fn=copy_summary,
151
  inputs=[output],
 
3
  from modules.abstractive import load_summarizers, abstractive_summary
4
  from modules.preprocessing import Preprocessor, PDFProcessor
5
  from modules.utils import handle_long_text
6
+ from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
7
 
8
  # Cargar modelos abstractivos finetuneados
9
  summarizers = load_summarizers()
10
 
 
11
  # Función principal para generar resúmenes
12
  def summarize(input_text, file, summary_type, method, num_sentences, model_name, max_length, num_beams):
13
  preprocessor = Preprocessor()
14
 
15
+ # Procesar archivo si se carga
16
  if file is not None:
17
  pdf_processor = PDFProcessor()
18
  input_text = pdf_processor.pdf_to_text(file.name)
19
 
20
+ # Validar entrada de texto
21
  if not input_text:
22
  return "Por favor, ingrese texto o cargue un archivo válido."
23
 
24
+ # Limpiar texto de entrada
25
  cleaned_text = preprocessor.clean_text(input_text)
26
 
27
  if summary_type == "Extractivo":
 
36
  else:
37
  return "Método no válido para resumen extractivo."
38
 
39
+ # Generar resumen extractivo
40
  return summarizer.summarize(
41
  preprocessor.split_into_sentences(cleaned_text),
42
  preprocessor.clean_sentences(preprocessor.split_into_sentences(cleaned_text)),
 
46
  elif summary_type == "Abstractivo":
47
  if model_name not in summarizers:
48
  return "Modelo no disponible para resumen abstractivo."
49
+ model, tokenizer = summarizers[model_name]
50
  return handle_long_text(
51
  cleaned_text,
52
+ model,
53
+ tokenizer,
54
  max_length=max_length,
55
  stride=128,
56
  )
57
 
58
+
59
  elif summary_type == "Combinado":
60
  if model_name not in summarizers:
61
  return "Modelo no disponible para resumen abstractivo."
62
+
63
+ # Generar resumen combinado: Extractivo + Abstractivo
64
  extractive_summary = TFIDFSummarizer().summarize(
65
  preprocessor.split_into_sentences(cleaned_text),
66
  preprocessor.clean_sentences(preprocessor.split_into_sentences(cleaned_text)),
 
76
 
77
  return "Seleccione un tipo de resumen válido."
78
 
 
79
  # Interfaz dinámica
80
  with gr.Blocks() as interface:
81
  gr.Markdown("# Demo: Generador de Resúmenes Inteligente")
 
113
  1, 10, value=4, step=1, label="Número de haces (Abstractivo)", visible=False
114
  )
115
 
116
+ # Actualización dinámica de opciones
117
  def update_options(summary_type):
118
  if summary_type == "Extractivo":
119
  return (
 
138
  outputs=[method, num_sentences, model_name, max_length, num_beams],
139
  )
140
 
141
+ # Botón para generar resumen
142
  summarize_button = gr.Button("Generar Resumen")
143
  output = gr.Textbox(lines=10, label="Resumen generado", interactive=True)
144
  copy_button = gr.Button("Copiar Resumen")
 
149
  outputs=output,
150
  )
151
 
152
+ # Funcionalidad para copiar resumen
153
  def copy_summary(summary):
154
  return summary
155
 
 
156
  copy_button.click(
157
  fn=copy_summary,
158
  inputs=[output],