Flackoooo commited on
Commit
1b82843
·
1 Parent(s): d609fbc

Add metadata to README

Browse files
Files changed (1) hide show
  1. README.md +11 -175
README.md CHANGED
@@ -1,177 +1,13 @@
1
- # Chatbot de Salud Mental - Versión 1.0
2
-
3
- <div align="center">
4
- <img src="static/img/1.png" alt="Pantalla de Inicio" width="250">
5
- <br>
6
- <em>Logo del Chatbot de Salud Mental</em>
7
- </div>
8
-
9
- ## Descripción del Proyecto
10
- Este proyecto es un chatbot **orientado a la salud mental** que, mediante **Procesamiento de Lenguaje Natural (PLN)**, analiza los mensajes ingresados por los usuarios (ya sea por **texto** o **audio**) para predecir su estado emocional y generar respuestas de apoyo o contestaciones acordes.
11
-
12
- - **Interacción por voz**: El usuario puede hablar (speech-to-text) y recibir la respuesta en audio (text-to-speech).
13
- - **Emociones limitadas**: Actualmente detecta 11 emociones básicas, pero se planea mejorar en futuras versiones (2.0).
14
- - **Versión 1.0**: Implementación básica y experimental; **no** sustituye asesoramiento profesional.
15
-
16
- ## Tecnologías Utilizadas
17
- - **Python**: Flask (backend web), Transformers, PyTorch
18
- - **BERT** (Bidirectional Encoder Representations from Transformers)
19
- - **Procesamiento de Lenguaje Natural (PLN)**
20
- - **Reconocimiento de Voz** (SpeechRecognition en el navegador)
21
- - **Síntesis de Texto a Voz** (pyttsx3/pydub)
22
- - **HTML, CSS, JavaScript** (Frontend)
23
-
24
- ## Arquitectura del Chatbot
25
-
26
- El pipeline principal que sigue este proyecto es:
27
-
28
- ```text
29
- -> Speech Recognition -> Natural Language Understanding -> Dialog Manager <-> Task Manager
30
- Text-to-Speech Synthesis <- Natural Language Generation <- Dialog Manager
31
- ```
32
-
33
- 1. **Speech Recognition**: El usuario habla y el navegador convierte el audio a texto (Web Speech API).
34
- 2. **Natural Language Understanding**: El texto se envía a Flask, donde BERT analiza la emoción.
35
- 3. **Dialog Manager**: Gestiona la lógica de la conversación y decide la respuesta.
36
- 4. **Text-to-Speech Synthesis**: El chatbot genera un archivo de audio que se devuelve al navegador.
37
-
38
- ## Emociones Detectadas
39
- El modelo (fine-tuned en BERT) reconoce las siguientes emociones:
40
-
41
- - FELICIDAD
42
- - NEUTRAL
43
- - DEPRESIÓN
44
- - ANSIEDAD
45
- - ESTRÉS
46
- - EMERGENCIA
47
- - CONFUSIÓN
48
- - IRA
49
- - MIEDO
50
- - SORPRESA
51
- - DISGUSTO
52
-
53
- Se utilizó un dataset de ~500 muestras para cada emoción (total ~5500 filas).
54
-
55
- # Capturas de Pantalla
56
-
57
- **Página de Inicio**
58
- <div align="center"> <img src="static/img/index.png" alt="Página de Inicio" width="1000"> <br> <em>Página de inicio del Chatbot de Salud Mental</em> </div>
59
-
60
- **Interfaz del Chatbot**
61
- <div align="center"> <img src="static/img/chatbot1.png" alt="Interfaz del Chatbot" width="1000"> <br> <em>Interfaz del Chatbot</em> </div>
62
-
63
- **Reconocimiento de Voz Activado**
64
- <div align="center"> <img src="static/img/chatbot2.png" alt="Reconocimiento de Voz Activado" width="1000"> <br> <em>Indicador de grabación de voz</em> </div>
65
-
66
- ## Estructura del Proyecto
67
-
68
- ```text
69
- ChatBot/
70
- ├── conversations/
71
- ├── data/
72
- │ └── emotion_dataset.csv
73
- ├── models/
74
- │ ├── bert_emotion_model/
75
- │ │ ├── checkpoint-1600
76
- │ │ ├── checkpoint-1650
77
- │ │ ├── config.json
78
- │ │ ├── model.safetensors
79
- │ │ ├── special_tokens_map.json
80
- │ │ ├── tokenizer.json
81
- │ │ ├── tokenizer_config.json
82
- │ │ ├── training_args.bin
83
- │ │ └── vocab.txt
84
- │ ├── chatbot_model.py
85
- │ └── responses.json
86
- ├── static/
87
- │ ├── audio/
88
- │ ├── css/
89
- │ │ └── styles.css
90
- │ ├── img/
91
- │ └── js/
92
- │ └── scripts.js
93
- ├── templates/
94
- │ ├── chatbot.html
95
- │ └── index.html
96
- ├── app.py
97
- ├── chatbot.log
98
- ├── error.log
99
- ├── requirements.txt
100
- └── train_model.py
101
- ```
102
-
103
- ## Instalación y Configuración
104
-
105
- ### 1. Clonar el repositorio con Git LFS
106
- Si el proyecto usa archivos grandes (como modelos BERT), asegúrate de tener Git LFS instalado antes de clonar el repositorio.
107
- ```bash
108
- # Instalar Git LFS (si no lo tienes)
109
- git lfs install
110
-
111
- # Clonar el repositorio
112
- git clone https://github.com/tu-usuario/ChatBot-MentalHealth.git
113
- cd ChatBot-MentalHealth
114
- ```
115
-
116
- ### 2. Crear un entorno virtual y activarlo
117
- ```bash
118
- python -m venv venv
119
- # En Windows
120
- venv\Scripts\activate
121
- # En macOS/Linux
122
- source venv/bin/activate
123
- ```
124
-
125
- ### 3. Instalar dependencias
126
- ```bash
127
- pip install -r requirements.txt
128
- ```
129
-
130
- ### 4. Ejecutar la aplicación
131
- ```bash
132
- python app.py
133
- ```
134
- La aplicación se ejecutará en [http://127.0.0.1:5000/](http://127.0.0.1:5000/).
135
-
136
- ## Ejemplo de Código (`train_model.py`)
137
-
138
- ```python
139
- class CustomTrainer(Trainer):
140
- def compute_loss(self, model, inputs, return_outputs=False, **kwargs):
141
- labels = inputs.get("labels").to(model.device)
142
- outputs = model(**inputs)
143
- logits = outputs.get("logits")
144
- loss = custom_loss(labels, logits) # Pérdida con class_weights
145
- return (loss, outputs) if return_outputs else loss
146
-
147
- def custom_loss(labels, logits):
148
- loss_fct = torch.nn.CrossEntropyLoss(weight=class_weights)
149
- return loss_fct(logits, labels)
150
- ```
151
-
152
- De esta forma, cada emoción recibe un peso distinto, mitigando el riesgo de que el modelo ignore las clases menos representadas.
153
-
154
- ## Flujo de Uso de los Archivos en el Proyecto
155
-
156
- 1. **Cargar el Modelo**: Los pesos del modelo están en `model.safetensors` junto con `config.json`, `tokenizer.json`, etc.
157
- 2. **Tokenización**: Se convierte la entrada (texto) en tokens con el tokenizer de BERT (`tokenizer.json`, `vocab.txt`).
158
- 3. **Inferencia**: El texto del usuario se procesa con BERT para predecir la emoción y generar una respuesta.
159
- 4. **Respuesta**: Se envía el texto de vuelta al navegador y, si se activa la síntesis de voz, se genera un archivo de audio.
160
-
161
- ## Notas Finales
162
-
163
- - Esta versión (1.0) es experimental y **no** sustituye asesoramiento profesional en salud mental.
164
- - Se recomienda seguir refinando el modelo, incorporar más emociones y ampliar la base de datos.
165
- - En caso de emergencia o situación de riesgo, busca ayuda de un profesional de la salud mental.
166
-
167
- ## Colaboradores
168
- - **Nicolás Ceballos Brito** (@Nico2603)
169
- - **Juan Alejandro Urueña Serna** (@Uruena2603)
170
- - **Camilo Castañeda Yepes** (@camCy)
171
-
172
- Para cualquier duda o sugerencia, contáctame en: **[email protected]**
173
-
174
  ---
 
 
 
 
 
 
 
 
 
 
175
 
176
- ¡Gracias por probar el Chatbot de Salud Mental!
177
- Si deseas contribuir, siéntete libre de hacer un **fork** y enviar tus **pull requests**.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: ChatBot-MentalHealth
3
+ emoji: 🧠
4
+ colorFrom: blue
5
+ colorTo: indigo
6
+ sdk: docker
7
+ app_file: app.py
8
+ pinned: false
9
+ ---
10
+
11
+ # ChatBot-MentalHealth
12
 
13
+ ¡Bienvenido a mi Space de Hugging Face para el ChatBot de Salud Mental!