# Core Pkgs import streamlit as st from function import * # EDA Pkgs import pandas as pd import matplotlib.pyplot as plt from wordcloud import WordCloud # Utils from datetime import datetime warnings.filterwarnings("ignore") # page info setup menu_items = { 'Get help':'https://https://www.linkedin.com/in/ayomide-ishola-924014162/' , 'Report a bug': 'https://www.linkedin.com/in/ayomide-ishola-924014162/', 'About': ''' ## My Custom App Some markdown to show in the About dialog. ''' } #page configuration st.set_page_config(page_title="Article Summariser", page_icon="./favicon/favicon.ico",menu_items=menu_items) st.set_option('deprecation.showPyplotGlobalUse', False) def main(): # This is used to hide the made with streamlit watermark hide_streamlit_style = """ """ st.markdown(hide_streamlit_style, unsafe_allow_html=True) # Article Summariser heading st.markdown("

Article Summariser

", unsafe_allow_html=True) # control for Model Settings st.sidebar.markdown("

Model Settings

", unsafe_allow_html=True) max_length= st.sidebar.slider("Maximum length of the generated text",min_value=100,max_value=500) min_length= st.sidebar.slider("Minimum length of the generated text",min_value=30) model_type = st.sidebar.selectbox("Model type", options=["Bart","T5", "Bart + T5"]) # This function is used to upload a .txt, .pdf, .docx file for summarization upload_doc = st.file_uploader("Upload a .txt, .pdf, .docx file for summarisation") st.markdown("

or

",unsafe_allow_html=True) #This function is used to Type your Message (text area) plain_text = st.text_area("Type your text below",height=200) # this is used to control the logic of the code if upload_doc: clean_text = preprocess_plain_text(extract_text_from_file(upload_doc)) else: clean_text = preprocess_plain_text(plain_text) summarize = st.button("Summarise") # called on toggle button [summarize] if summarize: if model_type == "Bart": text_to_summarize = clean_text with st.spinner( text="Loading Bart Model and Extracting summary. This might take a few seconds depending on the length of your text..."): summarizer_model = bart() summarized_text = summarizer_model(text_to_summarize, max_length=max_length ,min_length=min_length) summarized_text = ' '.join([summ['summary_text'] for summ in summarized_text]) elif model_type == "T5": text_to_summarize = clean_text with st.spinner( text="Loading T5 Model and Extracting summary. This might take a few seconds depending on the length of your text..."): summarizer_model = t5() summarized_text = summarizer_model(text_to_summarize, max_length=max_length, min_length=min_length) summarized_text = ' '.join([summ['summary_text'] for summ in summarized_text]) elif model_type == "Bart + T5": text_to_summarize = clean_text with st.spinner( text="Loading Bart + T5 Models and Extracting summary. This might take a few seconds depending on the length of your text..."): summarizer_model = bart_t5() summarized_text = summarizer_model(text_to_summarize, max_length=max_length, min_length=min_length) summarized_text = ' '.join([summ['summary_text'] for summ in summarized_text]) res_col1 ,res_col2 = st.columns(2) with res_col1: st.subheader("Generated Text Visualisation") # Create and generate a word cloud image: wordcloud = WordCloud().generate(summarized_text) # Display the generated image: plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show() st.pyplot() summary_downloader(summarized_text) with res_col2: st.subheader("Summarised Text Output") st.success("Summarised Text") st.write(summarized_text) if __name__ == '__main__': main()