Curative's picture
Update app.py
d588f49 verified
import gradio as gr
from transformers import pipeline
# Initialize pipelines
sentiment_pipeline = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english")
classification_pipeline = pipeline("zero-shot-classification", model="facebook/bart-large-mnli")
ner_pipeline = pipeline("ner", model="dslim/bert-base-NER", aggregation_strategy="simple")
summarization_pipeline = pipeline("summarization", model="Curative/t5-summarizer-cnn")
# Define candidate labels for classification
candidate_labels = [
"technology", "sports", "business", "politics",
"health", "science", "travel", "entertainment"
]
def process(text, features):
result = {}
if "Summarization" in features:
summary = summarization_pipeline(text, max_length=150, min_length=40, do_sample=False)
result["summary"] = summary[0]["summary_text"]
if "Sentiment" in features:
sentiment = sentiment_pipeline(text)[0]
result["sentiment"] = {"label": sentiment["label"], "score": sentiment["score"]}
if "Classification" in features:
classification = classification_pipeline(text, candidate_labels=candidate_labels)
result["classification"] = dict(zip(classification["labels"], classification["scores"]))
if "Entities" in features:
entities = ner_pipeline(text)
result["entities"] = [{"word": entity["word"], "type": entity["entity_group"]} for entity in entities]
return result
# Build Gradio interface
with gr.Blocks() as demo:
gr.Markdown("## 🛠️ Multi-Feature NLP Service")
inp = gr.Textbox(lines=6, placeholder="Enter your text here…")
feats = gr.CheckboxGroup(
["Summarization", "Sentiment", "Classification", "Entities"],
label="Select features to run"
)
btn = gr.Button("Run")
out = gr.JSON(label="Results")
btn.click(process, [inp, feats], out)
demo.queue(api_open=True).launch()