tfizben commited on
Commit
024a52c
·
verified ·
1 Parent(s): 5483c4f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +137 -24
app.py CHANGED
@@ -29,12 +29,12 @@ bart_model = BartForConditionalGeneration.from_pretrained(bart_model_name)
29
  bart_model.to(device)
30
  bart_model.eval()
31
 
32
- def autocomplete_text(input_text, max_tokens=20):
33
  """
34
- Autocompleta el texto/código de entrada usando code-autocomplete-gpt2-base
35
 
36
  Args:
37
- input_text (str): Texto/código inicial a completar
38
  max_tokens (int): Número máximo de tokens a generar
39
 
40
  Returns:
@@ -43,6 +43,113 @@ def autocomplete_text(input_text, max_tokens=20):
43
  if not input_text.strip():
44
  return "Por favor, ingresa algún texto para completar."
45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  try:
47
  # Tokenizar el texto de entrada
48
  inputs = tokenizer.encode(input_text, return_tensors="pt", padding=True)
@@ -68,12 +175,12 @@ def autocomplete_text(input_text, max_tokens=20):
68
  new_text = generated_text[len(input_text):].strip()
69
 
70
  if not new_text:
71
- return "No se pudo generar texto adicional."
72
 
73
  return new_text
74
 
75
  except Exception as e:
76
- return f"Error al generar texto: {str(e)}"
77
 
78
  def simplify_text(input_text, max_length=150):
79
  """
@@ -132,29 +239,29 @@ def create_autocomplete_interface():
132
  Crea la interfaz con autocompletar y simplificación dentro de gr.Blocks()
133
  """
134
 
135
- with gr.Blocks(title="Asistente de Texto y Código") as demo:
136
 
137
- gr.Markdown("# 🤖 Asistente de Texto y Código")
138
- gr.Markdown("Herramientas para autocompletar código y simplificar textos complejos.")
139
 
140
  with gr.Tab("Autocompletar"):
141
  with gr.Row():
142
  with gr.Column():
143
  input_textbox = gr.Textbox(
144
- label="Código a completar",
145
- placeholder="def fibonacci(n):",
146
- lines=5,
147
- max_lines=10
148
  )
149
 
150
- generate_btn = gr.Button("Completar Código", variant="primary")
151
 
152
  with gr.Column():
153
  output_textbox = gr.Textbox(
154
- label="Código generado",
155
- placeholder="Aquí aparecerá la continuación del código...",
156
- lines=5,
157
- max_lines=10,
158
  interactive=False
159
  )
160
 
@@ -211,16 +318,22 @@ def create_autocomplete_interface():
211
  # Pestaña adicional con ejemplos
212
  with gr.Tab("Ejemplos"):
213
  gr.Markdown("""
214
- ### Ejemplos de Autocompletado de Código:
 
 
 
 
 
 
215
 
216
- **Entrada:** "def fibonacci(n):"
217
- **Salida:** "\\n if n <= 1:\\n return n\\n return fibonacci(n-1) + fibonacci(n-2)"
218
 
219
- **Entrada:** "for i in range("
220
- **Salida:** "10):\\n print(i)"
221
 
222
- **Entrada:** "import pandas as pd\\ndf = pd.read_csv("
223
- **Salida:** "'data.csv')\\nprint(df.head())"
224
 
225
  ---
226
 
 
29
  bart_model.to(device)
30
  bart_model.eval()
31
 
