Spaces:
Build error
Build error
| # | |
| import torch | |
| import gradio as gr | |
| import pandas as pd | |
| from transformers import AutoModelForSequenceClassification, AutoTokenizer | |
| from scipy.special import softmax | |
| # Load model and tokenizer | |
| model_path = "trained_clinicalbert" | |
| model = AutoModelForSequenceClassification.from_pretrained(model_path) | |
| tokenizer = AutoTokenizer.from_pretrained(model_path) | |
| model.eval() | |
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| model.to(device) | |
| # Define class labels manually (ensure it matches the trained model) | |
| classes = ["Asthma", "COPD", "Lung Cancer", "Other Pulmonary", "Pleural Effusion", "Pneumonia", "Tuberculosis"] | |
| # Prediction function | |
| def predict_clinical_note(note): | |
| inputs = tokenizer(note, return_tensors="pt", truncation=True, padding="max_length", max_length=512) | |
| inputs = {key: val.to(device) for key, val in inputs.items()} | |
| with torch.no_grad(): | |
| outputs = model(**inputs) | |
| probs = softmax(outputs.logits.cpu().numpy(), axis=1) | |
| pred_idx = probs.argmax(axis=1)[0] | |
| pred_class = classes[pred_idx] | |
| confidence = float(probs[0][pred_idx]) | |
| return f"{pred_class} (Confidence: {confidence:.2f})" | |
| # Gradio interface | |
| iface = gr.Interface( | |
| fn=predict_clinical_note, | |
| inputs=gr.Textbox(lines=6, placeholder="Paste clinical note here..."), | |
| outputs="text", | |
| title="Pulmonary Disease Classifier", | |
| description="Enter a clinical note to predict pulmonary condition (e.g., COPD, Pneumonia, Tuberculosis...)" | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() | |