lik07 commited on
Commit
2615d12
verified
1 Parent(s): ace795f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -4
app.py CHANGED
@@ -5,6 +5,7 @@ from docx import Document
5
  from io import BytesIO
6
  import tempfile
7
  import os
 
8
 
9
  # Cargar el modelo de SpaCy en espa帽ol
10
  nlp = spacy.load('zh_core_web_trf')
@@ -12,6 +13,7 @@ nlp = spacy.load('zh_core_web_trf')
12
 
13
  # Funci贸n para procesar bloques de texto y extraer nombres de personas
14
  def extract_names_from_text(text):
 
15
  doc = nlp(text)
16
  # Extraer las entidades de tipo PERSON
17
  persons = [ent.text for ent in doc.ents if ent.label_ == 'PERSON']
@@ -43,6 +45,13 @@ def split_text(text, max_length=100000):
43
 
44
  return result
45
 
 
 
 
 
 
 
 
46
  # Funci贸n principal para extraer nombres de personas desde un archivo DOCX
47
  def extract_names_from_docx(docx_file):
48
  # Cargar el archivo DOCX
@@ -57,11 +66,12 @@ def extract_names_from_docx(docx_file):
57
  # Dividir el texto en fragmentos si es necesario
58
  text_fragments = split_text(text)
59
 
60
- # Extraer los nombres de cada fragmento y combinarlos
 
 
 
61
  all_persons = []
62
- for fragment in text_fragments:
63
- print(f'{len(fragment)}\n\n{fragment}')
64
- persons = extract_names_from_text(fragment)
65
  all_persons.extend(persons)
66
 
67
  # Eliminar duplicados
 
5
  from io import BytesIO
6
  import tempfile
7
  import os
8
+ import multiprocessing as mp # Importar multiprocessing para paralelismo
9
 
10
  # Cargar el modelo de SpaCy en espa帽ol
11
  nlp = spacy.load('zh_core_web_trf')
 
13
 
14
  # Funci贸n para procesar bloques de texto y extraer nombres de personas
15
  def extract_names_from_text(text):
16
+ print(f'{len(text)}/n/n{text}')
17
  doc = nlp(text)
18
  # Extraer las entidades de tipo PERSON
19
  persons = [ent.text for ent in doc.ents if ent.label_ == 'PERSON']
 
45
 
46
  return result
47
 
48
+ # Funci贸n para paralelizar la extracci贸n de nombres
49
+ def extract_names_from_fragments(fragments):
50
+ # Utiliza todos los n煤cleos disponibles de la CPU
51
+ with mp.Pool(mp.cpu_count()) as pool:
52
+ results = pool.map(extract_names_from_text, fragments)
53
+ return results
54
+
55
  # Funci贸n principal para extraer nombres de personas desde un archivo DOCX
56
  def extract_names_from_docx(docx_file):
57
  # Cargar el archivo DOCX
 
66
  # Dividir el texto en fragmentos si es necesario
67
  text_fragments = split_text(text)
68
 
69
+ # Extraer los nombres de cada fragmento en paralelo
70
+ results = extract_names_from_fragments(text_fragments)
71
+
72
+ # Unir todos los resultados de nombres en una sola lista
73
  all_persons = []
74
+ for persons in results:
 
 
75
  all_persons.extend(persons)
76
 
77
  # Eliminar duplicados