import streamlit as st from transformers import pipeline import nltk from nltk.tokenize import sent_tokenize # Download NLTK data nltk.download('punkt') # Load summarization pipeline with PyTorch summarizer = pipeline("summarization", model="facebook/bart-large-cnn", framework="pt") # Function to summarize text def summarize(text): sentences = sent_tokenize(text) summary = "" for i in range(0, len(sentences), 3): chunk = " ".join(sentences[i:i+3]) # Dynamically adjust max_length based on input length max_length = min(len(chunk) // 2, 130) # Ensure max_length does not exceed 130 min_length = max_length // 2 summary_chunk = summarizer(chunk, max_length=max_length, min_length=min_length, do_sample=False)[0]['summary_text'] summary += summary_chunk + " " return summary.strip() # Streamlit app st.title("Text Summarization with Hugging Face Transformers") user_input = st.text_area("Enter text to summarize") if st.button("Summarize"): summary = summarize(user_input) st.write(f"Summary: {summary}")