import streamlit as st from transformers import AutoTokenizer, AutoModelForSeq2SeqLM import nltk # Wczytywanie modelu i tokenizera model_name = "clui/opus-mt-it-pl" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSeq2SeqLM.from_pretrained(model_name) # Upewnij się, że zasoby NLTK są zainstalowane nltk.download('punkt') def preprocess_text(input_text): """Usuwa nagłówki i zbędne spacje z tekstu.""" return ' '.join(line.strip() for line in input_text.splitlines() if line.strip() and not line.startswith('[')) def translate_text(text): """Tłumaczy tekst przy użyciu modelu.""" inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=512).input_ids outputs = model.generate(inputs, max_new_tokens=200, do_sample=True, top_k=30, top_p=0.95) return tokenizer.decode(outputs[0], skip_special_tokens=True) def translate_long_text(long_text): """Tłumaczy długi tekst, dzieląc go na całe zdania.""" sentences = nltk.sent_tokenize(long_text) # Dzielimy tekst na zdania translated_sentences = [translate_text(sentence) for sentence in sentences] # Tłumaczymy każde zdanie return ' '.join(translated_sentences) # Łączymy przetłumaczone zdania # Interfejs użytkownika st.title("Tłumacz") text = st.text_area("Wprowadź tekst:") if st.button("Tłumacz"): if text: clean_text = preprocess_text(text) if clean_text: translated_text = translate_long_text(clean_text) st.subheader("Przetłumaczone:") st.write(translated_text) else: st.warning("Brak tekstu do przetłumaczenia po przetworzeniu.") else: st.warning("Proszę wprowadzić tekst do przetłumaczenia.")