Cicciokr commited on
Commit
f99351f
·
verified ·
1 Parent(s): 2769358

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +80 -0
app.py ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from transformers import pipeline, AutoModelForMaskedLM, AutoTokenizer
3
+
4
+ # Esempio: prova a importare CLTK (se presente)
5
+ try:
6
+ from cltk import NLP
7
+ nlp_lat = NLP(language="lat")
8
+ except ImportError:
9
+ nlp_lat = None
10
+
11
+ # Imposta una chiave di sessione per il testo input, così possiamo aggiornarlo
12
+ if "input_text_value" not in st.session_state:
13
+ st.session_state["input_text_value"] = "Lorem ipsum dolor sit amet, [MASK] adipiscing elit."
14
+
15
+ # Frasi di esempio
16
+ examples = [
17
+ "Asdrubal, frater Annibalis, qui secundo Punico bello [MASK] ingentibus copiis ab Hispania veniens ...",
18
+ "hanno et mago qui [MASK] punico bello cornelium consulem aput liparas ceperunt ...",
19
+ "Lorem ipsum dolor sit amet, [MASK] adipiscing elit.",
20
+ "Populus Romanus cum Macedonibus [MASK] ter gessit"
21
+ ]
22
+
23
+ st.title("Completamento di parole in testi Latino Antico con Analisi Morfologica")
24
+
25
+ st.write("**Esempi di testo** (clicca sul bottone per copiare la frase nel campo di input):")
26
+
27
+ # Per ogni frase, creiamo una riga con la frase + bottone "Usa questa frase"
28
+ for i, example in enumerate(examples, start=1):
29
+ cols = st.columns([4,1]) # la prima colonna più larga per il testo, la seconda più stretta per il bottone
30
+ with cols[0]:
31
+ st.write(f"**Esempio {i}:** {example}")
32
+ with cols[1]:
33
+ # Se il bottone viene premuto, aggiorna la session state
34
+ if st.button(f"Usa {i}"):
35
+ st.session_state["input_text_value"] = example
36
+
37
+ # Qui la text_input è associata alla chiave "input_text_value"
38
+ input_text = st.text_input("Testo:", key="input_text_value")
39
+
40
+ # Esempio: carichiamo un modello di linguaggio
41
+ # (sostituisci con i tuoi modelli)
42
+ tokenizer_roberta = AutoTokenizer.from_pretrained("Cicciokr/Roberta-Base-Latin-Uncased")
43
+ model_roberta = AutoModelForMaskedLM.from_pretrained("Cicciokr/Roberta-Base-Latin-Uncased")
44
+ fill_mask_roberta = pipeline("fill-mask", model=model_roberta, tokenizer=tokenizer_roberta)
45
+
46
+ # Se l'utente ha inserito (o selezionato) un testo
47
+ if input_text:
48
+ # Sostituiamo [MASK] con <mask> (lo tokenizer Roberta se lo aspetta così)
49
+ input_text_roberta = input_text.replace("[MASK]", "<mask>")
50
+ predictions_roberta = fill_mask_roberta(input_text_roberta)
51
+
52
+ st.subheader("Risultati delle previsioni (RoBERTa):")
53
+ for pred in predictions_roberta:
54
+ st.write(
55
+ f"**Token:** {pred['token_str']} - "
56
+ f"**Probabilità:** {pred['score']:.4f}\n"
57
+ f"**Sequence:** {pred['sequence']}\n"
58
+ )
59
+ st.write("---")
60
+
61
+ # Esempio di analisi con CLTK (se installato e importato)
62
+ if nlp_lat is not None:
63
+ st.subheader("Analisi Morfologica con CLTK (opzionale)")
64
+
65
+ for i, pred in enumerate(predictions_roberta, start=1):
66
+ # Ricostruisci la frase sostituendo <mask> con la parola predetta
67
+ predicted_text = input_text_roberta.replace("<mask>", pred['token_str'])
68
+ doc = nlp_lat(predicted_text)
69
+
70
+ st.write(f"**Frase {i}:** {predicted_text}")
71
+ for token in doc.tokens:
72
+ st.write(
73
+ f"- **Token**: {token.string}\n"
74
+ f" - Lemma: {token.lemma}\n"
75
+ f" - UPOS: {token.upos}\n"
76
+ f" - Morfologia: {token.features}\n"
77
+ )
78
+ st.write("---")
79
+ else:
80
+ st.warning("CLTK non installato (o non importato). Esegui `pip install cltk` per abilitare l'analisi.")