File size: 3,250 Bytes
bcc19d9
 
 
773040f
bcc19d9
 
 
 
 
 
 
773040f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fc51b5a
773040f
fc51b5a
 
773040f
 
 
 
 
 
 
fc51b5a
 
773040f
fc51b5a
43c6f87
773040f
bcc19d9
773040f
 
bcc19d9
773040f
bcc19d9
 
 
 
 
 
 
 
 
43c6f87
bcc19d9
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import gradio as gr
from transformers import pipeline

# Step 1: Load the AI Model
print("Loading the Health Analysis model...")
health_classifier = pipeline(
    "text-classification",
    model="shanover/disease_classifier_base"
)
print("Model loaded successfully!")

# Step 2: Create the Label-to-Name Dictionary
# This is the translator that maps the model's output to real disease names.
label_map = {
    'LABEL_0': 'Fungal infection', 'LABEL_1': 'Allergy', 'LABEL_2': 'GERD', 
    'LABEL_3': 'Chronic cholestasis', 'LABEL_4': 'Drug Reaction', 'LABEL_5': 'Peptic ulcer disease', 
    'LABEL_6': 'AIDS', 'LABEL_7': 'Diabetes', 'LABEL_8': 'Gastroenteritis', 
    'LABEL_9': 'Bronchial Asthma', 'LABEL_10': 'Hypertension', 'LABEL_11': 'Migraine', 
    'LABEL_12': 'Cervical spondylosis', 'LABEL_13': 'Paralysis (brain hemorrhage)', 
    'LABEL_14': 'Jaundice', 'LABEL_15': 'Malaria', 'LABEL_16': 'Chicken pox', 
    'LABEL_17': 'Dengue', 'LABEL_18': 'Typhoid', 'LABEL_19': 'Hepatitis A', 
    'LABEL_20': 'Hepatitis B', 'LABEL_21': 'Hepatitis C', 'LABEL_22': 'Hepatitis D', 
    'LABEL_23': 'Hepatitis E', 'LABEL_24': 'Alcoholic hepatitis', 'LABEL_25': 'Tuberculosis', 
    'LABEL_26': 'Common Cold', 'LABEL_27': 'Pneumonia', 'LABEL_28': 'Dimorphic hemmorhoids(piles)', 
    'LABEL_29': 'Heart attack', 'LABEL_30': 'Varicose veins', 'LABEL_31': 'Hypothyroidism', 
    'LABEL_32': 'Hyperthyroidism', 'LABEL_33': 'Hypoglycemia', 'LABEL_34': 'Osteoarthristis', 
    'LABEL_35': 'Arthritis', 'LABEL_36': '(vertigo) Paroymsal Positional Vertigo', 
    'LABEL_37': 'Acne', 'LABEL_38': 'Urinary tract infection', 'LABEL_39': 'Psoriasis', 
    'LABEL_40': 'Impetigo'
}

# Step 3: Define the main analysis function
def analyze_symptoms(symptoms):
    # Get the prediction dictionary from the model, e.g., {'label': 'LABEL_2', 'score': 0.96}
    prediction_dict = health_classifier(symptoms)[0]
    
    # Get the generic label (e.g., 'LABEL_2')
    generic_label = prediction_dict['label']
    
    # Look up the real disease name in our dictionary
    disease = label_map.get(generic_label, "Unknown Condition")
    
    # Get the confidence score
    confidence_score = prediction_dict['score']
    
    # Format the final, clean string for the user
    return f"Predicted Condition: {disease}\nConfidence Score: {confidence_score:.2f}"

# Step 4: Define the app's text content
app_title = "Symptom to Disease Classifier"
app_description = "Enter symptoms to predict a possible related medical condition. For educational use only."
disclaimer = "⚠️ **IMPORTANT DISCLAIMER:** This is NOT a medical diagnostic tool. Always consult a qualified healthcare professional for medical advice."

# Step 5: Create and Launch the Gradio Interface
app = gr.Interface(
    fn=analyze_symptoms,
    inputs=gr.Textbox(
        lines=4,
        placeholder="e.g., 'I am feeling vomiting, breathlessness, and sweating...'"
    ),
    outputs="text",
    title=app_title,
    description=app_description,
    article=disclaimer,
    examples=[
        ["I have a persistent cough, high fever, and body aches."],
        ["Feeling very thirsty and needing to urinate frequently."],
        ["I have itchy skin with red patches and silver scales."]
    ]
)

app.launch()