File size: 2,382 Bytes
18289d4
c25b75f
f19f087
a93b13f
c25b75f
a93b13f
c4c5633
 
 
 
 
 
bf3f422
 
c25b75f
28eb84c
c25b75f
f19f087
 
 
 
 
 
 
 
555c645
f19f087
c42eca7
087d5de
f19f087
 
 
 
 
 
 
 
5c8cdfe
d94d433
a92ebf9
 
 
 
 
 
 
 
c42eca7
 
d90e55c
c25b75f
3b661ef
 
 
087d5de
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
55
56
57
58
59
60
61
62
63
64
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()