File size: 1,622 Bytes
eba2294
 
056544b
eba2294
 
 
 
056544b
eba2294
 
 
 
 
 
 
 
 
 
 
 
056544b
 
 
 
 
eba2294
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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)