Spaces:
Sleeping
Sleeping
# app.py | |
import json, gradio as gr | |
from transformers import pipeline | |
# 1) Load taxonomies | |
with open("coarse_labels.json") as f: | |
coarse_labels = json.load(f) # :contentReference[oaicite:4]{index=4} | |
with open("fine_labels.json") as f: | |
fine_map = json.load(f) # :contentReference[oaicite:5]{index=5} | |
# 2) Init classifier | |
classifier = pipeline("zero-shot-classification", | |
model="facebook/bart-large-mnli") | |
# 3) Tagging fn | |
def hierarchical_tag(question): | |
# Stage 1: pick coarse subject | |
coarse_out = classifier(question, candidate_labels=coarse_labels) | |
chosen = coarse_out["labels"][0] | |
# Stage 2: fine-grained tags within that subject | |
fine_labels = fine_map.get(chosen, []) | |
fine_out = classifier(question, candidate_labels=fine_labels) | |
# Return both | |
return { | |
"Subject": chosen, | |
**{lbl: round(score,3) | |
for lbl, score in zip(fine_out["labels"], fine_out["scores"])} | |
} | |
# 4) Build UI | |
iface = gr.Interface( | |
fn=hierarchical_tag, | |
inputs=gr.Textbox(lines=3, label="Enter your question"), | |
outputs=gr.JSON(label="Hierarchical Tags"), | |
title="Two-Stage Zero-Shot Question Tagger", | |
description="Stage 1: classify subject; Stage 2: classify topic within subject." | |
) | |
if __name__=="__main__": | |
iface.launch() | |