Spaces:
Runtime error
Runtime error
Upload app.py
Browse files
app.py
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
"""Copia de app.ipynb
|
3 |
+
|
4 |
+
Automatically generated by Colab.
|
5 |
+
|
6 |
+
Original file is located at
|
7 |
+
https://colab.research.google.com/drive/1CWlm7_FskC5LwZaYL-sgzASC5LDAzZ15
|
8 |
+
"""
|
9 |
+
|
10 |
+
!pip install torch torchvision torchaudio
|
11 |
+
|
12 |
+
!pip install gradio
|
13 |
+
import gradio as gr
|
14 |
+
|
15 |
+
import transformers
|
16 |
+
from transformers import pipeline
|
17 |
+
import pandas as pd
|
18 |
+
|
19 |
+
from transformers import AutoModelForQuestionAnswering, AutoTokenizer
|
20 |
+
|
21 |
+
model_name = "mrm8488/distill-bert-base-spanish-wwm-cased-finetuned-spa-squad2-es"
|
22 |
+
|
23 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
24 |
+
model = AutoModelForQuestionAnswering.from_pretrained(model_name)
|
25 |
+
|
26 |
+
df = pd.read_csv('https://docs.google.com/spreadsheets/d/e/2PACX-1vSWJvS1tP7pp_GpF1fb-KXDyQoACbxKZlUfB4Gd3SFHnX6Jz3xs9-9t0yMOnfPd59Up50Fp8OS02epO/pub?gid=1955047855&single=true&output=csv')
|
27 |
+
|
28 |
+
df['contexto'] = df['Descripción'] + '' + df['Atributos'] + ''
|
29 |
+
|
30 |
+
contestador = pipeline('question-answering', model='mrm8488/distill-bert-base-spanish-wwm-cased-finetuned-spa-squad2-es', from_pt=True)
|
31 |
+
def obtener_origen(personaje):
|
32 |
+
columna = df[df['Personaje'] == personaje]
|
33 |
+
if columna.empty:
|
34 |
+
return f'El personaje "{personaje}" no se encuentra en la base de datos.'
|
35 |
+
origen = columna.iloc[0]['Origen']
|
36 |
+
return f'El origen de este ser mitológico "{personaje}" es "{origen}".'
|
37 |
+
|
38 |
+
def responder_pregunta(personaje, pregunta):
|
39 |
+
columna = df[df['Personaje'] == personaje]
|
40 |
+
if columna.empty:
|
41 |
+
return f'El personaje "{personaje}" no se encuentra en la base de datos.'
|
42 |
+
contexto = columna.iloc[0]['contexto']
|
43 |
+
|
44 |
+
resultado = {'answer': f'{contexto}'}
|
45 |
+
return resultado['answer']
|
46 |
+
|
47 |
+
def interfaz(nombre, pregunta):
|
48 |
+
origen = obtener_origen(nombre)
|
49 |
+
respuesta = responder_pregunta(nombre, pregunta)
|
50 |
+
return f"Respuesta: {respuesta}\nOrigen: {origen}"
|
51 |
+
|
52 |
+
demo = gr.Interface(
|
53 |
+
fn=interfaz,
|
54 |
+
inputs=[gr.Textbox(label="Nombre del personaje"), gr.Textbox(label="Pregunta")],
|
55 |
+
outputs=gr.Textbox(label="Respuesta"),
|
56 |
+
title="Sistema de Respuesta a Preguntas sobre Personajes Mitológicos",
|
57 |
+
description="Introduce el nombre del personaje y la pregunta (ejem. ¿Cómo es?, ¿qué hace?...) para obtener una respuesta basada en los datos disponibles."
|
58 |
+
)
|
59 |
+
demo.launch()
|