dayannex commited on
Commit
4fe5a18
1 Parent(s): 087cfb6

documentacion

Browse files
Files changed (1) hide show
  1. app.py +39 -20
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=[] #ignorar estos indices del array de indentificadores
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
- #return new_labels
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=[] #ignorar estos indices del array de indentificadores
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
- #_predicted_tokens_classes[i]=[model.config.id2label[t.item()] for t in predicted_token_class_ids[i]]
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#ids,_predicted_tokens_classes
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
- #_predicted_tokens_classes[i]=[model.config.id2label[t.item()] for t in predicted_token_class_ids[i]]
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
- #return ids, _predicted_tokens_classes
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]))#rev space
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
- # Catch any other exceptions
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)#tokens,labels
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
- #return "", df_new, df_new.to_excel( index=False)
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)#tokens,labels
565
 
566
  print('out:',out)
567
  df_new[item] = modelo.unir_array(out)
568
 
569
 
570
- #return "", df, df.to_csv(sep='\t', encoding='utf-8',index=False)
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")])