NLP-Assistant / app.py
zykrix
Added multi-tab layout and warning for summarization time
73ff4b5
# app.py
import gradio as gr
from modules.summarizer import summarize_text
from modules.classifier import classify_text
from modules.event_detector import detect_events
# Define individual task functions
def process_summarization(input_text):
summary = summarize_text(input_text)
return summary
def process_classification(input_text):
classification = classify_text(input_text)
return classification
def process_event_detection(input_text):
events = detect_events(input_text)
events_formatted = ', '.join(events) if isinstance(events, list) else events
return events_formatted
# Create Gradio UI with Tabs
with gr.Blocks() as demo:
gr.Markdown(
"""
# 🧠 NLP Assistant
A simple app for:
- πŸ“š Summarization
- 🏷️ News Classification
- πŸ—‚οΈ Event Detection
"""
)
with gr.Tabs():
# Summarization Tab
with gr.Tab("πŸ“š Summarization"):
gr.Markdown(
"""
## πŸ“š Summarization
Enter your text below and get a summarized version.
⚠️ **Note:**
- This task can take **~800–1000 seconds (~13–16 minutes)** for about **700–800 words**.
- Longer articles will take **even more time**.
- Please be patient!
"""
)
input_text_sum = gr.Textbox(
label="Input Text for Summarization",
placeholder="Paste your article, document, or paragraph here...",
lines=10
)
summarize_btn = gr.Button("Summarize")
summary_output = gr.Textbox(label="Summary", lines=8)
summarize_btn.click(
fn=process_summarization,
inputs=[input_text_sum],
outputs=[summary_output]
)
# Classification Tab
with gr.Tab("🏷️ Classification"):
gr.Markdown(
"""
## 🏷️ News/Text Classification
Enter your text below to detect its category.
"""
)
input_text_classify = gr.Textbox(
label="Input Text for Classification",
placeholder="Paste your article or paragraph here...",
lines=10
)
classify_btn = gr.Button("Classify")
classification_output = gr.Textbox(label="Classification Result", lines=2)
classify_btn.click(
fn=process_classification,
inputs=[input_text_classify],
outputs=[classification_output]
)
# Event Detection Tab
with gr.Tab("πŸ—‚οΈ Event Detection"):
gr.Markdown(
"""
## πŸ—‚οΈ Event Detection
Extract keywords and named entities from your text.
"""
)
input_text_events = gr.Textbox(
label="Input Text for Event Detection",
placeholder="Paste your article, news, or report here...",
lines=10
)
detect_btn = gr.Button("Detect Events")
events_output = gr.Textbox(label="Detected Events", lines=8)
detect_btn.click(
fn=process_event_detection,
inputs=[input_text_events],
outputs=[events_output]
)
# Launch Gradio app
if __name__ == "__main__":
demo.launch()