farmax commited on
Commit
80ec853
·
verified ·
1 Parent(s): b36e5d1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -15
app.py CHANGED
@@ -1,19 +1,19 @@
1
  import gradio as gr
2
- from transformers import AutoTokenizer, AutoModelForQuestionAnswering, pipeline
3
 
4
  # Modelli
5
  MODEL_DEBERTA = "osiria/deberta-italian-question-answering"
6
- MODEL_UMBERTO = "Musixmatch/umberto-commoncrawl-cased-v1"
7
 
8
  # Pipeline DeBERTa (estrattivo)
9
  tok_deb = AutoTokenizer.from_pretrained(MODEL_DEBERTA)
10
  mdl_deb = AutoModelForQuestionAnswering.from_pretrained(MODEL_DEBERTA)
11
  qa_deb = pipeline("question-answering", model=mdl_deb, tokenizer=tok_deb, device=-1)
12
 
13
- # Pipeline UmBERTo (estrattivo)
14
- tok_umb = AutoTokenizer.from_pretrained(MODEL_UMBERTO)
15
- mdl_umb = AutoModelForQuestionAnswering.from_pretrained(MODEL_UMBERTO)
16
- qa_umb = pipeline("question-answering", model=mdl_umb, tokenizer=tok_umb, device=-1)
17
 
18
  def ensemble_invoice_qa(md_text: str, question: str):
19
  results = {}
@@ -28,22 +28,22 @@ def ensemble_invoice_qa(md_text: str, question: str):
28
  except Exception as e:
29
  results["DeBERTa (estrattivo)"] = {"errore": str(e)}
30
 
31
- # Estrattivo (UmBERTo)
32
  try:
33
- res_umb = qa_umb(question=question, context=md_text)
34
- results["UmBERTo (estrattivo)"] = {
35
- "risposta": res_umb["answer"].strip(),
36
- "confidenza": round(res_umb["score"], 3)
37
  }
38
  except Exception as e:
39
- results["UmBERTo (estrattivo)"] = {"errore": str(e)}
40
 
41
  return results
42
 
43
  # ================== UI Gradio ==================
44
  with gr.Blocks(theme=gr.themes.Base()) as demo:
45
- gr.Markdown("# 🧾 Invoice QA: Ensemble DeBERTa + UmBERTo")
46
- gr.Markdown("Confronto tra risposte estrattive di due modelli italiani.")
47
 
48
  with gr.Row():
49
  with gr.Column(scale=1):
@@ -61,7 +61,7 @@ with gr.Blocks(theme=gr.themes.Base()) as demo:
61
  btn = gr.Button("🔍 Analizza Documento", variant="primary")
62
 
63
  with gr.Column(scale=1):
64
- out_json = gr.JSON(label="Risultati Ensemble (DeBERTa vs UmBERTo)")
65
 
66
  btn.click(
67
  fn=ensemble_invoice_qa,
 
1
  import gradio as gr
2
+ from transformers import AutoTokenizer, AutoModelForQuestionAnswering, AutoModelForCausalLM, pipeline
3
 
4
  # Modelli
5
  MODEL_DEBERTA = "osiria/deberta-italian-question-answering"
6
+ MODEL_GEPPETTO = "LorenzoDeMattei/GePpeTto"
7
 
8
  # Pipeline DeBERTa (estrattivo)
9
  tok_deb = AutoTokenizer.from_pretrained(MODEL_DEBERTA)
10
  mdl_deb = AutoModelForQuestionAnswering.from_pretrained(MODEL_DEBERTA)
11
  qa_deb = pipeline("question-answering", model=mdl_deb, tokenizer=tok_deb, device=-1)
12
 
13
+ # Pipeline GePpeTto (generativo)
14
+ tok_gepp = AutoTokenizer.from_pretrained(MODEL_GEPPETTO)
15
+ mdl_gepp = AutoModelForCausalLM.from_pretrained(MODEL_GEPPETTO)
16
+ qa_gepp = pipeline("text-generation", model=mdl_gepp, tokenizer=tok_gepp, device=-1)
17
 
18
  def ensemble_invoice_qa(md_text: str, question: str):
19
  results = {}
 
28
  except Exception as e:
29
  results["DeBERTa (estrattivo)"] = {"errore": str(e)}
30
 
31
+ # Generativo (GePpeTto)
32
  try:
33
+ prompt = f"Domanda: {question}\nContesto: {md_text}\nRisposta:"
34
+ res_gepp = qa_gepp(prompt, max_new_tokens=64, do_sample=False)
35
+ results["GePpeTto (generativo)"] = {
36
+ "risposta": res_gepp[0]["generated_text"].replace(prompt, "").strip()
37
  }
38
  except Exception as e:
39
+ results["GePpeTto (generativo)"] = {"errore": str(e)}
40
 
41
  return results
42
 
43
  # ================== UI Gradio ==================
44
  with gr.Blocks(theme=gr.themes.Base()) as demo:
45
+ gr.Markdown("# 🧾 Invoice QA: Ensemble DeBERTa + GePpeTto")
46
+ gr.Markdown("Confronto tra risposte estrattive (DeBERTa) e generative (GePpeTto).")
47
 
48
  with gr.Row():
49
  with gr.Column(scale=1):
 
61
  btn = gr.Button("🔍 Analizza Documento", variant="primary")
62
 
63
  with gr.Column(scale=1):
64
+ out_json = gr.JSON(label="Risultati Ensemble (Estrattivo vs Generativo)")
65
 
66
  btn.click(
67
  fn=ensemble_invoice_qa,