Spaces:
Sleeping
Sleeping
File size: 3,812 Bytes
80129c2 a022c55 80129c2 915fb36 90c2a10 68c1bf8 80129c2 90c2a10 ed8f158 80129c2 fbce5cc 80129c2 2b8f9f3 5ceccd9 8a4bbe5 58f0b57 10e698d 25d41aa 6634984 80129c2 a022c55 e8a157f 58f0b57 9e50c36 319a73a 7e0aa86 e157d16 e8a157f feadd9a 58f0b57 e8a157f |
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 71 72 73 74 75 76 77 78 79 80 81 |
import streamlit as st
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer, GPT2Tokenizer, GPT2LMHeadModel, MT5Model, AutoModelForSeq2SeqLM, BartForConditionalGeneration, BartTokenizer
# Frasi di esempio
examples = [
"Caesar in Gallia bellum gessit. <mask> instructae erant, sed subito",
"Est autem et aliud genus testudinis, quod <mask>, quemadmodum quae supra scripta sunt",
"Quemadmodum vero minores rotae duriores et <mask>, sic phalangae et iuga, in quibus partibus habent minora a centro ad capita intervalla",
"illud additur, ne, qui certum ordinem ex <mask>, ulli vos alteri hominum generi haerere vereamini nec timeatis vos"
]
examples_correct = [
"Omnes legiones",
"reliqua omnia habet",
"difficiliores habent motus",
"nostra definitione retinetis"
]
# Imposta una chiave di sessione per il testo input, così possiamo aggiornarlo
if "input_text_value" not in st.session_state:
st.session_state["input_text_value"] = examples[0]
if "input_text_value_correct" not in st.session_state:
st.session_state["input_text_value_correct"] = examples_correct[0]
st.title("Completamento di frasi in testi Latino Antico")
st.write("Esempi di testo (clicca sul bottone per copiare la frase nel campo di input):")
# Per ogni frase, creiamo una riga con la frase + bottone "Usa questa frase"
for i, example in enumerate(examples, start=1):
cols = st.columns([4,1]) # la prima colonna più larga per il testo, la seconda più stretta per il bottone
with cols[0]:
st.write(f"Esempio {i}: {example}")
with cols[1]:
# Se il bottone viene premuto, aggiorna la session state
if st.button(f"Usa {i}"):
st.session_state["input_text_value"] = example
st.session_state["input_text_value_correct"] = examples_correct[i]
# Qui la text_input è associata alla chiave "input_text_value"
input_text = st.text_area(
label="Testo:",
height=150, # Altezza in pixel
key="input_text_value"
)
# Esempio: carichiamo un modello di linguaggio
# (sostituisci con i tuoi modelli)
#model = GPT2LMHeadModel.from_pretrained("Cicciokr/GPT2-Latin-GenText")
#tokenizer = GPT2Tokenizer.from_pretrained("Cicciokr/GPT2-Latin-GenText")
#model_name = "morenolq/bart-it"
model_name_mio = "Cicciokr/BART-la-s"
model_mio = AutoModelForSeq2SeqLM.from_pretrained(model_name_mio)
tokenizer_mio = AutoTokenizer.from_pretrained(model_name_mio)
#tokenizer_mio.pad_token_id = tokenizer_mio.eos_token_id
#generator = pipeline("text2text-generation", model=model, tokenizer=tokenizer)
generator_mio = pipeline("text2text-generation", model=model_mio, tokenizer=tokenizer_mio)
# Se l'utente ha inserito (o selezionato) un testo
if input_text:
if 'input_text_value_correct' in st.session_state:
st.write(f" Parola corretta: {st.session_state['input_text_value_correct']}\n")
st.write(f" -----------------------------------------------------------\n")
inputs_mio = tokenizer_mio(input_text, return_tensors="pt")
output_mio = model_mio.generate(
**inputs_mio,
forced_bos_token_id=tokenizer_mio.bos_token_id,
max_length=50, do_sample=True, top_p=0.96, num_return_sequences=5
#num_return_sequences=1,
#top_k=50, # 🔹 Maggiore varietà nelle scelte
#top_p=0.95, # 🔹 Nucleus sampling per migliorare il realismo
#temperature=0.8, # 🔹 Bilancia la casualità
#repetition_penalty=1.2, # 🔹 Evita ripetizioni e loop
#max_length=50 # 🔹 Previene ripetizioni infinite
)
generated_text_mio = tokenizer_mio.decode(output_mio[0], skip_special_tokens=True)
#generated_text_mio = output_mio[0]["generated_text"]
st.subheader("Risultato BART CC100:")
st.write(f" Frase predetta: {generated_text_mio}\n")
|