32
+ def autocomplete_text(input_text, max_tokens=5):
33
  """
34
+ Autocompleta texto común en español basado en el inicio de palabras
35
 
36
  Args:
37
+ input_text (str): Texto inicial a completar
38
  max_tokens (int): Número máximo de tokens a generar
39
 
40
  Returns:
 
43
  if not input_text.strip():
44
  return "Por favor, ingresa algún texto para completar."
45
 
46
+ # Diccionario de autocompletado común en español
47
+ common_completions = {
48
+ 'h': ['hola', 'hacer', 'historia', 'hermano', 'hospital', 'habitación'],
49
+ 'ho': ['hola', 'hombre', 'hospital', 'hoy', 'hogar'],
50
+ 'hol': ['hola'],
51
+ 'c': ['casa', 'comer', 'coche', 'computadora', 'ciudad', 'cambiar'],
52
+ 'ca': ['casa', 'carro', 'cambiar', 'caminar', 'calor'],
53
+ 'cas': ['casa', 'casi'],
54
+ 'com': ['comer', 'computadora', 'comprar', 'completar'],
55
+ 'comp': ['computadora', 'comprar', 'completar', 'comprimir'],
56
+ 'compu': ['computadora'],
57
+ 'g': ['gracias', 'grande', 'gente', 'guitarra', 'ganar'],
58
+ 'gr': ['gracias', 'grande', 'grupo'],
59
+ 'gra': ['gracias', 'grande'],
60
+ 'graci': ['gracias'],
61
+ 'b': ['bien', 'bueno', 'beber', 'buscar', 'bailar'],
62
+ 'bi': ['bien', 'bicicleta'],
63
+ 'bu': ['bueno', 'buscar'],
64
+ 'bue': ['bueno', 'buenos'],
65
+ 'buen': ['bueno', 'buenos'],
66
+ 'm': ['muy', 'madre', 'mesa', 'música', 'mañana'],
67
+ 'mu': ['muy', 'música', 'mujer', 'mundo'],
68
+ 'muy': ['muy'],
69
+ 't': ['trabajo', 'tiempo', 'teléfono', 'también', 'tener'],
70
+ 'tr': ['trabajo', 'tres', 'transporte'],
71
+ 'tra': ['trabajo', 'transporte'],
72
+ 'trab': ['trabajo'],
73
+ 'trabaj': ['trabajo'],
74
+ 'p': ['por', 'para', 'persona', 'programa', 'problema'],
75
+ 'po': ['por', 'poder'],
76
+ 'pr': ['programa', 'problema', 'primero'],
77
+ 'pro': ['programa', 'problema', 'proceso'],
78
+ 'prog': ['programa'],
79
+ 'progr': ['programa'],
80
+ 'progra': ['programa'],
81
+ 'program': ['programa'],
82
+ 'e': ['escribir', 'estudiar', 'escuela', 'entender', 'español'],
83
+ 'es': ['escribir', 'estudiar', 'escuela', 'español', 'estar'],
84
+ 'esc': ['escribir', 'escuela'],
85
+ 'escr': ['escribir'],
86
+ 'escri': ['escribir'],
87
+ 'escrib': ['escribir'],
88
+ 'escribi': ['escribir'],
89
+ 'a': ['aplicación', 'agua', 'amigo', 'aprender', 'ayuda'],
90
+ 'ap': ['aplicación', 'aprender', 'ayuda'],
91
+ 'apl': ['aplicación'],
92
+ 'apli': ['aplicación'],
93
+ 'aplic': ['aplicación'],
94
+ 'aplica': ['aplicación'],
95
+ 'aplicaci': ['aplicación'],
96
+ 'aplicacio': ['aplicación'],
97
+ 'aplicacion': ['aplicación'],
98
+ 'v': ['ver', 'venir', 'vida', 'viaje', 'ventana'],
99
+ 've': ['ver', 'venir', 'ventana'],
100
+ 'ven': ['venir', 'ventana'],
101
+ 'veni': ['venir'],
102
+ 'd': ['de', 'día', 'decir', 'dinero', 'diferente'],
103
+ 'di': ['día', 'dinero', 'diferente'],
104
+ 'dia': ['día'],
105
+ 'n': ['no', 'necesitar', 'noche', 'número', 'nuevo'],
106
+ 'nu': ['número', 'nuevo'],
107
+ 'nue': ['nuevo'],
108
+ 'nuev': ['nuevo'],
109
+ 's': ['sí', 'ser', 'sistema', 'salir', 'semana'],
110
+ 'si': ['sí', 'sistema', 'siempre'],
111
+ 'sis': ['sistema'],
112
+ 'sist': ['sistema'],
113
+ 'siste': ['sistema'],
114
+ 'sistem': ['sistema'],
115
+ 'l': ['la', 'lo', 'lugar', 'llamar', 'leer'],
116
+ 'lu': ['lugar'],
117
+ 'lug': ['lugar'],
118
+ 'luga': ['lugar'],
119
+ 'r': ['rápido', 'recordar', 'respuesta', 'resultado', 'realizar'],
120
+ 'ra': ['rápido'],
121
+ 'rap': ['rápido'],
122
+ 'rapi': ['rápido'],
123
+ 'rapid': ['rápido'],
124
+ 'rapido': ['rápido']
125
+ }
126
+
127
+ input_lower = input_text.lower().strip()
128
+
129
+ # Buscar coincidencias exactas primero
130
+ if input_lower in common_completions:
131
+ suggestions = common_completions[input_lower]
132
+ # Filtrar para mostrar solo las que son diferentes al input
133
+ filtered_suggestions = [word for word in suggestions if word != input_lower]
134
+ if filtered_suggestions:
135
+ # Retornar la primera sugerencia sin el input original
136
+ best_match = filtered_suggestions[0]
137
+ return best_match[len(input_lower):]
138
+
139
+ # Si no hay coincidencia exacta, buscar palabras que empiecen con el input
140
+ matching_words = []
141
+ for word_list in common_completions.values():
142
+ for word in word_list:
143
+ if word.startswith(input_lower) and word != input_lower:
144
+ matching_words.append(word)
145
+
146
+ if matching_words:
147
+ # Ordenar por longitud (más cortas primero) y tomar la primera
148
+ matching_words.sort(key=len)
149
+ best_match = matching_words[0]
150
+ return best_match[len(input_lower):]
151
+
152
+ # Si no encuentra coincidencias en el diccionario, usar el modelo GPT-2
153
  try:
154
  # Tokenizar el texto de entrada
155
  inputs = tokenizer.encode(input_text, return_tensors="pt", padding=True)
 
175
  new_text = generated_text[len(input_text):].strip()
176
 
177
  if not new_text:
178
+ return "No se encontraron sugerencias."
179
 
180
  return new_text
181
 
182
  except Exception as e:
183
+ return f"Error al generar sugerencias: {str(e)}"
184
 
185
  def simplify_text(input_text, max_length=150):
186
  """
 
