import streamlit as st from transformers import pipeline if __name__ == '__main__': ru_en_translator = pipeline('translation_ru_to_en', model='Helsinki-NLP/opus-mt-ru-en') en_ru_translator = pipeline('translation_en_to_ru', model='Helsinki-NLP/opus-mt-en-ru') summarizer = pipeline('summarization', model='facebook/bart-large-cnn') st.title("Переводчик с суммированием") st.write("Перевод между русским и английским языками с кратким изложением перевода.") input_text = st.text_area("Введите текст для перевода:") language_options = { "Русский": "ru_RU", "Английский": "en_XX" } src_lang = st.selectbox("Выберите исходный язык:", list(language_options.keys())) tgt_lang = st.selectbox("Выберите целевой язык:", list(language_options.keys())) if st.button("Перевести"): if tgt_lang == src_lang: st.write("Выберите другой язык для перевода") elif input_text.strip(): if src_lang == "Русский" and tgt_lang == "Английский": translation = ru_en_translator(input_text) translated_text = translation[0]['translation_text'] st.write(f"Перевод с Русского на Английский:") st.write(translated_text) elif src_lang == "Английский" and tgt_lang == "Русский": translation = en_ru_translator(input_text) translated_text = translation[0]['translation_text'] st.write(f"Перевод с Английского на Русский:") st.write(translated_text) if len(translated_text.split()) > 10: summary = summarizer(translated_text, max_length=50, min_length=10, do_sample=False) st.write("Краткий вариант перевода:") st.write(summary[0]['summary_text']) else: st.write("Текст слишком короткий для суммирования.") else: st.write("Пожалуйста, введите текст для перевода.")