Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import pipeline | |
import concurrent.futures | |
# Load the summarization model pipeline | |
summarizer = pipeline("summarization", model="Falconsai/text_summarization") | |
# Function to handle dynamic chunking of text and summarization in parallel | |
def summarize_text(text): | |
max_chunk_size = 1024 # Can be adjusted based on model's token limit (often 1024-2048 tokens) | |
# Split the text into chunks if it's longer than the max chunk size | |
text_chunks = [] | |
if len(text) > max_chunk_size: | |
# Calculate chunk size dynamically based on input length | |
chunk_size = max_chunk_size if len(text) > max_chunk_size else len(text) | |
text_chunks = [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)] | |
else: | |
# If the text is small enough, use it as one chunk | |
text_chunks = [text] | |
# Use ThreadPoolExecutor to summarize each chunk in parallel | |
with concurrent.futures.ThreadPoolExecutor() as executor: | |
# Map summarizer function to each chunk in parallel | |
summaries = list(executor.map(lambda chunk: summarizer(chunk)[0]['summary_text'], text_chunks)) | |
# Combine all summaries into one | |
full_summary = " ".join(summaries) | |
return full_summary | |
# Set up the Gradio interface | |
interface = gr.Interface(fn=summarize_text, | |
inputs="text", | |
outputs="text", | |
title="Text Summarizer", | |
description="Enter long text to get a detailed summarized version.") | |
# Launch the Gradio interface | |
interface.launch(share=True) |