Détection du risque de suicide dans les applications de chat

Dans ce rapport, nous avons construit un système pour détecter les messages urgents et à haut risque dans une application de chat connectant ses utilisateurs à des psychologues. Avec un groupe de psychologues volontaires, nous avons classé les paires de segments de conversations en messages à haut risque nécessitant une attention urgente et en messages normaux. Nous avons annoté 1795 exemples dont 612 sont des urgences. Nous étions donc confrontés à un problème de classification déséquilibrée.


Résumé

Dans le monde entier, le suicide est la deuxième cause de décès dans la tranche d'âge des 15 à 29 ans. Les groupes minoritaires LGBTI sont particulièrement exposés au risque de suicide en raison de la discrimination et de la marginalisation dont ils font l'objet pour exprimer leur identité. Todo Mejora est une organisation chilienne qui offre le soutien professionnel de psychologues aux adolescents du groupe LGBTI par l'intermédiaire d'une application de chat mobile qui les aide à surmonter les problèmes auxquels ils sont confrontés. L'utilisation croissante de cette "Hora Segura" a nécessité un système capable de détecter automatiquement les messages urgents liés au suicide afin d'aider plus rapidement les cas à haut risque. Dans ce rapport, nous montrons comment nous créons un tel système de détection d'urgence, que nous traitons comme un problème de classification binaire. Notre modèle le plus performant atteint une valeur de rappel de 0,8 et une précision de 0,61, ce qui donne un score F1 de 0,69 sur l'ensemble de test.

Introduction

Environ un million de personnes se suicident chaque année. Dans le groupe d'âge des 15 à 29 ans, le suicide est la deuxième cause de décès. On estime que ces chiffres continueront à augmenter au cours des prochaines années. [1]

Au Chili, environ cinq personnes se suicident chaque jour, le nombre le plus élevé se situant dans la tranche d'âge des 25 à 44 ans. Les hommes sont quatre fois plus susceptibles de se suicider que les femmes. Dans le groupe d'âge des 10 à 14 ans, le taux de suicide a doublé entre 2000 et 2008. [2]

Todo Mejora [3] est une fondation chilienne dont la mission est d'offrir un soutien aux enfants et aux adolescents qui souffrent de pensées suicidaires résultant de la discrimination et de l'intimidation à l'encontre de leur orientation sexuelle ou de l'expression de leur identité.

Il existe des preuves cohérentes que le groupe LGBTI présente un risque accru de suicide, voir par exemple [4].

En collaboration avec Let's Talk [5], Todo Mejora propose une application pour téléphone mobile qui met ses utilisateurs en contact direct avec des psychologues bénévoles pendant la "Hora Segura". Les personnes concernées peuvent y parler ouvertement de leurs problèmes et trouver une aide professionnelle.

Comme le nombre d'utilisateurs dépasse le nombre de psychologues disponibles et qu'il n'est pas encore possible d'offrir un soutien à tout moment, il peut arriver que des cas urgents de personnes à haut risque restent sans réponse pendant un certain temps. Nous voulons utiliser le traitement du langage naturel (NLP) pour détecter automatiquement les messages urgents liés au suicide. Un tel système de détection d'urgence pourrait alors déclencher l'envoi de notifications aux psychologues pour attirer leur attention sur les cas les plus graves.

Dans ce rapport, nous résumons ce système de détection d'urgence, que nous traitons comme un problème de classification binaire. Tout d'abord, nous décrivons la collecte de données annotées pour cette tâche. Nous montrons ensuite comment nous combinons des méthodes d'extraction de caractéristiques textuelles, telles que Word2Vec et Latent Semantic Analysis, avec des algorithmes de classification pour construire un pipeline de classification. Nous concluons en résumant nos résultats et en présentant les moyens d'améliorer ce système à l'avenir.

Ensembles de données

Nous voulons identifier les messages à haut risque de suicide dans les conversations écrites entre un utilisateur et un psychologue (agent). Le système analysera les conversations en temps réel et évaluera le risque de suicide pour chaque message entrant. L'ensemble de données que nous collectons doit donc être proche du niveau du message. Cependant, nous devons tenir compte de deux caractéristiques des applications de chat.

Figure 1. Définition d'un segment et d'une paire de segments dans une conversation.

