-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
101 lines (80 loc) · 3.1 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# Python Natives
from math import isnan as nan
import time
# Modulos DB
import db
from models import Investigacion, DiccionarioLema
db.Base.metadata.create_all(db.engine) # Creacion de Tablas
# Modulos Procesamiento de Texto
from corpus import construccion_corpus
from lemas import lematizar_corpus, diccionario_lemas
from estructura_datos import resumenes_estudiantes, resumenes_docentes, estructura_dataset
from query import query_id_investigacion
docentes = estructura_dataset(resumenes_docentes)
estudiantes = estructura_dataset(resumenes_estudiantes)
def add_data():
columns = docentes
resumenes = []
# Resumenes Docentes Agregando Data a la BD
for index, resumen in docentes.iterrows():
data = {}
for column in columns:
try:
value = int(resumen[column]) if not nan(resumen[column]) else None
except:
value = resumen[column]
data[column] = value
data['tipo_resumen'] = 'docentes'
investigacion = Investigacion(data) # Creamos el Objeto
resumenes.append(investigacion)
# db.session.add(investigacion) # Agregamos a la session
# del docentes
# del resumenes_docentes
# Resumenes Estudiantes Agregando Data a la BD
for index, resumen in estudiantes.iterrows():
data = {}
for column in columns:
try:
value = int(resumen[column]) if not nan(resumen[column]) else None
except:
value = resumen[column]
data[column] = value
data['tipo_resumen'] = 'estudiantes'
investigacion = Investigacion(data) # Creamos el Objeto
resumenes.append(investigacion)
# db.session.add(investigacion)
# del estudiantes
# del resumenes_estudiantes
db.session.add_all(resumenes)
db.session.commit() # Realizamos la operacion atomica
# del resumenes
print('Base de datos con Resumenes')
def build_corpus():
investigaciones = tuple(db.session.query(Investigacion).all())
for investigacion in investigaciones:
corpus, corpus_limpio = construccion_corpus(**vars(investigacion))
corpus_lemas = lematizar_corpus(corpus_limpio)
investigacion.corpus = corpus
investigacion.corpus_palabras = corpus_limpio
investigacion.corpus_lemas = corpus_lemas
print('Investigacion: ' + str(investigacion.id) + ' Completo')
db.session.flush()
db.session.commit()
print('Corpus Añadidos !')
def build_vocabulary():
vocabulario = []
if db.session.query(DiccionarioLema).count() == 0:
for key, value in diccionario_lemas.items():
vocabulario.append(DiccionarioLema(key, value))
db.session.add_all(vocabulario)
db.session.commit()
if __name__ == '__main__':
start = time.time()
add_data() # Agregar Datos
del resumenes_docentes, docentes
del resumenes_estudiantes, estudiantes
build_corpus() # Construir Corpus
build_vocabulary() # Añadir Vocabulario
end = time.time()
minutes, seconds = divmod(end - start, 60)
print(f'Minutos: {minutes} - Segundos: {seconds}')