harshag11's picture
Create app.py
4ce0852 verified
import gradio as gr
from transformers import pipeline
from wikidata_utils import get_wikidata_labels, get_multilingual_classifier
def classify_text(text, topic, language, top_k=5):
# Get classifier for selected language
classifier = get_multilingual_classifier(language)
# Get Wikidata labels if topic provided
candidate_labels = [topic] if not topic else get_wikidata_labels(topic, lang=language)
# Classify text
result = classifier(text, candidate_labels=candidate_labels)
# Format results
return {label: float(score)
for label, score in zip(result['labels'][:top_k],
result['scores'][:top_k])}
# Create interface
with gr.Blocks() as demo:
gr.Markdown("# 🌐 Wikidata-Powered Classifier")
gr.Markdown("Classify text using live knowledge from Wikidata")
with gr.Row():
text_input = gr.Textbox(label="Input Text", lines=3)
topic_input = gr.Textbox(label="Topic (optional)", placeholder="e.g., renewable energy")
with gr.Row():
lang_dropdown = gr.Dropdown(
["en", "es", "fr", "de", "zh"],
value="en",
label="Language"
)
top_k_slider = gr.Slider(1, 10, value=5, label="Top Results")
submit_btn = gr.Button("Classify")
result_output = gr.Label(label="Classification Results")
examples = gr.Examples(
examples=[
["Tesla installed solar roofs on 50k homes last quarter", "renewable energy", "en"],
["La energía eólica crece un 15% en España", "energía renovable", "es"],
["Neue Perowskit-Solarzellen erreichen Rekordwirkungsgrad", "Solarenergie", "de"]
],
inputs=[text_input, topic_input, lang_dropdown]
)
submit_btn.click(
fn=classify_text,
inputs=[text_input, topic_input, lang_dropdown, top_k_slider],
outputs=result_output
)
if __name__ == "__main__":
demo.launch()