Les membres d'un groupe de discussion divisent souvent leur ligne de pensée en plusieurs messages. Par conséquent, nous ne devons pas évaluer chaque message individuellement, mais regrouper les messages consécutifs d'un utilisateur. Nous appelons cela un "segment".

De plus, les messages comprennent souvent une réaction au message précédent de l'autre participant. Dans cette application spécifique, le

L'agent posera souvent une question à l'utilisateur, qui y répondra ensuite dans ses prochains messages. Par conséquent, le segment précédent de l'agent est important pour mettre en contexte le segment de l'utilisateur.

Pour ces deux raisons, nous annoterons la paire de segments agent et utilisateur plutôt que les messages individuels. Nous appelons cette unité une "paire de segments". Voir la figure 1 pour une visualisation.

Le premier segment de l'utilisateur dans chaque conversation constitue une exception à cette règle, car aucun contexte n'existe. Comme les premiers messages d'une conversation sont d'une très grande importance, nous incluons également ces segments d'utilisateurs isolés dans nos annotations.

Pour construire le jeu de données, nous créons d'abord toutes les paires de segments de toutes les conversations de notre base de données. Comme il n'est pas possible d'annoter toutes les paires de segments, nous filtrons les paires de segments en exigeant qu'elles contiennent au moins un mot clé parmi une liste de mots clés fortement corrélés au risque de suicide.

Nous téléchargeons toutes les paires de segments sélectionnées sur la plateforme d'étiquetage des données "Collaboratron" [6], où nous demandons à nos volontaires de décider si l'exemple donné présente un risque élevé de suicide et nécessite une attention urgente.

Ici, nous traitons le problème comme un problème de classification binaire.

Nous avons collecté 1795 paires de segments annotés, dont 612 présentent un risque élevé et nécessitent une attention urgente. Nous avons constitué un ensemble de données d'entraînement avec 1079 exemples et des ensembles de validation et de test avec 358 exemples chacun. Dans chacun de ces ensembles, 34,1% des exemples sont des urgences.

En plus de cet ensemble de paires de segments annotés, nous allons utiliser les segments de toutes les conversations de Todo Mejora dans notre base de données. Ce jeu de données non supervisé se compose de 600 000 segments (segments d'agent et d'utilisateur) et sera utilisé pour entraîner les extracteurs de caractéristiques textuelles, tels que word2vec et doc2vec.

Dans cette section, nous avons présenté les jeux de données pertinents. Dans la section suivante, nous expliquerons les détails des pipelines de classification.

Méthodologie

Après avoir présenté le jeu de données dans la section précédente, nous allons maintenant montrer comment nous utilisons les données annotées pour construire un pipeline de classification.

Pour transformer le texte en vecteurs de caractéristiques numériques, nous utiliserons trois approches différentes. Il s'agit de l'analyse sémantique latente (LSA) [7], word2vec [8] et doc2vec [9]. Les vecteurs de caractéristiques obtenus seront passés à un algorithme de classification. Ici, nous testerons la régression logistique et les machines à vecteurs de support. Nous utilisons le package gensim pour l'implémentation de word2vec et doc2vec, pour tous les autres algorithmes nous utilisons la bibliothèque scikit-learn de python.

LSA et doc2vec renverront automatiquement un vecteur caractéristique pour chaque paire de segments. Comme word2vec travaille sur une base mot par mot, nous additionnerons tous les vecteurs mots d'une paire de segments et normaliserons le vecteur résultant pour qu'il ait une norme d'unité.

Comme il y a deux participants à la conversation, nous pouvons créer des vecteurs de caractéristiques pour les deux rôles indépendamment et les empiler pour entraîner le classificateur. Nous allons comparer cette approche à l'extraction d'un vecteur de caractéristiques pour le texte concaténé des deux participants. Nous appelons ces deux approches respectivement "textes utilisateurs indépendants" et "textes utilisateurs concaténés".

Nous combinerons chacun des extracteurs de caractéristiques textuelles avec une régression logistique ou une machine à vecteurs de support comme classificateur. Les caractéristiques textuelles proviendront soit des textes concaténés de l'agent et de l'utilisateur, soit de la pile des caractéristiques indépendantes des textes de l'agent et de l'utilisateur.

