DeepPressNet / app.py
avdvh's picture
Create app.py
d36c19d verified
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()