|
import streamlit as st |
|
import sumy |
|
|
|
|
|
from sumy.parsers.plaintext import PlaintextParser |
|
from sumy.nlp.tokenizers import Tokenizer |
|
from sumy.summarizers.lex_rank import LexRankSummarizer |
|
from sumy.summarizers.text_rank import TextRankSummarizer |
|
from sumy.nlp.tokenizers import Tokenizer |
|
import pandas as pd |
|
import matplotlib.pyplot as plt |
|
|
|
from transformers import BartForConditionalGeneration, BartTokenizer |
|
from transformers import T5ForConditionalGeneration, T5Tokenizer |
|
from rouge import Rouge |
|
import altair as at |
|
import torch |
|
from Text_analysis import * |
|
from Metadata import * |
|
from app_utils import * |
|
from PIL import Image |
|
|
|
|
|
HTML_BANNER = """ |
|
<div style="background-color:lightgreen;padding:10px;border-radius:10px"> |
|
<h1 style="color:white;text-align:center;">Summary app </h1> |
|
</div> |
|
""" |
|
def load_image(file): |
|
img = Image.open(file) |
|
return img |
|
|
|
|
|
def main(): |
|
menu=['Summarization','Text-Analysis','Meta-Data'] |
|
choice=st.sidebar.selectbox("Menu",menu) |
|
|
|
|
|
if choice=='Summarization': |
|
stc.html(HTML_BANNER) |
|
st.image(load_image('summary.png')) |
|
st.subheader('summarization') |
|
raw_text=st.text_area("Enter the text you want to summarize") |
|
if st.button("Summarize"): |
|
with st.expander("Original Text"): |
|
st.write(raw_text) |
|
c1, c2 = st.columns(2) |
|
|
|
with c1: |
|
|
|
with st.expander("LexRank Summary"): |
|
try: |
|
summary = sumy_summarizer(raw_text) |
|
document_len={"Original":len(raw_text), |
|
"Summary":len(summary) |
|
} |
|
st.write(document_len) |
|
st.write(summary) |
|
st.info("Rouge Score") |
|
score=evaluate_summary(summary,raw_text) |
|
st.write(score.T) |
|
st.subheader(" ") |
|
score['metrics']=score.index |
|
c=at.Chart(score).mark_bar().encode( |
|
x='metrics',y='rouge-1' |
|
) |
|
st.altair_chart(c) |
|
except: |
|
st.warning('Insufficient data') |
|
|
|
|
|
|
|
with c2: |
|
with st.expander("TextRank Summary"): |
|
try: |
|
text_summary=sumy_text_summarizer(raw_text) |
|
document_len={"Original":len(raw_text), |
|
"Summary":len(summary) |
|
} |
|
st.write(document_len) |
|
st.write(text_summary) |
|
|
|
st.info("Rouge Score") |
|
score=evaluate_summary(text_summary,raw_text) |
|
st.write(score.T) |
|
st.subheader(" ") |
|
score['metrics']=score.index |
|
c=at.Chart(score).mark_bar().encode( |
|
x='metrics',y='rouge-1' |
|
) |
|
st.altair_chart(c) |
|
|
|
except: |
|
st.warning('Insufficient data') |
|
|
|
|
|
st.subheader("Bart Sumary") |
|
with st.expander("Bart Summary"): |
|
try: |
|
bart_summ = bart_summary(raw_text) |
|
document_len={"Original":len(raw_text), |
|
"Summary":len(summary) |
|
} |
|
st.write(document_len) |
|
st.write(bart_summ) |
|
st.info("Rouge Score") |
|
score=evaluate_summary(bart_summ,raw_text) |
|
st.write(score.T) |
|
st.subheader(" ") |
|
score['metrics']=score.index |
|
c=at.Chart(score).mark_bar().encode( |
|
x='metrics',y='rouge-1' |
|
) |
|
st.altair_chart(c) |
|
except: |
|
st.warning('Insufficient data') |
|
|
|
st.subheader("T5 Sumarization") |
|
with st.expander("T5 Summary"): |
|
try: |
|
T5_sum = T5_summary(raw_text) |
|
document_len={"Original":len(raw_text), |
|
"Summary":len(summary) |
|
} |
|
st.write(document_len) |
|
st.write(T5_sum) |
|
st.info("Rouge Score") |
|
score=evaluate_summary(T5_sum,raw_text) |
|
st.write(score.T) |
|
st.subheader(" ") |
|
score['metrics']=score.index |
|
c=at.Chart(score).mark_bar().encode( |
|
x='metrics',y='rouge-1' |
|
) |
|
st.altair_chart(c) |
|
except: |
|
st.warning('Insufficient data') |
|
|
|
|
|
|
|
elif choice=='Text-Analysis': |
|
text_analysis() |
|
else: |
|
metadata() |
|
|
|
|
|
if __name__=='__main__': |
|
main() |
|
|