File size: 1,936 Bytes
18289d4
c25b75f
f19f087
a93b13f
c25b75f
a93b13f
c4c5633
 
 
 
 
 
bf3f422
 
c25b75f
28eb84c
c25b75f
f19f087
 
 
 
 
 
 
 
555c645
f19f087
c42eca7
f19f087
 
 
 
 
 
 
 
 
c42eca7
 
 
c25b75f
3b661ef
 
 
 
 
e11dea6
3b661ef
 
 
 
 
a93b13f
8a414e2
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
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?"]
    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"
    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()