Tout d'abord, nous entraînons les extracteurs de caractéristiques textuelles sur l'ensemble de données non supervisé de tous les segments de conversation. Nous utilisons ensuite les caractéristiques extraites de l'ensemble de données supervisé pour entraîner le classificateur final. Nous effectuons une optimisation des hyper paramètres sur l'ensemble de validation.

À titre de comparaison, nous testons également les performances en utilisant des embeddings de mots entraînés précédemment sur le Billion Spanish Word Corpus (SBWC) et le Spanish Unannotated Corpora (SUC) [10, 11, 12]. Nous avons testé des embeddings avec une dimensionnalité de 100 et 300.

Métriques

Nous sommes surtout intéressés par la détection des urgences dans les messages et nous appelons les messages annotés comme étant des urgences la classe "positive". Un vrai positif est donc une urgence correctement identifiée. Nous utilisons la précision, le rappel et le score F1 sur les ensembles de validation et de test pour comparer les différents modèles. Nous avons :

précision = TPTP + FP,

rappel = TPTP + FN,

F1 = 2 * précision * recallprecision + recall,

où TP, FP et FN indiquent le nombre de vrais positifs, de faux positifs et de faux négatifs, respectivement.

Résultats

Nous présentons les résultats sur les ensembles de validation et de test dans le tableau 1 en termes de métriques présentées dans la section précédente.

Parmi les extracteurs de caractéristiques, nous constatons que word2vec obtient les meilleures performances sur les ensembles de validation et de test. Ceci est vrai pour les deux cas de textes utilisateurs concaténés et indépendants. LSA est clairement surpassé par les deux autres extracteurs de caractéristiques.

Les performances de l'ensemble de test sont généralement inférieures à celles de l'ensemble de validation, ce qui indique qu'il existe un certain surajustement. Cet effet est le plus fort lorsque l'on utilise LSA comme extracteur de caractéristiques et il est important pour le modèle word2vec pré-entraîné. Lors de l'utilisation de word2vec ou doc2vec entraînés de manière personnalisée, l'effet devient plus faible si SVM est utilisé comme classificateur. En général, la collecte de plus de données et l'augmentation de la taille des ensembles de validation et de test devraient atténuer davantage l'effet.

Nous avons testé différents modèles d'intégration de mots pré-entraînés et avons listé le modèle le plus performant dans le tableau 1. Bien que notre ensemble de données soit petit, nous avons trouvé qu'un modèle word2vec de 300 dimensions était le plus performant [10]. Comme on peut s'y attendre, son surajustement augmente considérablement lors de l'utilisation de textes d'utilisateurs concaténés.

L'ensemble de données non supervisé utilisé pour adapter nos incorporations de mots et de documents personnalisées est relativement petit par rapport, par exemple, au SBWC ou au SUC. Cependant, comme l'application est très spécifique, les modèles personnalisés surpassent toujours les incorporations de mots entraînées sur des collections de textes beaucoup plus importantes.

