import gradio as gr import numpy as np from tensorflow.keras.models import load_model from sentence_transformers import SentenceTransformer import re # Load model & SBERT model = load_model("depression_sbert_optuna_model.keras") sbert = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2") # Clean text def clean_text(text): text = re.sub(r"http\S+", "", text) text = re.sub(r"[^a-zA-Z\s]", "", text) return text.strip().lower() # Prediction logic def predict_depression(text): cleaned = clean_text(text) embedding = sbert.encode([cleaned]) prob = model.predict(np.array(embedding))[0][0] label = "Depressed" if prob > 0.5 else "Not Depressed" confidence = round(prob * 100 if label == "Depressed" else (1 - prob) * 100, 2) return f"{label} (Confidence: {confidence}%)" # Gradio UI interface = gr.Interface( fn=predict_depression, inputs=gr.Textbox(lines=4, placeholder="Enter a post..."), outputs="text", title="DeepPressNet - Depression Detection", description="Enter a post to detect if it's likely written by someone showing signs of depression." ) interface.launch()