File size: 2,964 Bytes
0659652
c7ab302
21c571e
7adcdd9
 
 
 
 
 
0659652
7adcdd9
 
257c54d
7adcdd9
 
 
 
 
 
0659652
7adcdd9
 
 
cfc942c
7adcdd9
 
0ef6009
 
7adcdd9
9eda48b
0659652
7adcdd9
35550d2
7adcdd9
 
 
 
0ef6009
7adcdd9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dda8d7a
7adcdd9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
65
66
67
68
69
70
import streamlit as st
from transformers import pipeline, AutoModelForMaskedLM, AutoTokenizer

# CLTK per l'analisi testuale del latino
try:
    from cltk import NLP
    nlp_lat = NLP(language="lat")
except ImportError:
    nlp_lat = None

# Titolo app
st.title("Completamento di parole in testi Latino Antico con Analisi Morfologica")

# Esempi di testo di partenza
st.write("Esempi di testo:")
st.write("Asdrubal, frater Annibalis, qui secundo Punico bello [MASK] ingentibus copiis ab Hispania veniens ...")
st.write("hanno et mago qui [MASK]  punico bello cornelium consulem aput liparas ceperunt ...")
st.write("Lorem ipsum dolor sit amet, [MASK] adipiscing elit.")
st.write("Populus Romanus cum Macedonibus [MASK] ter gessit")

# Input utente
input_text = st.text_input("Testo:", 
    value="Lorem ipsum dolor sit amet, [MASK] adipiscing elit.")

# Caricamento modello e tokenizer (esempio con un modello RoBERTa addestrato su testi latini)
# Cambia i nomi dei modelli secondo le tue necessità
tokenizer_roberta = AutoTokenizer.from_pretrained("Cicciokr/Roberta-Base-Latin-Uncased")
model_roberta = AutoModelForMaskedLM.from_pretrained("Cicciokr/Roberta-Base-Latin-Uncased")
fill_mask_roberta = pipeline("fill-mask", model=model_roberta, tokenizer=tokenizer_roberta)

if input_text:
    # Sostituisci [MASK] con il token <mask> usato dal modello RoBERTa
    input_text_roberta = input_text.replace("[MASK]", "<mask>")

    # Ottenere le predizioni
    predictions_roberta = fill_mask_roberta(input_text_roberta)

    st.subheader("Risultati delle previsioni:")
    for i, pred_roberta in enumerate(predictions_roberta):
        st.write(
            f"**Previsione {i+1}:** "
            f"Parola: {pred_roberta['token_str']} | "
            f"Probabilità: {pred_roberta['score']:.4f}"
        )
        st.write(f"Sequence: {pred_roberta['sequence']}")
        st.write("---")
    
    # Se vuoi fare l'analisi morfologica con CLTK sulle frasi predette
    if nlp_lat is not None:
        st.subheader("Analisi Morfologica CLTK delle frasi predette")

        for i, pred_roberta in enumerate(predictions_roberta):
            # Ricostruisci la frase sostituendo <mask> con il token predetto
            predicted_text = input_text_roberta.replace("<mask>", pred_roberta['token_str'])

            # Esegui l'analisi NLP con CLTK sul testo completo
            doc = nlp_lat(predicted_text)
            
            st.write(f"**Analisi frase {i+1}:** {predicted_text}")
            for token in doc.tokens:
                st.write(
                    f"- **Token**: {token.string}\n"
                    f"  - Lemma: {token.lemma}\n"
                    f"  - UPOS: {token.upos}\n"
                    f"  - Caratteristiche morfologiche: {token.features}\n"
                )
            st.write("---")
    else:
        st.write("**CLTK non installato o non importato correttamente.** "
                 "Esegui `pip install cltk` e riavvia l'app.")