Dans l'ensemble, nous ne voyons pas d'avantage clair dans l'utilisation de textes d'utilisateurs indépendants. Néanmoins, le modèle le plus performant, avec une forte cohérence entre les validations, utilise word2vec pour extraire des caractéristiques de textes d'utilisateurs indépendants et les classifier avec un SVM. Il obtient une valeur de rappel de 0,80 sur l'ensemble de test (ce qui signifie qu'il identifie 80 % de toutes les urgences) et une précision de 0,61 (ce qui signifie que 61 % de toutes les urgences détectées ont été annotées comme urgentes).

Discussion et conclusions

Dans ce rapport, nous avons construit un système pour détecter les messages urgents et à haut risque dans une application de chat connectant ses utilisateurs à des psychologues. Avec un groupe de psychologues volontaires, nous avons classé les paires de segments de conversations en messages à haut risque nécessitant une attention urgente et en messages normaux. Nous avons annoté 1795 exemples dont 612 sont des urgences. Nous étions donc confrontés à un problème de classification déséquilibrée.

Les données ont été utilisées pour construire un pipeline de classification binaire afin de détecter les urgences dans l'application de chat en temps réel. Le meilleur modèle s'est avéré être une combinaison d'un extracteur de caractéristiques word2vec avec une machine à vecteurs de support jointe comme classificateur. Il a obtenu une précision de 0,61, un rappel de 0,80 et un score F1 de 0,69 sur l'ensemble de test.

Nous avons cherché à savoir si les performances augmentent si nous traitons les textes envoyés par le psychologue ou l'utilisateur indépendamment les uns des autres. Sur le jeu de données actuel, nous n'avons pas trouvé d'amélioration significative en utilisant des groupes d'utilisateurs indépendants, mais nous continuerons à tester cette approche avec un jeu de données plus important.

Nous avons également testé les performances de classification en utilisant des embeddings de mots pré-entraînés. Nous avons constaté qu'un modèle word2vec de 300 dimensions était le plus performant [10], mais avec un score F1 inférieur à celui de nos extracteurs de caractéristiques textuelles personnalisés.

Le détecteur d'urgence a été mis en production et attache désormais des étiquettes automatisées aux conversations, ce qui aide les agents à réviser rapidement les cas étiquetés et à les classer par ordre de priorité s'ils sont vraiment urgents. De plus, le système peut envoyer des notifications aux psychologues, si un cas urgent apparaît en dehors des heures de présence.

Le détecteur peut être amélioré de diverses manières. En ce qui concerne la construction de modèles, nous n'avons pas encore terminé un examen complet de tous les modèles possibles. Par exemple, nous aimerions ajuster les modèles pré-entraînés deep learning , tels que ULMFiT, qui ont montré d'excellents résultats même avec de petits ensembles de données.

Outre l'augmentation de la taille de l'ensemble de données, on pourrait également travailler davantage sur l'ingénierie des caractéristiques du texte. Par exemple, si un message d'utilisateur contient des références à une idée spécifique de suicide, il est très probable qu'une attention urgente est nécessaire. Une fonction spécialement conçue pour détecter ces références pourrait être cruciale pour améliorer encore les performances.

En outre, nous ne tenons pas compte de l'historique de chat d'un utilisateur spécifique, qui peut contenir des détails importants sur la personne, comme, entre autres, des tentatives de suicide passées, des cas de (cyber)intimidation ou une forte consommation d'alcool.

D'autres caractéristiques, comme l'heure à laquelle le message a été envoyé, peuvent également fournir des informations précieuses.

Nous pensons que le système développé dans ce rapport est un excellent premier pas pour assurer la présence de conversations urgentes sur le suicide.

Références

[1] Organisation mondiale de la santé, 2019, consulté le 29 septembre sur https://www.who.int/mental_health/prevention/suicide/suicideprevent/en/.

[2] Ministerio de Salud. Plan Nacional Salud Mental, 2017, consulté le 29 septembre sur http://www.sml.gob.cl/dctos/genero/INVESTIGACION_SUICIDIO%20EN%20CHILE%202000-2010__ACTUALIZACION_version%20final%20.pdf.

[3] https://todomejora.org/

[4] Suicide et risque de suicide dans les populations lesbiennes, gays, bisexuelles et transgenres : Review and Recommendations, Ann P. Haas, Mickey Eliason, Vickie M. Mays et al, 2011, Journal of Homosexuality, 58:1, 10-51, DOI : 10.1080/00918369.2011.534038

[5] lets-talk.ai/

[6] collaboratron.epistelab.com

[7] Thomas Landauer et Peter Foltz et Peter W. Laham et Darrell, Introduction to Latent Semantic Analysis, 1998, Discourse Processes. 25 (2-3) : 259-284

[8] Tomas Mikolov et Kai Chen et Greg Corrado et Jeffrey Dean, Efficient Estimation of Word Representations in Vector Space, 2013, arXiv:1301.3781.

[9] Andrew M. Dai, Christopher Olah et Quoc V. Le, Document Embedding with Document Vectors, 2015, arXiv:1507.07998.

[10] Cristian Cardellino : Spanish Billion Words Corpus and Embeddings (mars 2016), crscardellino.github.io/SBWCE/

[11] github.com/josecannete/spanish-corpora

[12] P. Bojanowski*, E. Grave*, A. Joulin, T. Mikolov, Enrichissement des vecteurs de mots avec des informations sur les sous-mots