|
import gradio as gr |
|
from transformers import AutoTokenizer, AutoModelForSequenceClassification |
|
import torch |
|
tokenizer = AutoTokenizer.from_pretrained("alibidaran/Symptom2disease") |
|
model = AutoModelForSequenceClassification.from_pretrained("alibidaran/Symptom2disease") |
|
label_2id={'Psoriasis': 0, |
|
'Varicose Veins': 1, |
|
'Typhoid': 2, |
|
'Chicken pox': 3, |
|
'Impetigo': 4, |
|
'Dengue': 5, |
|
'Fungal infection': 6, |
|
'Common Cold': 7, |
|
'Pneumonia': 8, |
|
'Dimorphic Hemorrhoids': 9, |
|
'Arthritis': 10, |
|
'Acne': 11, |
|
'Bronchial Asthma': 12, |
|
'Hypertension': 13, |
|
'Migraine': 14, |
|
'Cervical spondylosis': 15, |
|
'Jaundice': 16, |
|
'Malaria': 17, |
|
'urinary tract infection': 18, |
|
'allergy': 19, |
|
'gastroesophageal reflux disease': 20, |
|
'drug reaction': 21, |
|
'peptic ulcer disease': 22, |
|
'diabetes': 23} |
|
id2_label={i:v for v,i in label_2id.items()} |
|
|
|
def detect_symptom(symptoms): |
|
inputs_id=tokenizer(symptoms,padding=True,truncation=True,return_tensors="pt") |
|
output=model(inputs_id['input_ids']) |
|
preds=torch.nn.functional.softmax(output.logits,-1).topk(5) |
|
results={id2_label[preds.indices[0][i].item()]:preds.values[0][i].item() for i in range(5)} |
|
return results |
|
|
|
demo=gr.Interface(fn=detect_symptom,inputs='text',outputs=gr.Label(num_top_classes=5), |
|
examples=["I can't stop sneezing and I feel really tired and crummy. My throat is really sore", |
|
"I have been experiencing a severe headache that is accompanied by pain behind my eyes.", |
|
"There are small red spots all over my body that I can't explain. It's worrying me.", |
|
"I've been having a really hard time going to the bathroom lately. It's really painful"]) |
|
demo.launch() |