239
  Crea la interfaz con autocompletar y simplificación dentro de gr.Blocks()
240
  """
241
 
242
+ with gr.Blocks(title="Asistente de Texto") as demo:
243
 
244
+ gr.Markdown("# 🤖 Asistente de Texto")
245
+ gr.Markdown("Herramientas para autocompletar palabras y simplificar textos complejos.")
246
 
247
  with gr.Tab("Autocompletar"):
248
  with gr.Row():
249
  with gr.Column():
250
  input_textbox = gr.Textbox(
251
+ label="Texto a completar",
252
+ placeholder="Escribe 'h' para ver 'hola'...",
253
+ lines=3,
254
+ max_lines=5
255
  )
256
 
257
+ generate_btn = gr.Button("Completar Texto", variant="primary")
258
 
259
  with gr.Column():
260
  output_textbox = gr.Textbox(
261
+ label="Sugerencia de completado",
262
+ placeholder="Aquí aparecerá la sugerencia...",
263
+ lines=3,
264
+ max_lines=5,
265
  interactive=False
266
  )
267
 
 
318
  # Pestaña adicional con ejemplos
319
  with gr.Tab("Ejemplos"):
320
  gr.Markdown("""
321
+ ### Ejemplos de Autocompletado de Palabras:
322
+
323
+ **Entrada:** "h"
324
+ **Salida:** "ola" (completa "hola")
325
+
326
+ **Entrada:** "gra"
327
+ **Salida:** "cias" (completa "gracias")
328
 
329
+ **Entrada:** "compu"
330
+ **Salida:** "tadora" (completa "computadora")
331
 
332
+ **Entrada:** "prog"
333
+ **Salida:** "rama" (completa "programa")
334
 
335
+ **Entrada:** "escrib"
336
+ **Salida:** "ir" (completa "escribir")
337
 
338
  ---
339