Sandaruth's picture
Update app.py
e6ddaee verified
import streamlit as st
from transformers import pipeline
from huggingface_hub import login
from dotenv import load_dotenv
import os
# Load the environment variables from the .env file
load_dotenv()
# Retrieve the token from the .env file
huggingface_token = os.getenv("HUGGINGFACE_TOKEN")
# Log in using the retrieved token
login(token=huggingface_token)
# Available models for summarization
models = {
"T5_Full_FineTune_V0.1_40K": "ARSynopsis/T5_Full_FineTune_V0.1_40K",
"T5_Full_FineTune_V0.1_80K": "ARSynopsis/T5_Full_FineTune_V0.1_80K",
"BART_Base_Full_FineTune_V0.1_83K": "ARSynopsis/BART_Base_Full_FineTune_V0.1_83K",
"LongT5": "google/long-t5-local-base",
"Pegasus": "google/pegasus-xsum"
}
# Function to count words in the input text
def count_words(text):
return len(text.split())
# Streamlit app layout
st.title("Summarization with Multiple Models")
# Dropdown to select the model (bolded)
st.markdown("### **Select a model for summarization**")
model_choice = st.selectbox("", models.keys())
# Text area for input (bolded)
st.markdown("### **Enter the long text you want to summarize**")
input_text = st.text_area("", height=300)
# Button to generate the summary
if st.button("Generate Summary"):
# Show a spinner while generating the summary
with st.spinner("Generating summary, please wait..."):
# Load the selected model and summarizer pipeline
summarizer = pipeline("summarization", model=models[model_choice])
# Log the model choice
st.write(f"Using model: **{model_choice}** for summarization.")
# Count and log the number of words in the input text
word_count = count_words(input_text)
st.write(f"Number of words in input: **{word_count}**")
if input_text:
# Generate the summary
summary = summarizer(input_text, max_length=350, min_length=30, do_sample=False)
# Log the success message
st.success("Summary generated successfully!")
# Display the summary
st.subheader("Generated Summary")
st.write(summary[0]['summary_text'])
else:
st.warning("Please enter text to summarize!")
# Optionally, you can add a footer or additional instructions
st.markdown("---")
st.write("Provide a long text and select a model to see the summarization in action!")