|
import streamlit as st |
|
import pandas as pd |
|
from transformers import pipeline |
|
|
|
|
|
translator = pipeline("translation_ru_to_en", model="Helsinki-NLP/opus-mt-ru-en") |
|
summarizer = pipeline("summarization", model="facebook/bart-large-cnn") |
|
|
|
|
|
def translate_and_summarize(text): |
|
translated_text = translator(text)[0]['translation_text'] |
|
summary = 'News Alert. ' + summarizer(translated_text, max_length=140, min_length=110, do_sample=False)[0]['summary_text'] |
|
return summary |
|
|
|
|
|
def translate_and_summarize_first_paragraph(text): |
|
first_sentence = text.split('.')[0] + '.' |
|
translated_text = translator(first_sentence)[0]['translation_text'] |
|
summary = summarizer(translated_text, max_length=20, min_length=5, do_sample=False)[0]['summary_text'] |
|
return summary |
|
|
|
|
|
def main(): |
|
st.title("CSV Translator and Summarizer") |
|
|
|
|
|
uploaded_file = st.file_uploader("Choose a CSV file", type="csv") |
|
if uploaded_file is not None: |
|
|
|
data = pd.read_csv(uploaded_file) |
|
|
|
if 'Description' in data.columns and 'Published' in data.columns: |
|
|
|
data['Full Summary'] = data.apply( |
|
lambda row: translate_and_summarize(row['Description']) if pd.isna(row['Published']) else "", axis=1 |
|
) |
|
|
|
data['First Paragraph Summary'] = data['Description'].apply(translate_and_summarize_first_paragraph) |
|
|
|
st.write(data[['ID', 'Title', 'Full Summary', 'First Paragraph Summary']]) |
|
else: |
|
st.error("Uploaded CSV does not contain required 'Description' and 'Published' columns.") |
|
|
|
if __name__ == "__main__": |
|
main() |
|
|