Spaces:
Runtime error
Runtime error
import gradio as gr | |
from transformers import pipeline | |
from difflib import SequenceMatcher | |
import PyPDF2 | |
# Aprire il documento PDF e estrarre il testo | |
with open('bro.pdf', 'rb') as pdf_file: | |
pdf_reader = PyPDF2.PdfFileReader(pdf_file) | |
document_text = "" | |
for i in range(pdf_reader.getNumPages()): | |
page = pdf_reader.getPage(i) | |
document_text += page.extractText() | |
question_input = gr.inputs.Textbox(label="Inserisci la tua domanda qui") | |
qa_model = pipeline("question-answering", model="anakin87/electra-italian-xxl-cased-squad-it") | |
def similar_questions(question, question_list): | |
max_ratio = 0 | |
best_question = "" | |
for q in question_list: | |
ratio = SequenceMatcher(None, question.lower(), q.lower()).ratio() | |
if ratio > max_ratio: | |
max_ratio = ratio | |
best_question = q | |
return best_question if max_ratio >= 0.9 else None | |
def answer_question(question): | |
ground_truth_questions = ["Qual è la capitale dell'Italia?", "Chi ha scritto la Divina Commedia?", "Qual è il fiume più lungo del mondo?", "Elencami tutti i filoni elaborati nel 2011 a Barcellona"] | |
similar_question = similar_questions(question, ground_truth_questions) | |
if similar_question: | |
if similar_question == "Qual è la capitale dell'Italia?": | |
return "Roma" | |
elif similar_question == "Chi ha scritto la Divina Commedia?": | |
return "Dante Alighieri" | |
elif similar_question == "Qual è il fiume più lungo del mondo?": | |
return "Nilo" | |
elif similar_question == "Elencami tutti i filoni elaborati nel 2011 a Barcellona": | |
return "• Sistemi multi-agente\n\ | |
• Vincoli e ricerca\n\ | |
• Rappresentazione della conoscenza\n\ | |
• Apprendimento automatico\n\ | |
• Elaborazione del linguaggio naturale\n\ | |
• Schedulazione e pianificazione\n\ | |
• Robotica e visione\n\ | |
• Gestione dell'incertezza\n\ | |
• Web" | |
else: | |
answer = qa_model(question=question, context=document_text, max_answer_len=200) | |
return answer["answer"] | |
examples = [ | |
["Qual è la capitale dell'Italia?", "Roma"], | |
["Chi ha scritto la Divina Commedia?", "Dante Alighieri"], | |
["Qual è il fiume più lungo del mondo?", "Nilo"], | |
] | |
gr.Interface( | |
fn=answer_question, | |
inputs=question_input, | |
outputs="text", | |
examples=examples, | |
examples_per_page=3, | |
).launch() |