AshenFdo's picture
Uploading blood request emergency text classifier demo app.py
ddb828f verified
Raw
History Blame Contribute Delete
2.29 kB
# 1. Import the required packages
import torch
import gradio as gr
from typing import Dict, Tuple
from transformers import pipeline
# 2. Define function to use our model on given text
def blood_request_classifier(text: str) -> Dict[str, float]:
# Set up text classification pipeline
classifier = pipeline(
task="text-classification",
model="AshenFdo/emergency_blood_request_classifier",
device="cuda" if torch.cuda.is_available() else "cpu",
top_k=None
)
outputs = classifier(text)[0]
output_dict = {}
for item in outputs:
output_dict[item["label"]] = item["score"]
return output_dict
# 3. Create a Gradio interface
description = """
A text classifier to determine whether a blood donation request is an **emergency** or **non-emergency**.
Fine-tuned from [DistilBERT](https://huggingface.co/distilbert/distilbert-base-uncased) on a
[synthetic blood request urgency dataset](https://huggingface.co/datasets/AshenFdo/synthetic_blood_request_urgency_dataset).
See [source code on GitHub](https://github.com/AshenFdo/Blood-Request-Emergency-Classification-Model).
"""
demo = gr.Interface(fn=blood_request_classifier,
inputs=gr.Textbox(
lines=4,
placeholder="Enter a blood request message here...",
label="Blood Request Text"
),
outputs=gr.Label(num_top_classes=2), # show top 2 classes (that's all we have)
title="🩸 Emergency Blood Request Classifier",
description=description,
examples=[
["Patient is in critical condition after surgery and urgently needs O- blood immediately or they may not survive."],
["Hi, I am looking for a B+ blood donor for my father's scheduled knee replacement surgery next month."],
["URGENT: Accident victim in ER needs AB+ blood NOW. Lives at stake, please respond immediately!"],
["Our hospital is planning a blood donation camp next Saturday. All blood types welcome."],
["A newborn baby in the ICU critically needs O+ blood within the next hour. Please help!"],
])
# 4. Launch the interface
if __name__ == "__main__":
demo.launch()