Spaces:
Sleeping
Sleeping
| import torch | |
| import gradio as gr | |
| from transformers import pipeline | |
| import logging | |
| # Set up logging | |
| logging.basicConfig(level=logging.INFO) | |
| # Use a pipeline as a high-level helper | |
| device = 0 if torch.cuda.is_available() else -1 | |
| text_summary = pipeline("summarization", model="facebook/bart-large-cnn", device=device, torch_dtype=torch.bfloat16) | |
| # Function for summarization with enhancements | |
| def summary(input, summary_type="medium"): | |
| # Check for empty input | |
| if not input.strip(): | |
| return "Error: Please provide some text to summarize." | |
| # Calculate input length | |
| input_length = len(input.split()) | |
| logging.info(f"Input length: {input_length} words") | |
| # Handle input that's too short | |
| if input_length < 10: | |
| return "Error: Input is too short. Please provide at least 10 words." | |
| # Handle input that's too long for the model | |
| if input_length > 512: | |
| return "Warning: Input exceeds the model's limit of 512 tokens. Please shorten the input text." | |
| # Adjust max/min lengths based on the summary type | |
| if summary_type == "short": | |
| max_output_tokens = max(10, input_length // 4) | |
| elif summary_type == "medium": | |
| max_output_tokens = max(20, input_length // 2) | |
| elif summary_type == "long": | |
| max_output_tokens = max(30, (3 * input_length) // 4) | |
| min_output_tokens = max(10, input_length // 6) | |
| # Generate summary | |
| output = text_summary(input, max_length=max_output_tokens, min_length=min_output_tokens, truncation=True) | |
| return output[0]['summary_text'] | |
| # Gradio interface | |
| def save_output(summary_text): | |
| """Save the summarized text to a file.""" | |
| with open("summary_output.txt", "w") as file: | |
| file.write(summary_text) | |
| return "Summary saved to 'summary_output.txt'." | |
| gr.close_all() | |
| # Create the Gradio interface | |
| demo = gr.Interface( | |
| fn=summary, | |
| inputs=[ | |
| gr.Textbox(label="INPUT THE PASSAGE TO SUMMARIZE", lines=15, placeholder="Paste your text here."), | |
| gr.Dropdown(["short", "medium", "long"], label="SUMMARY LENGTH", value="medium") | |
| ], | |
| outputs=[ | |
| gr.Textbox(label="SUMMARIZED TEXT", lines=10, placeholder="Your summarized text will appear here."), | |
| gr.Button("Download Summary") | |
| ], | |
| title="PAVISHINI @ GenAI Project 1: Text Summarizer", | |
| description=( | |
| "This application summarizes input text. " | |
| "The output length can be short, medium, or long based on your selection." | |
| ), | |
| live=True | |
| ) | |
| demo.launch() | |