Cicciokr commited on
Commit
7adcdd9
·
verified ·
1 Parent(s): 0ef6009

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -27
app.py CHANGED
@@ -1,41 +1,70 @@
1
- #import streamlit as st
2
-
3
- #x = st.slider('Select a value')
4
- #st.write(x, 'squared is', x * x)
5
  import streamlit as st
6
  from transformers import pipeline, AutoModelForMaskedLM, AutoTokenizer
7
 
 
 
 
 
 
 
8
 
9
- st.title("Completamento di parole in testi Latino Antico")
10
- st.write("Inserisci un testo con il token [MASK] per vedere le previsioni del modello.")
11
-
12
 
13
- st.write("Esempi di testo:");
14
- st.write("Asdrubal, frater Annibalis, qui secundo Punico bello [MASK] ingentibus copiis ab Hispania veniens > cum");
15
- st.write("hanno et mago qui [MASK]  punico bello cornelium consulem aput liparas ceperunt > primo");
16
- st.write("Lorem ipsum dolor sit amet, [MASK] adipiscing elit. > consectetur");
17
- st.write("Populus Romanus cum Macedonibus [MASK] ter gessit => bellum");
18
- input_text = st.text_input("Testo:", value="Lorem ipsum dolor sit amet, [MASK] adipiscing elit.")
19
 
20
- # Model based on BERT
21
- #modelname = "./models/latin_bert/"
22
- #Hugging face LuisAVasquez/simple-latin-bert-uncased
23
- #modelname_lv = "LuisAVasquez/simple-latin-bert-uncased"
24
- #https://github.com/dbamman/latin-bert
25
 
26
- #ClassCat/roberta-base-latin-v2
 
27
  tokenizer_roberta = AutoTokenizer.from_pretrained("Cicciokr/Roberta-Base-Latin-Uncased")
28
  model_roberta = AutoModelForMaskedLM.from_pretrained("Cicciokr/Roberta-Base-Latin-Uncased")
29
- fill_mask_roberta = pipeline("fill-mask", model=model_robertaclasscat, tokenizer=tokenizer_robertaclasscat)
30
-
31
 
32
  if input_text:
33
- predictions = fill_mask(input_text)
34
-
35
  input_text_roberta = input_text.replace("[MASK]", "<mask>")
36
- predictions_roberta = fill_mask_roberta(input_text_roberta)
 
 
 
37
  st.subheader("Risultati delle previsioni:")
38
- for pred_roberta in predictions_roberta:
39
- st.write(f"**Parola**: {pred_roberta['token_str']}, **Probabilità**: {pred_roberta['score']:.4f}, **Sequence**: {pred_roberta['sequence']}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
 
41
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  from transformers import pipeline, AutoModelForMaskedLM, AutoTokenizer
3
 
4
+ # CLTK per l'analisi testuale del latino
5
+ try:
6
+ from cltk import NLP
7
+ nlp_lat = NLP(language="lat")
8
+ except ImportError:
9
+ nlp_lat = None
10
 
11
+ # Titolo app
12
+ st.title("Completamento di parole in testi Latino Antico con Analisi Morfologica")
 
13
 
14
+ # Esempi di testo di partenza
15
+ st.write("Esempi di testo:")
16
+ st.write("Asdrubal, frater Annibalis, qui secundo Punico bello [MASK] ingentibus copiis ab Hispania veniens ...")
17
+ st.write("hanno et mago qui [MASK]  punico bello cornelium consulem aput liparas ceperunt ...")
18
+ st.write("Lorem ipsum dolor sit amet, [MASK] adipiscing elit.")
19
+ st.write("Populus Romanus cum Macedonibus [MASK] ter gessit")
20
 
21
+ # Input utente
22
+ input_text = st.text_input("Testo:",
23
+ value="Lorem ipsum dolor sit amet, [MASK] adipiscing elit.")
 
 
24
 
25
+ # Caricamento modello e tokenizer (esempio con un modello RoBERTa addestrato su testi latini)
26
+ # Cambia i nomi dei modelli secondo le tue necessità
27
  tokenizer_roberta = AutoTokenizer.from_pretrained("Cicciokr/Roberta-Base-Latin-Uncased")
28
  model_roberta = AutoModelForMaskedLM.from_pretrained("Cicciokr/Roberta-Base-Latin-Uncased")
29
+ fill_mask_roberta = pipeline("fill-mask", model=model_roberta, tokenizer=tokenizer_roberta)
 
30
 
31
  if input_text:
32
+ # Sostituisci [MASK] con il token <mask> usato dal modello RoBERTa
 
33
  input_text_roberta = input_text.replace("[MASK]", "<mask>")
34
+
35
+ # Ottenere le predizioni
36
+ predictions_roberta = fill_mask_roberta(input_text_roberta)
37
+
38
  st.subheader("Risultati delle previsioni:")
39
+ for i, pred_roberta in enumerate(predictions_roberta):
40
+ st.write(
41
+ f"**Previsione {i+1}:** "
42
+ f"Parola: {pred_roberta['token_str']} | "
43
+ f"Probabilità: {pred_roberta['score']:.4f}"
44
+ )
45
+ st.write(f"Sequence: {pred_roberta['sequence']}")
46
+ st.write("---")
47
+
48
+ # Se vuoi fare l'analisi morfologica con CLTK sulle frasi predette
49
+ if nlp_lat is not None:
50
+ st.subheader("Analisi Morfologica CLTK delle frasi predette")
51
+
52
+ for i, pred_roberta in enumerate(predictions_roberta):
53
+ # Ricostruisci la frase sostituendo <mask> con il token predetto
54
+ predicted_text = input_text_roberta.replace("<mask>", pred_roberta['token_str'])
55
 
56
+ # Esegui l'analisi NLP con CLTK sul testo completo
57
+ doc = nlp_lat(predicted_text)
58
+
59
+ st.write(f"**Analisi frase {i+1}:** {predicted_text}")
60
+ for token in doc.tokens:
61
+ st.write(
62
+ f"- **Token**: {token.string}\n"
63
+ f" - Lemma: {token.lemma}\n"
64
+ f" - UPOS: {token.upos}\n"
65
+ f" - Caratteristiche morfologiche: {token.features}\n"
66
+ )
67
+ st.write("---")
68
+ else:
69
+ st.write("**CLTK non installato o non importato correttamente.** "
70
+ "Esegui `pip install cltk` e riavvia l'app.")