Donato8408's picture
Update app.py
cfc3335
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()