File size: 1,900 Bytes
4df3ec6 cf53b75 4df3ec6 cf53b75 4df3ec6 cf53b75 4df3ec6 f39343a f10368a f39343a 4df3ec6 f39343a 4df3ec6 f10368a 4df3ec6 |
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 |
import torch
import streamlit as st
from extractive_summarizer.model_processors import Summarizer
from transformers import T5Tokenizer, T5ForConditionalGeneration, T5Config
def abstractive_summarizer(text : str):
model = T5ForConditionalGeneration.from_pretrained('t5-large')
tokenizer = T5Tokenizer.from_pretrained('t5-large')
device = torch.device('cpu')
preprocess_text = text.strip().replace("\n", "")
t5_prepared_text = "summarize: " + preprocess_text
tokenized_text = tokenizer.encode(t5_prepared_text, return_tensors="pt").to(device)
# summmarize
summary_ids = model.generate(tokenized_text,
num_beams=4,
no_repeat_ngram_size=2,
min_length=30,
max_length=100,
early_stopping=True)
abs_summarized_text = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
return abs_summarized_text
if __name__ == "__main__":
st.title("Text Summarizer 📝")
summarize_type = st.sidebar.selectbox("Summarization type", options=["Extractive", "Abstractive"])
inp_text = st.text_input("Enter the text here")
# view summarized text (expander)
with st.expander("View input text"):
st.write(inp_text)
summarize = st.button("Summarize")
# called on toggle button [summarize]
if summarize:
if summarize_type == "Extractive":
# extractive summarizer
# init model
model = Summarizer()
summarized_text = model(inp_text, num_sentences=5)
elif summarize_type == "Abstractive":
summarized_text = abstractive_summarizer(inp_text)
# final summarized output
st.subheader("Summarized text")
st.info(summarized_text)
|