fancy / app.py
tatwan's picture
Upload 2 files
b1ba9a1 verified
import gradio as gr
from transformers import pipeline
import torch
# Load models
device = 0 if torch.cuda.is_available() else -1
classifier = pipeline("sentiment-analysis", device=device)
summarizer = pipeline("summarization", model="facebook/bart-large-cnn", device=device)
def analyze_sentiment(text):
if not text.strip():
return {"Error": 1.0}
result = classifier(text)[0]
return {
f"{result['label']} {'😊' if result['label'] == 'POSITIVE' else '😠'}": result['score'],
"Other": 1 - result['score']
}
def summarize(text, max_len, min_len):
if len(text) < 50:
return "Please enter at least 50 characters."
result = summarizer(text, max_length=max_len, min_length=min_len)
return result[0]['summary_text']
with gr.Blocks(title="NLP Toolkit") as app:
gr.Markdown("# πŸ› οΈ NLP Toolkit")
with gr.Tabs():
with gr.TabItem("Sentiment"):
gr.Interface(
fn=analyze_sentiment,
inputs=gr.Textbox(lines=3),
outputs=gr.Label(),
examples=[["I love this!"], ["This is terrible."]]
)
with gr.TabItem("Summarize"):
gr.Interface(
fn=summarize,
inputs=[
gr.Textbox(lines=6),
gr.Slider(50, 200, value=100),
gr.Slider(20, 80, value=30)
],
outputs=gr.Textbox()
)
app.launch()