Spaces:
Sleeping
Sleeping
File size: 2,313 Bytes
e56279f fc959be e56279f fc959be e56279f fc959be |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
import gradio as gr
from transformers import pipeline
# 1️⃣ Lazy‑load your pipelines
summarizer = None
sentiment = None
classifier = None
ner = None
def get_summarizer():
global summarizer
if summarizer is None:
summarizer = pipeline("summarization", model="Curative/t5-summarizer-cnn")
return summarizer
def get_sentiment():
global sentiment
if sentiment is None:
sentiment = pipeline("sentiment-analysis", model="DT12the/distilbert-sentiment-analysis")
return sentiment
def get_classifier():
global classifier
if classifier is None:
classifier = pipeline("text-classification", model="distilbert-base-uncased-finetuned-sst-2-english")
return classifier
def get_ner():
global ner
if ner is None:
ner = pipeline("ner", model="dslim/bert-base-NER", aggregation_strategy="simple")
return ner
# 2️⃣ Processing function
def process(text, features):
"""Run only the selected features on the input text."""
results = {}
if "Summarization" in features:
summ = get_summarizer()(text, max_length=150, min_length=40, do_sample=False)[0]["summary_text"]
results["summary"] = summ
if "Sentiment" in features:
sent = get_sentiment()(text)[0]
results["sentiment"] = sent
if "Classification" in features:
cls = get_classifier()(text)[0]
results["classification"] = cls
if "Entities" in features:
ents = get_ner()(text)
# Format entities as list of dicts
results["entities"] = [{"word": e["word"], "type": e["entity_group"]} for e in ents]
return results
# 3️⃣ Build the Gradio Blocks UI
with gr.Blocks() as demo:
gr.Markdown("## 📚 Multi‑Feature NLP Demo")
text_input = gr.Textbox(lines=5, placeholder="Enter your text here…")
feature_select = gr.CheckboxGroup(
choices=["Summarization", "Sentiment", "Classification", "Entities"],
label="Select features to run",
info="You can pick one or more models to apply"
)
run_button = gr.Button("Run")
output = gr.JSON(label="Results")
run_button.click(
fn=process,
inputs=[text_input, feature_select],
outputs=output
)
# 4️⃣ Launch with API enabled
demo.queue(api_open=True).launch()
|