|
import gradio as gr |
|
from transformers import pipeline |
|
from textblob import TextBlob |
|
|
|
|
|
summarizer = pipeline("summarization", model="sshleifer/distilbart-cnn-12-6") |
|
|
|
def analyze(text): |
|
if not text.strip(): |
|
return "⚠️ No input provided.", "Polarity: N/A | Subjectivity: N/A" |
|
try: |
|
summary = summarizer(text, max_length=100, min_length=30, do_sample=False)[0]['summary_text'] |
|
except Exception as e: |
|
summary = f"⚠️ Summarization failed: {str(e)}" |
|
sentiment = TextBlob(text).sentiment |
|
polarity = f"Polarity: {sentiment.polarity:.2f}" |
|
subjectivity = f"Subjectivity: {sentiment.subjectivity:.2f}" |
|
return summary, polarity + " | " + subjectivity |
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("## ✨ Text Summarizer & Sentiment Analyzer") |
|
with gr.Row(): |
|
with gr.Column(): |
|
input_text = gr.Textbox(lines=10, label="Enter your text", placeholder="Paste your article or paragraph here...") |
|
analyze_btn = gr.Button("Analyze") |
|
with gr.Column(): |
|
output_summary = gr.Textbox(label="Summary") |
|
output_sentiment = gr.Textbox(label="Sentiment") |
|
analyze_btn.click(fn=analyze, inputs=input_text, outputs=[output_summary, output_sentiment]) |
|
|
|
demo.launch() |
|
|