/ Proyectos / Salud / Clasificación de riesgo de salud mental

Clasificación de riesgo de salud mental con NLP y embeddings

Un clasificador de urgencia de canalización a salud mental, construido con embeddings modernos y desplegado en una arquitectura serverless de bajo costo.

10 min de lectura Python · sentence-transformers · scikit-learn · AWS Lambda Datos: cuestionario de tamizaje de salud mental Aplicable a tesis y proyectos aplicados
Cuestionario de tamizaje de salud mental clasificado por nivel de urgencia con un modelo de NLP ligero

Un servicio de salud mental universitario rara vez tiene la capacidad de atender a todos los estudiantes al mismo tiempo. Cuando alguien llena un cuestionario de tamizaje, alguien más tiene que revisarlo, y no todos los casos son igual de urgentes.

Este proyecto nació de esa fricción. La idea no era reemplazar al psicólogo, era ayudarle a decidir a quién atender primero, a partir de las respuestas de texto libre que la persona ya estaba escribiendo de todas formas. El sistema nunca decide nada clínico por sí mismo, solo prioriza. La decisión final, siempre, la toma un profesional de la salud mental.


Mapa del casoContenido


Estructura de alto nivelDiagrama de la solución

Fuente (entrenamiento) Dataset abierto 52.681 textos, 7 clases Fuente (producción) Respuesta del usuario, texto libre Preprocesamiento + Embeddings Modelo preentrenado tipo MiniLM (sentence-transformers) Clasificador Regresión logística sobre 7 clases del dataset Mapeo a nivel de urgencia 7 clases → 3 niveles (alta/media/baja) Reporte de urgencia Prioriza la revisión humana, nunca decide en automático

Pasa el cursor sobre cada bloque para ver qué hace ese paso.

El mismo pipeline de embeddings se usa en entrenamiento, sobre el dataset abierto, y en producción, sobre la respuesta real del usuario, para que el clasificador vea siempre la misma representación del texto.


Cómo se construyóConstrucción de la solución

Condiciones del proyecto

RestricciónDato
Presupuesto de infraestructuraCasi nulo, todo el backend debía correr en nivel gratuito o de muy bajo costo de AWS
Tamaño del modelo servibleDebía cargar y responder rápido dentro de una función serverless
Dataset propio anotado por profesionalesNo existía, hubo que entrenar con un corpus público de texto sobre salud mental
Alcance de la decisión automáticaLimitado a un nivel de urgencia, nunca a un diagnóstico
OpciónPor qué se descartó
Bolsa de palabras clásica (TF-IDF) más un clasificador simplePierde matices semánticos que sí capturan los embeddings modernos
Ajuste fino completo de un modelo tipo BERTDemasiado pesado y lento para servirse barato en una Lambda con memoria limitada
Embeddings preentrenados tipo MiniLM + regresión logísticaRepresentación semántica moderna, ligera y barata de desplegar, opción elegida
Siete niveles de salida, uno por clase del datasetDemasiado granular para el objetivo real, que es priorizar la revisión humana

Pasos

1

Elegir un dataset público y real

Agente: propuso generar datos sintéticos de conversación para entrenar desde cero.
Criterio aplicado: usar Sentiment Analysis for Mental Health (Kaggle), un corpus abierto con 52.681 textos en 7 categorías, evitando inventar datos que no reflejaran lenguaje real.

2

Modernizar la representación del texto

Agente: propuso un pipeline de bolsa de palabras clásico.
Criterio aplicado: actualizar esa propuesta a embeddings de un modelo preentrenado tipo MiniLM, que capturan significado semántico y siguen siendo ligeros para el presupuesto de infraestructura.

3

Elegir un clasificador que quepa en el presupuesto

Agente: sugirió ajustar un transformer completo para maximizar exactitud.
Criterio aplicado: usar una regresión logística sobre los embeddings, suficiente, rápida de entrenar y de servir, y que sí cabía en una Lambda de nivel gratuito.

4

Definir el mapeo de clases a nivel de urgencia

Agente: no propuso nada aquí, esta decisión no puede automatizarse.
Criterio aplicado: decidir que la ideación suicida es la única categoría de urgencia alta, y que depresión, ansiedad y trastorno bipolar caen en urgencia media, con perspectiva de intervención temprana.

Proceso de iteración

Resultado inesperado, no forzado

El dataset público no está balanceado: las categorías más graves, como ideación suicida y trastorno bipolar, tienen muchos menos ejemplos que las categorías más comunes. Esto significa que la métrica global de exactitud puede verse bien mientras el modelo comete más errores justo en las clases de mayor urgencia. La lectura correcta de resultados no puede quedarse solo en la exactitud general, tiene que revisar el desempeño por clase.


CierreLecciones importantes

La lección principal fue de límites, no de modelos. Antes de elegir cualquier arquitectura, había que decidir qué tan lejos podía llegar una decisión automática en un tema tan sensible como la salud mental. La respuesta fue clara: el modelo prioriza, la persona decide.

La segunda lección fue de presupuesto real. Modernizar no significa siempre usar el modelo más grande disponible, significa elegir la representación más moderna que siga cabiendo en las restricciones reales del proyecto.

Si quieres ver un trabajo reciente que compara enfoques clásicos de NLP contra modelos de lenguaje más grandes para esta misma tarea de clasificación de estados de salud mental, esta es una buena referencia del nivel de la contribución: Comparing traditional natural language processing and large language models for mental health status classification.

Termina ya tu proyecto

¿Tu tesis necesita convertirse en algo más que código? Yo te ayudo a diseñar la aplicación.

El 92% de los profesionales de datos desbloquea sus proyectos al ver ejemplos completos resueltos.

53
proyectos
8
sectores
100%
aplicado

Sin registro. Acceso inmediato