Spaces:
Sleeping
Sleeping
Create app.py
Browse files
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.")
|