File size: 4,803 Bytes
61f188a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
752552c
61f188a
 
 
 
 
 
 
 
 
 
 
752552c
8279c98
61f188a
 
 
0f1bd20
61f188a
cffd6ee
61f188a
 
752552c
61f188a
 
 
 
64e025d
61f188a
 
 
 
 
 
 
752552c
61f188a
 
 
 
 
 
 
 
 
d4ce5ca
 
61f188a
 
 
 
 
 
 
d4ce5ca
 
61f188a
2cf8964
 
 
 
 
6bc1c56
d4ce5ca
 
2cf8964
522dca9
61f188a
752552c
61f188a
 
 
 
 
 
 
 
 
 
752552c
 
61f188a
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# 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 = """
                <style>
                footer {visibility: hidden;}
                </style>
                """
        st.markdown(hide_streamlit_style, unsafe_allow_html=True)

        # Article Summariser heading
        st.markdown("<h1 style = 'color:green; align:center; font-size: 40px;'> Article Summariser</h1>", unsafe_allow_html=True)
        
        # control for Model Settings
        st.sidebar.markdown("<h4 style = 'color:green; align:center; font-size: 20px;'> Model Settings</h1>", 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", "SSR",])
        
        # 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("<h3 style='text-align: center; color: green;'>or</h3>",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()
                    global summarized_text = summarizer_model(text_to_summarize, max_length=max_length ,min_length=min_length)
                    global 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()
                    global summarized_text = summarizer_model(text_to_summarize, max_length=max_length, min_length=min_length)
                    global summarized_text = ' '.join([summ['summary_text'] for summ in summarized_text])                      

            elif model_type == "ssr":
                text_to_summarize = clean_text

                with st.spinner(
                    text="Loading SSR Model and Extracting summary. This might take a few seconds depending on the length of your text..."):
                    summarizer_model = ssr()
                    global summarized_text = summarizer_model(text_to_summarize, max_length=max_length, min_length=min_length)
                    global 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()