| 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("Пожалуйста, введите текст для перевода.") |
|
|