albertmartinez's picture
Add application file
5c0db7c
import gradio as gr
from transformers import pipeline
# Define the models
model1 = pipeline("text-classification", model="albertmartinez/bert-sdg-classification")
model2 = pipeline("text-classification", model="albertmartinez/bert-multilingual-sdg-classification")
model3 = pipeline("text-classification", model="albertmartinez/distilbert-multilingual-sdg-classification")
model4 = pipeline("text-classification", model="albertmartinez/xlm-roberta-large-sdg-classification")
def classify_text(text, model):
result = model(text, top_k=16, truncation=True, max_length=512)
return {p["label"]: p["score"] for p in result}
def classify_all(text):
return [
{p["label"]: p["score"] for p in model1(text, top_k=16, truncation=True, max_length=512)},
{p["label"]: p["score"] for p in model2(text, top_k=16, truncation=True, max_length=512)},
{p["label"]: p["score"] for p in model3(text, top_k=16, truncation=True, max_length=512)},
{p["label"]: p["score"] for p in model4(text, top_k=16, truncation=True, max_length=512)}
]
ifaceall = gr.Interface(
fn=classify_all,
inputs=gr.Textbox(lines=2, label="Text", placeholder="Enter text here..."),
outputs=[gr.Label(label="bert"), gr.Label(label="bert-multilingual"), gr.Label(label="distilbert-multilingual"),
gr.Label(label="xlm-roberta-large")],
title="SDG text classification",
description="Enter a text and see the text classification result!",
flagging_mode="never",
api_name="classify_all"
)
# Interface for the first model
iface1 = gr.Interface(
fn=lambda text: classify_text(text, model1),
inputs=gr.Textbox(lines=2, label="Text", placeholder="Enter text here..."),
outputs=gr.Label(label="Top SDG Predicted"),
title="BERT SDG classification",
description="Enter a text and see the text classification result!",
flagging_mode="never",
api_name="classify_bert"
)
# Interface for the second model
iface2 = gr.Interface(
fn=lambda text: classify_text(text, model2),
inputs=gr.Textbox(lines=2, label="Text", placeholder="Enter text here..."),
outputs=gr.Label(label="Top SDG Predicted"),
title="BERT multilingual SDG classification",
description="Enter a text and see the text classification result!",
flagging_mode="never",
api_name="classify_bert-multilingual"
)
# Interface for the three model
iface3 = gr.Interface(
fn=lambda text: classify_text(text, model3),
inputs=gr.Textbox(lines=2, label="Text", placeholder="Enter text here..."),
outputs=gr.Label(label="Top SDG Predicted"),
title="DISTILBERT multilingual SDG classification",
description="Enter a text and see the text classification result!",
flagging_mode="never",
api_name="classify_distilbert-multilingual"
)
# Interface for the four model
iface4 = gr.Interface(
fn=lambda text: classify_text(text, model4),
inputs=gr.Textbox(lines=2, label="Text", placeholder="Enter text here..."),
outputs=gr.Label(label="Top SDG Predicted"),
title="XLM-ROBERTA-LARGE SDG classification",
description="Enter a text and see the text classification result!",
flagging_mode="never",
api_name="classify_xlm-roberta-large"
)
with gr.Blocks() as demo:
# Combine both interfaces into a tabbed interface
gr.TabbedInterface(
interface_list=[ifaceall, iface1, iface2, iface3, iface4],
tab_names=["ALL", "bert-sdg-classification", "bert-multilingual-sdg-classification",
"distilbert-multilingual-sdg-classification", "xlm-roberta-large-sdg-classification"],
title="Sustainable Development Goals (SDG) Text Classifier App",
theme='base'
)
if __name__ == "__main__":
print(gr.__version__)
demo.launch()