Spaces:
Sleeping
Sleeping
documentacion
Browse files
app.py
CHANGED
@@ -22,7 +22,9 @@ class Model:
|
|
22 |
self.idioma=""
|
23 |
self.modelo_ner=""
|
24 |
self.categoria_texto=""
|
25 |
-
|
|
|
|
|
26 |
def identificacion_idioma(self,text):
|
27 |
self.texto=text
|
28 |
tokenizer = AutoTokenizer.from_pretrained("papluca/xlm-roberta-base-language-detection")
|
@@ -38,9 +40,7 @@ class Model:
|
|
38 |
|
39 |
id2lang = model.config.id2label
|
40 |
vals, idxs = torch.max(preds, dim=1)
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
#retorna el idioma con mayor porcentaje
|
45 |
maximo=vals.max()
|
46 |
idioma=''
|
@@ -65,7 +65,7 @@ class Model:
|
|
65 |
|
66 |
i=0
|
67 |
new_tokens=[]
|
68 |
-
ig_tokens=[]
|
69 |
for token in tokens:
|
70 |
print('token_texto:',token,caracter)
|
71 |
ind=len(new_tokens)
|
@@ -120,7 +120,7 @@ class Model:
|
|
120 |
for i in new_labels:
|
121 |
a = a+i
|
122 |
return a
|
123 |
-
|
124 |
def salida_texto_anonimizado(self, ids,pre_tokens):
|
125 |
new_labels = []
|
126 |
current_word = None
|
@@ -177,6 +177,9 @@ class Model:
|
|
177 |
else:
|
178 |
new_iden.append(id)
|
179 |
return new_iden
|
|
|
|
|
|
|
180 |
def categorizar_texto(self,texto):
|
181 |
name="elozano/bert-base-cased-news-category"
|
182 |
tokenizer = AutoTokenizer.from_pretrained(name)
|
@@ -204,7 +207,10 @@ class Model:
|
|
204 |
self.categoria_texto=cat
|
205 |
|
206 |
|
207 |
-
return cat, porcentaje
|
|
|
|
|
|
|
208 |
def predict(self,etiquetas):
|
209 |
|
210 |
categoria, porcentaje = self.categorizar_texto(self.texto)
|
@@ -261,7 +267,7 @@ class ModeloDataset:
|
|
261 |
|
262 |
i=0
|
263 |
new_tokens=[]
|
264 |
-
ig_tokens=[]
|
265 |
for token in tokens:
|
266 |
print('tokensss:',tokens,caracter)
|
267 |
ind=len(new_tokens)
|
@@ -293,6 +299,9 @@ class ModeloDataset:
|
|
293 |
else:
|
294 |
x=x+1
|
295 |
return new_identificadores
|
|
|
|
|
|
|
296 |
def fake_pers(self):
|
297 |
return self.faker_.name(self)
|
298 |
def fake_word(self):
|
@@ -332,6 +341,9 @@ class ModeloDataset:
|
|
332 |
else:
|
333 |
new_iden.append(id)
|
334 |
return new_iden
|
|
|
|
|
|
|
335 |
def aplicar_modelo(self,_sentences,idioma, etiquetas):
|
336 |
if idioma=="es":
|
337 |
self.tokenizer = AutoTokenizer.from_pretrained("BSC-LT/roberta_model_for_anonimization")
|
@@ -349,7 +361,7 @@ class ModeloDataset:
|
|
349 |
i=0
|
350 |
_predicted_tokens_classes=[]
|
351 |
for a in predicted_token_class_ids:
|
352 |
-
|
353 |
_predicted_tokens_classes.append([self.model.config.id2label[t.item()] for t in predicted_token_class_ids[i]])
|
354 |
i=i+1
|
355 |
labels = predicted_token_class_ids
|
@@ -371,7 +383,7 @@ class ModeloDataset:
|
|
371 |
new_identificadores.append(aux)
|
372 |
i=i+1
|
373 |
|
374 |
-
return new_identificadores, new_tokens
|
375 |
else:
|
376 |
|
377 |
print('idioma:',idioma)
|
@@ -393,7 +405,7 @@ class ModeloDataset:
|
|
393 |
i=0
|
394 |
_predicted_tokens_classes=[]
|
395 |
for a in predicted_token_class_ids:
|
396 |
-
|
397 |
_predicted_tokens_classes.append([self.model.config.id2label[t.item()] for t in predicted_token_class_ids[i]])
|
398 |
i=i+1
|
399 |
labels = predicted_token_class_ids
|
@@ -417,8 +429,10 @@ class ModeloDataset:
|
|
417 |
|
418 |
|
419 |
return new_identificadores, new_tokens
|
420 |
-
|
421 |
-
|
|
|
|
|
422 |
def salida_texto( self,tokens,pre_tokens):
|
423 |
new_labels = []
|
424 |
current_word = None
|
@@ -451,12 +465,15 @@ class ModeloDataset:
|
|
451 |
i=0
|
452 |
salida=[]
|
453 |
for item in _out:
|
454 |
-
salida.append("".join(str(x) for x in _out[i]))
|
455 |
i=i+1
|
456 |
return salida
|
457 |
def unir_columna_valores(self,df,columna):
|
458 |
out = ','.join(df[columna])
|
459 |
return out
|
|
|
|
|
|
|
460 |
class utilJSON:
|
461 |
def __init__(self,archivo):
|
462 |
with open(archivo, encoding='utf-8') as f:
|
@@ -496,7 +513,7 @@ class utilJSON:
|
|
496 |
except ValueError:
|
497 |
print("Error: Invalid value detected.")
|
498 |
except Exception as e:
|
499 |
-
|
500 |
print(f"An unexpected error occurred: {str(e)}")
|
501 |
|
502 |
def obtener_dataframe(self,data):
|
@@ -519,7 +536,9 @@ modelo = ModeloDataset()
|
|
519 |
model = Model()
|
520 |
def get_model():
|
521 |
return model
|
522 |
-
|
|
|
|
|
523 |
def procesar(texto,archivo, etiquetas):
|
524 |
|
525 |
|
@@ -541,12 +560,12 @@ def procesar(texto,archivo, etiquetas):
|
|
541 |
sentences=df[item]
|
542 |
|
543 |
ides, predicted = modelo.aplicar_modelo(sentences,model.idioma,etiquetas)
|
544 |
-
out=modelo.salida_texto2( ides,predicted,etiquetas)
|
545 |
print('out es:',out)
|
546 |
df_new[item] = modelo.unir_array(out)
|
547 |
|
548 |
return modelo.idioma,"", df_new, df_new.to_csv(sep='\t', encoding='utf-8',index=False)
|
549 |
-
|
550 |
else:
|
551 |
print('json')
|
552 |
if archivo.name.split(".")[1]=="json":
|
@@ -561,13 +580,13 @@ def procesar(texto,archivo, etiquetas):
|
|
561 |
sentences=df[item]
|
562 |
|
563 |
ides, predicted = modelo.aplicar_modelo(sentences,modelo.idioma,etiquetas)
|
564 |
-
out=modelo.salida_texto2( ides,predicted,etiquetas)
|
565 |
|
566 |
print('out:',out)
|
567 |
df_new[item] = modelo.unir_array(out)
|
568 |
|
569 |
|
570 |
-
|
571 |
return modelo.idioma,"", df_new, df_new.to_csv(sep='\t', encoding='utf-8',index=False)
|
572 |
|
573 |
demo = gr.Interface(fn=procesar,inputs=["text",gr.File(), "checkbox"] , outputs=[gr.Label(label="idioma/categor铆a"),gr.Textbox(label="texto procesado"),gr.Dataframe(label="Datos procesados en dataframe",interactive=False),gr.Textbox(label="datos csv")])
|
|
|
22 |
self.idioma=""
|
23 |
self.modelo_ner=""
|
24 |
self.categoria_texto=""
|
25 |
+
##
|
26 |
+
### Funci贸n que aplica el modelo e identifica su idioma
|
27 |
+
###
|
28 |
def identificacion_idioma(self,text):
|
29 |
self.texto=text
|
30 |
tokenizer = AutoTokenizer.from_pretrained("papluca/xlm-roberta-base-language-detection")
|
|
|
40 |
|
41 |
id2lang = model.config.id2label
|
42 |
vals, idxs = torch.max(preds, dim=1)
|
43 |
+
|
|
|
|
|
44 |
#retorna el idioma con mayor porcentaje
|
45 |
maximo=vals.max()
|
46 |
idioma=''
|
|
|
65 |
|
66 |
i=0
|
67 |
new_tokens=[]
|
68 |
+
ig_tokens=[]
|
69 |
for token in tokens:
|
70 |
print('token_texto:',token,caracter)
|
71 |
ind=len(new_tokens)
|
|
|
120 |
for i in new_labels:
|
121 |
a = a+i
|
122 |
return a
|
123 |
+
|
124 |
def salida_texto_anonimizado(self, ids,pre_tokens):
|
125 |
new_labels = []
|
126 |
current_word = None
|
|
|
177 |
else:
|
178 |
new_iden.append(id)
|
179 |
return new_iden
|
180 |
+
###
|
181 |
+
### Funci贸n que aplica los modelo para categorizar el texto segun su contexto
|
182 |
+
###
|
183 |
def categorizar_texto(self,texto):
|
184 |
name="elozano/bert-base-cased-news-category"
|
185 |
tokenizer = AutoTokenizer.from_pretrained(name)
|
|
|
207 |
self.categoria_texto=cat
|
208 |
|
209 |
|
210 |
+
return cat, porcentaje
|
211 |
+
###
|
212 |
+
### Funci贸n que aplica los modelos sobre un texto
|
213 |
+
###
|
214 |
def predict(self,etiquetas):
|
215 |
|
216 |
categoria, porcentaje = self.categorizar_texto(self.texto)
|
|
|
267 |
|
268 |
i=0
|
269 |
new_tokens=[]
|
270 |
+
ig_tokens=[]
|
271 |
for token in tokens:
|
272 |
print('tokensss:',tokens,caracter)
|
273 |
ind=len(new_tokens)
|
|
|
299 |
else:
|
300 |
x=x+1
|
301 |
return new_identificadores
|
302 |
+
###
|
303 |
+
### Funciones para generar diversos datos fake dependiendo de la catagoria
|
304 |
+
###
|
305 |
def fake_pers(self):
|
306 |
return self.faker_.name(self)
|
307 |
def fake_word(self):
|
|
|
341 |
else:
|
342 |
new_iden.append(id)
|
343 |
return new_iden
|
344 |
+
###
|
345 |
+
### Funci贸n que aplica los modelos de acuerdo al idioma detectado
|
346 |
+
###
|
347 |
def aplicar_modelo(self,_sentences,idioma, etiquetas):
|
348 |
if idioma=="es":
|
349 |
self.tokenizer = AutoTokenizer.from_pretrained("BSC-LT/roberta_model_for_anonimization")
|
|
|
361 |
i=0
|
362 |
_predicted_tokens_classes=[]
|
363 |
for a in predicted_token_class_ids:
|
364 |
+
|
365 |
_predicted_tokens_classes.append([self.model.config.id2label[t.item()] for t in predicted_token_class_ids[i]])
|
366 |
i=i+1
|
367 |
labels = predicted_token_class_ids
|
|
|
383 |
new_identificadores.append(aux)
|
384 |
i=i+1
|
385 |
|
386 |
+
return new_identificadores, new_tokens
|
387 |
else:
|
388 |
|
389 |
print('idioma:',idioma)
|
|
|
405 |
i=0
|
406 |
_predicted_tokens_classes=[]
|
407 |
for a in predicted_token_class_ids:
|
408 |
+
|
409 |
_predicted_tokens_classes.append([self.model.config.id2label[t.item()] for t in predicted_token_class_ids[i]])
|
410 |
i=i+1
|
411 |
labels = predicted_token_class_ids
|
|
|
429 |
|
430 |
|
431 |
return new_identificadores, new_tokens
|
432 |
+
|
433 |
+
###
|
434 |
+
### Procesa los tokens generados del texto de entradas con los tokens predichos, para generar los tokens por palabra
|
435 |
+
###
|
436 |
def salida_texto( self,tokens,pre_tokens):
|
437 |
new_labels = []
|
438 |
current_word = None
|
|
|
465 |
i=0
|
466 |
salida=[]
|
467 |
for item in _out:
|
468 |
+
salida.append("".join(str(x) for x in _out[i]))
|
469 |
i=i+1
|
470 |
return salida
|
471 |
def unir_columna_valores(self,df,columna):
|
472 |
out = ','.join(df[columna])
|
473 |
return out
|
474 |
+
###
|
475 |
+
### Funcion para procesar archivos json, recibe archivo
|
476 |
+
###
|
477 |
class utilJSON:
|
478 |
def __init__(self,archivo):
|
479 |
with open(archivo, encoding='utf-8') as f:
|
|
|
513 |
except ValueError:
|
514 |
print("Error: Invalid value detected.")
|
515 |
except Exception as e:
|
516 |
+
|
517 |
print(f"An unexpected error occurred: {str(e)}")
|
518 |
|
519 |
def obtener_dataframe(self,data):
|
|
|
536 |
model = Model()
|
537 |
def get_model():
|
538 |
return model
|
539 |
+
###
|
540 |
+
### Funci贸n que interact煤a con la interfaz Gradio para el procesamiento de texto, csv o json
|
541 |
+
###
|
542 |
def procesar(texto,archivo, etiquetas):
|
543 |
|
544 |
|
|
|
560 |
sentences=df[item]
|
561 |
|
562 |
ides, predicted = modelo.aplicar_modelo(sentences,model.idioma,etiquetas)
|
563 |
+
out=modelo.salida_texto2( ides,predicted,etiquetas)
|
564 |
print('out es:',out)
|
565 |
df_new[item] = modelo.unir_array(out)
|
566 |
|
567 |
return modelo.idioma,"", df_new, df_new.to_csv(sep='\t', encoding='utf-8',index=False)
|
568 |
+
|
569 |
else:
|
570 |
print('json')
|
571 |
if archivo.name.split(".")[1]=="json":
|
|
|
580 |
sentences=df[item]
|
581 |
|
582 |
ides, predicted = modelo.aplicar_modelo(sentences,modelo.idioma,etiquetas)
|
583 |
+
out=modelo.salida_texto2( ides,predicted,etiquetas)
|
584 |
|
585 |
print('out:',out)
|
586 |
df_new[item] = modelo.unir_array(out)
|
587 |
|
588 |
|
589 |
+
|
590 |
return modelo.idioma,"", df_new, df_new.to_csv(sep='\t', encoding='utf-8',index=False)
|
591 |
|
592 |
demo = gr.Interface(fn=procesar,inputs=["text",gr.File(), "checkbox"] , outputs=[gr.Label(label="idioma/categor铆a"),gr.Textbox(label="texto procesado"),gr.Dataframe(label="Datos procesados en dataframe",interactive=False),gr.Textbox(label="datos csv")])
|