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