import streamlit as st from transformers import pipeline @st.cache_resource def summarization_model(): model_name = "google/pegasus-xsum" summarizer = pipeline( model=model_name, tokenizer=model_name, task="summarization" ) return summarizer def summarization_main(): st.markdown("

Text Summarization

", unsafe_allow_html=True) st.markdown("

What is text summarization about?

", unsafe_allow_html=True) st.write("Text summarization is producing a shorter version of a given text while preserving its important information.") st.markdown('___') source = st.radio("How would you like to start? Choose an option below", ["I want to input some text", "I want to upload a file"]) if source == "I want to input some text": sample_text = "" text = st.text_area("Input a text in English (10,000 characters max) or use the example below", value=sample_text, max_chars=10000, height=330) button = st.button("Get summary") if button: with st.spinner(text="Loading summarization model..."): summarizer = summarization_model() with st.spinner(text="Summarizing text..."): summary = summarizer(text, max_length=130, min_length=30) st.text(summary[0]["summary_text"]) elif source == "I want to upload a file": uploaded_file = st.file_uploader("Choose a .txt file to upload", type=["txt"]) if uploaded_file is not None: raw_text = str(uploaded_file.read(),"utf-8") text = st.text_area("", value=raw_text, height=330) button = st.button("Get summary") if button: with st.spinner(text="Loading summarization model..."): summarizer = summarization_model() with st.spinner(text="Summarizing text..."): summary = summarizer(text, max_length=130, min_length=30) st.text(summary[0]["summary_text"])