-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbert_spanish.py
62 lines (47 loc) · 1.68 KB
/
bert_spanish.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
# Importar
from transformers import AutoTokenizer, AutoModelForQuestionAnswering, pipeline
from textwrap import wrap
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
#Variables para el modelo
the_model = 'mrm8488/distill-bert-base-spanish-wwm-cased-finetuned-spa-squad2-es'
tokenizer = AutoTokenizer.from_pretrained(the_model, do_lower_case=False)
model = AutoModelForQuestionAnswering.from_pretrained(the_model)
nlp = pipeline('question-answering',model=model, tokenizer=tokenizer)
#Función para limpiar texto.
def limpiarTexto(ruta_archivo):
# Abrir el archivo
with open(ruta_archivo, 'r') as archivo:
# Leer el texto del archivo
text = archivo.read()
# Replace double quotes with single quotes
text = text.replace('"', "'")
# Dividir el texto en lineas
lines = text.split('\n')
# Quitar lineas vacias
lines = [line for line in lines if line.strip() != '']
# Unir las lineas
textoLimpio = "\n".join(lines)
return textoLimpio
#Función para preguntas y respuestas
def pregunta_respuesta(model, contexto, nlp):
#imprimir contexto
print('Contexto:')
print('-------------------')
print('\n'.join(wrap(contexto)))
#Loop preguntas-respuestas
continuar = True
while continuar:
print('\nPregunta:')
print('-------------------')
pregunta = str(input())
continuar = pregunta!=''
if continuar:
salida = nlp({'question':pregunta, 'context':contexto})
print('\nRespuesta:')
print('-------------------')
print(salida['answer'])
os.system('clear')
archivo = input("Introduce la ruta del contexto en .txt: ")
contexto = limpiarTexto(archivo)
pregunta_respuesta(model,contexto,nlp)