Brevet FR3150317A1 — publié le 20241227

La présente invention concerne un procédé de pseudoanonymisation d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données (12) d’un premier serveur (1) et contenant des données confidentielles, le procédé étant caractérisé en ce qu’il comprend la mise en œuvre par des moyens de traitement de données (21) d’un deuxième serveur (2) d’étapes de : Obtention de ladite première requête depuis un terminal client (10) ; Identification, au moyen d’un réseau de neurones d’anonymisation prenant en entrée ladite première requête et une liste prédéfinie d’en-têtes de la base de données relatifs à des données confidentielles, de mots à anonymiser de la première requête ; Génération d’une deuxième requête en langage naturel correspondant à la première requête dans laquelle les mots identifiés sont remplacés par des pseudonymes. [Fig. 1] Procédé de pseudoanonymisation d’une première requête, en langage naturel, d’interrogation d’une base de données contenant des données confidentielles. DOMAINE TECHNIQUE GÉNÉRAL La présente invention se rapporte au domaine des bases de données. Plus précisément, elle concerne un procédé de pseudoanonymisation d’une première requête, en langage naturel, d’interrogation d’une base de données contenant des données confidentielles ETAT DE L’ART De nombreuses organisations utilisent des bases de données propriétaires auxquelles on peut accéder via des requêtes dans un langage informatique de manipulation de la base de données tel que SQL. On connait par ailleurs des algorithmes permettant, à partir d’une requête en langage naturel écrit ou parlé, de générer automatiquement la requête SQL correspondante et d’accéder aux données souhaitées, notamment grâce à des solutions d’IA générative de type LLM (Large Language Models). Cela est très utile par exemple dans un environnement médical pour l’interrogation d’une base de données de santé de patients (ce que l’on appelle EHR, Electronic Health Records). La difficulté est qu’il faut pour fournir au LLM, souvent opéré par un tiers, accès au contenu de la base de données, ce qui n’est généralement pas possible pour des questions de confidentialité des données, en particulier respect de la vie privée (privacy) quand il s’agit de données personnelles (ce qui est tout particulièrement le cas des EHR). La solution logique est de pseudoanonymiser les données, en remplaçant les données personnelles dans les requêtes en langage naturel par des identifiants uniques en entrée du LLM, puis de dé-pseudoanonymiser les requêtes SQL générées, en utilisant une table de correspondance mise à jour régulièrement. Une telle solution s’avère complexe car il est en pratique nécessaire de reconnaître les informations constituant des données personnelles dans le langage naturel, généralement en l’absence de tout contexte, ce qui est très difficile même pour un humain. Il existe des méthodes de type NER (Named entity recognition) permettant de classifier des mots-clés dans une requête en divers catégories prédéfinies (par exemple « personne », « lieu », etc.), et il suffit ensuite d’anonymiser tous les mots de certaines catégories cibles considérées comme constituant des données personnelles. Cependant ces méthodes sont connues pour leur complexité et leur lourdeur. De surcroit, ce qui constitue des données personnelles peut être subjectif et peut dépendre de la nature de la base de données voir d’autres données personnelles, de sorte que réduire le caractère personnel ou non d’une donnée à sa simple catégorie est trop limitant. Par exemple, dans une requête sur des EHR, l’adresse du patient est une donnée personnelle mais pas celle de l’hôpital. Similairement, un hôpital peut avoir le nom d’une personne. Ainsi, la pseudo-anonymisation via NER a tendance à être trop conservatrice, ce qui au final prive inutilement le LLM d’informations et altère ses performances. Il a par conséquent été proposé dans le document « EHR-Safe: Generating high-fidelity and privacy-preserving synthetic electronic health records, Jinsung Yoon and Sercan O. Arik, Research Scientists, Google Research, Cloud AI Team ”, une solution alternative dans laquelle on va générer au moyen d’un réseau de neurones de type GAN (Generative adversarial Network) des données médicales synthétiques respectant une représentation réaliste sur lesquelles on pourra entraîner le LLM de manière agnostique. Plus précisément, on combine un autoencodeur (encodeur + décodeur) avec le GAN (générateur + discriminateur) de la manière suivante : De manière classique l’autoencodeur est entraîné sur les données réelles de sorte à être capable de prédire son entrée ; Le discriminateur travaille non pas directement sur les données médicales, mais sur leur représentation par l’encodeur, i.e. les données produites par le générateur sont directement des « encodages » synthétiques et non pas des données similaires aux données médicales ; On produit lesdites données médicales synthétiques en injectant lesdits encodages dans le décodeur ; Le GAN et l’autoencodeur sont abandonnés, et on entraine le LLM sur ces dernières données synthétiques, sans accès aux données réelles. Une telle solution évite toutes les problématiques de pseudo-anonymisation et permet au LLM de travailler sur des données « complètes », mais s’avère tout de même très complexe à mettre en œuvre. De surcroit, cette solution n’est utile que pour l’apprentissage et on devra toujours pseudoanonymiser les requêtes en fonctionnement L’invention vient encore améliorer la situation. PRÉSENTATION DE L’INVENTION La présente invention se rapporte donc selon un premier aspect à un procédé de pseudoanonymisation d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données d’un premier serveur et contenant des données confidentielles, le procédé étant caractérisé en ce qu’il comprend la mise en œuvre par des moyens de traitement de données d’un deuxième serveur d’étapes de : Obtention de ladite première requête depuis un terminal client ; Identification, au moyen d’un réseau de neurones d’anonymisation prenant en entrée ladite première requête et une liste prédéfinie d’en-têtes de la base de données relatifs à des données confidentielles, de mots à anonymiser de la première requête ; Génération d’une deuxième requête, en langage naturel, correspondant à la première requête dans laquelle les mots identifiés sont remplacés par des pseudonymes. Selon des caractéristiques avantageuses et non limitatives : Ledit réseau de neurones d’anonymisation comprend au moins un bloc encodeur de texte, un bloc d’attention et un bloc décodeur, l’étape (b) comprend une sous-étape (b1) d’obtention d’une représentation de la première requête et d’une représentation de la liste d’en-têtes de la base de données à anonymiser au moyen dudit bloc encodeur de texte ; une sous-étape (b3) d’obtention d’une représentation des parties relatives aux mots à anonymiser de la première requête en appliquant ledit bloc d’attention à ladite représentation de la première requête, ladite liste d’en-têtes de la base de données à anonymiser étant utilisée comme carte d’attention ; et une sous-étape (b4) d’identification desdits mots à anonymiser de la première requête en appliquant le bloc décodeur à ladite représentation des parties relatives aux mots à anonymiser de la première requête. Lesdites représentations de la première requête et des parties relatives aux mots à anonymiser de la première requête sont des cartes de caractéristiques. Le bloc encodeur est un modèle préentrainé en particulier de type transformer. Ledit réseau de neurones d’anonymisation comprend en outre un bloc de contextualisation, l’étape (b) comprend une étape intermédiaire (b2) d’application à chacune des représentations de la première requête et de la liste d’en-têtes de la base de données à anonymiser. Ledit bloc de contextualisation est un réseau de neurones récurrent bidirectionnel, en particulier de type BiLSTM. Le bloc décodeur comprend un premier sous-bloc et un deuxième sous-bloc en parallèle, la sous étape (b4) comprend : La prédiction, au moyen du premier sous-bloc, du nombre de mots à anonymiser de la première requête ; l’identification, au moyen du second sous-bloc, desdits mots à anonymiser de la première requête en fonction dudit nombre de mots à anonymiser prédit Le premier sous-bloc est un réseau de neurones entièrement connecté terminé par une couche d’activation de type softmax, et le deuxième sous-bloc est un autre réseau de neurones entièrement connecté terminé par une couche d’activation de type sigmoïde. Ledit deuxième sous-bloc est appliqué de manière itérée autant de fois que ledit nombre prédit de mots à anonymiser de la première requête. Le procédé comprend une étape (a0) d’apprentissage, par des moyens de traitement de données d’un troisième serveur, du bloc d’attention et du bloc décodeur à partir de premières requêtes de références dont les mots à anonymiser sont connus. Selon un deuxième aspect, l’invention concerne un procédé de transcription d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données d’un premier serveur et contenant des données confidentielles, vers un langage informatique de manipulation de ladite base de données, en particulier SQL, caractérisé en ce qu’il comprend la mise en œuvre par des moyens de traitement de données d’un deuxième serveur du procédé selon le premier aspect de pseudoanonymisation de ladite première requête, de sorte à générer une deuxième requête, en langage naturel, correspondant à la première requête dans laquelle les mots identifiés sont remplacés par des pseudonymes, puis d’étapes de : requête de transcription par un modèle de langage génératif de la deuxième requête en une troisième requête, en ledit langage informatique de manipulation de ladite base de données ; génération d’une quatrième requête, en ledit langage informatique de manipulation de ladite base de données, correspondant à la troisième requête dans laquelle les pseudonymes sont remplacés par les mots d’origine de la première requête. Selon un troisième aspect, l’invention concerne un procédé d’interrogation d’une base de données stockée sur des moyens de stockage de données d’un premier serveur et contenant des données confidentielles, caractérisé en ce qu’il comprend la mise en œuvre par des moyens de traitement de données d’un deuxième serveur du procédé selon le deuxième aspect de transcription d’une première requête, en langage naturel, d’interrogation de ladite base de données, vers un langage informatique de manipulation de ladite base de données, de sorte à générer une quatrième requête, en ledit langage informatique de manipulation de ladite base de données correspondant à la première requête, puis d’une étape de : Exécution de ladite quatrième requête. Selon un quatrième aspect, l’invention concerne un serveur caractérisé en ce qu’il comprend des moyens de traitement de données configurés pour : Obtenir depuis un terminal client d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données d’un premier serveur et contenant des données confidentielles ; identifier, au moyen d’un réseau de neurones d’anonymisation prenant en entrée ladite première requête et une liste prédéfinie d’en-têtes de la base de données relatifs à des données confidentielles, des mots à anonymiser de la première requête ; générer une deuxième requête, en langage naturel, correspondant à la première requête dans laquelle les mots identifiés sont remplacés par des pseudonymes. Selon un quatrième et un cinquième aspects, l’invention concerne un produit programme d’ordinateur comprenant des instructions de code pour l’exécution d’un procédé selon le premier aspect de pseudoanonymisation d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données d’un premier serveur et contenant des données confidentielles ; d’un procédé selon le deuxième aspect de transcription de la première requête vers un langage informatique de manipulation de ladite base de données, en particulier SQL ; ou d’un procédé selon le troisième aspect d’interrogation de la base de données ; et un moyen de stockage lisible par un équipement informatique sur lequel est enregistré un produit programme d’ordinateur comprenant des instructions de code pour l’exécution d’un procédé selon le premier aspect de pseudoanonymisation d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données d’un premier serveur et contenant des données confidentielles ; d’un procédé selon le deuxième aspect de transcription de la première requête vers un langage informatique de manipulation de ladite base de données, en particulier SQL ; ou d’un procédé selon le troisième aspect d’interrogation de la base de données. PRÉSENTATION DES FIGURES D’autres caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description qui va suivre d’un mode de réalisation préférentiel. Cette description sera donnée en référence aux dessins annexés dans lesquels : la est un schéma d’un système pour la mise en œuvre du procédé selon l’invention ; la est un logigramme illustrant les étapes d’un mode de réalisation du procédé selon l’invention ; la représente schématiquement l’architecture générale du réseau de neurones d’anonymisation utilisé par le procédé selon l’invention ; la représente schématiquement l’architecture détaillée d’un mode de réalisation du réseau de neurones d’anonymisation utilisé par le procédé selon l’invention. DESCRIPTION DÉTAILLÉE Architecture La présente invention concerne selon un premier aspect un procédé de pseudoanonymisation d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données 12 d’un premier serveur 1, en référence à la . Comme l’on verra la précédente invention concerne également : selon un deuxième aspect un procédé de transcription de ladite première requête en langage naturel en une quatrième requête en langage informatique, utilisant le procédé selon le premier aspect ; et selon un troisième aspect un procédé d’interrogation d’une base de données utilisant le procédé selon le deuxième aspect. Ladite base de données peut être toute base de données structurée stockée sur des moyens de stockage de données 12 d’un premier serveur 1, typiquement une base de données médicales stockée sur un serveur 1 d’un hôpital. Comme l’on verra elle est généralement constituée de tables. Par interrogation de la base de donnée, on entend toute opération consistant à accéder à la base de données et extraire certaines informations. On suppose qu’on a un langage informatique spécifique d’interrogation de ladite base de données, i.e. un langage exécutable par des moyens de traitement de données 11 dudit premier serveur 1 pour manipuler ladite base de données, par exemple SQL dans la suite de la présente description. C’est en pratique le langage dans lequel sera la quatrième requête ainsi qu’une troisième requête. Les présents procédés sont spécifiques en ce que la première requête relative à une interrogation d’une base de données (i.e. décrivant cette interrogation désirée), sont en langage naturel, c’est-à-dire la langue « normale » parlée par un être humain et non un langage informatique structuré, a fortiori pas ledit langage de manipulation de la base de données. Le langage naturel s’écrit sans apprentissage préalable, contrairement à tous les langages informatiques. On suppose que ladite base de données contient des données confidentielles. Par confidentielles, on entend dont la publication ou la transmission à une entité externe est impossible, et en particulier des données personnelles (données relevant de la vie privée), des données militaires, des données économiques, etc. Par exemple, dans le cas de données médicales (EHR), les données confidentielles sont : toutes les données relatives à l’identité d’un patient ou d’un soignant ; les données relatives à une pathologie, une condition médicale, etc. ; les données relatives à un soin, une médicamentation, etc. Par pseudoanonymisation de la première requête, on entend remplacement des mots relatifs à des données confidentielles par des pseudonymes dans la première requête, et en particulier génération d’une deuxième requête, en langage naturel, correspondant à la première requête dans laquelle lesdits mots sont remplacés par des pseudonymes. Les pseudonymes, ou « codes » sont des identifiants uniques (chaînes alphanumériques), dépourvues de sens et ne permettant pas de remonter à la donnée confidentielle, possiblement générés aléatoirement. Par exemple la première requête « Donne-moi la quantité moyenne en mg de diphénhydramine donnée à Mr. John Doe dans la chambre 4 hier par le docteur James Smith » pourrait être réécrite en la deuxième requête « Donne-moi la quantité moyenne en mg de XLSM409 donnée à Mr. GHRM035 dans la chambre 4 hier par le docteur FNM897 ». On a donc les codes suivants ({XLSM409: Diphénhydramine, GHRM035: John Doe, FNM897: James Smith}). De manière connue, la table de correspondance doit être conservée pour générer la quatrième requête à partir de la troisième requête, voir plus loin. Comme représenté sur la , on a en outre un deuxième serveur 2 d’exécution dudit procédé, un terminal client 10 tel qu’un poste de travail ou un smartphone, présentant une interface et via lequel l’utilisateur va pouvoir interagir, et un éventuel troisième serveur 3 d’apprentissage. On comprend que le deuxième serveur 2 est connecté au terminal client 10 au deuxième serveur 2 et/ou au troisième serveur 3, par exemple via un réseau 20 tel que le réseau internet. Les deuxième/troisième serveurs 2, 3 comprend également des moyens de traitement de données 21, 31 tel qu’un processeur de toute nature, et des moyens de stockage de données 22, 32 i.e. une mémoire. A noter que le deuxième serveur 2 peut être confondu avec le terminal client 10 et/ou avec le premier serveur 1 et/ou avec le troisième serveur 3. Procédé En référence à la , le présent procédé est mis en œuvre par les moyens de traitement de données 21 du deuxième serveur, et commence par une étape (a) d’obtention de ladite première requête (en langage naturel) depuis le terminal client 10. Ladite première requête peut être directement saisie par l’utilisateur sur une interface du terminal 10, l’utilisateur ayant en tête l’interrogation qu’il souhaite accomplir et se contenant de l’écrire, ou bien on pourra réutiliser une première requête déjà écrites pour la même interrogation donnée, l’utilisateur se contenant de la réutiliser (par exemple pour mettre à jour son résultat). Le procédé comprend ensuite une étape (b) principale d’identification, au moyen d’un réseau de neurones d’anonymisation prenant en entrée ladite première requête et une liste prédéfinie d’en-têtes de la base de données relatifs à des données confidentielles, de mots à anonymiser de la première requête, visible sur la , dont on décrira des exemples d’architecture plus loin. Ladite liste prédéfinie d’en-têtes de la base de données relatifs à des données confidentielles est une sous-liste de la liste de toutes les en-têtes de la base de données. Par en-têtes, plus communément appelés « header », on entend les attributs des différentes tables de la base de données, typiquement les « noms de colonnes ». Par exemple on peut avoir les tables avec les headers suivants, ceux soulignés étant les headers relatifs à des données confidentielles : Table 1 : Patient | date d’hospitalisation |chambre| motif Table 2 : Docteur | Patient | médication prescrite |heure Table 3 : Docteur |Specialité On a la liste complète de headers suivante : {Patient ; date d’hospitalisation ; chambre ; motif ; Docteur ; médication prescrite ; heure ; Spécialité}, et donc la liste de headers relatifs à des données confidentielles suivante : {Patient ; date d’hospitalisation ; motif ; Docteur ; médication prescrite}. Il suffit, connaissant la liste complète des headers (qui n’est jamais particulièrement longue), de sélectionner manuellement la liste ceux qui relevé d’informations confidentielles. Partant de la première requête et considérant ladite liste, le réseau de neurones d’anonymisation est capable de prédire les mots qui correspondent aux headers, ce qui permet directement d’isoler ceux qui correspondent à des headers d’informations confidentielles, et de les anonymiser. La sortie dudit réseau de neurones d’anonymisation est typiquement un ensemble de « pointeurs », c’est-à-dire un vecteur contenant les indices des mots à anonymiser de la première requête. A noter que « mot » doit être interprété comme unité sémantique, prénom+nom formant par exemple bien entendu un seul mot. On a à ce titre une étape (c) suivante de génération d’une deuxième requête, en langage naturel, correspondant à la première requête dans laquelle les mots identifiés sont remplacés par des pseudonymes, de manière classique. Cette étape peut comprendre comme expliqué la génération et stockage d’une table de correspondance (des pseudonymes avec les mots anonymisés). Le passage par les headers s’avère bien plus souple que la classification par NER, non limité par des catégories prédéfinies, et bien plus simple à configurer. Réseau de neurones d’anonymisation On pourra utiliser toute architecture pour le réseau de neurones d’anonymisation, mais de manière préférée ce dernier comprend, conformément à la , au moins (successivement) un bloc encodeur de texte, un bloc d’attention et un bloc décodeur. De manière particulièrement préférée, un bloc de contextualisation est intercalé entre le bloc encodeur de texte et le bloc d’attention. L’étape (b) comprend alors une pluralité de sous-étapes correspondant à la mise en œuvre des divers blocs. Le bloc encodeur de texte est un bloc dit « d’embedding » capable d’encoder un texte en une « représentation », avantageusement un modèle préentrainé (et éventuellement fine-tuned ensuite) en particulier de type transformer. Ladite représentation est elle-même souvent appelée embedding du texte, c’est en pratique une carte de caractéristiques, ou « feature maps », généralement constituée d’une pluralité de vecteurs de caractéristiques (formant une matrice), les vecteurs ayant la longueur du texte et le nombre de vecteurs correspondant à une taille d’encodage prédéterminé par le modèle, définissant une profondeur sémantique. On pourra utiliser tout modèle de langage, dont les grands modèles de langages (LLM), et par exemple l’un des modèles suivants: BERT (Bidirectional Encoder Representations from Transformers); RoBERTa (Robustly Optimized BERT Approach) XLNet USE (Universal Sentence Encoder) InferSent FastText ELMo (Embeddings from Language Models) Doc2Vec LASER (Language-Agnostic SEntence Representations) SBERT (Sentence-BERT) CamemBERT - a French version of Bert. Ledit dudit bloc encodeur de texte est utilisé dans une première sous-étape (b1) d’obtention d’une représentation de la première requête et d’une représentation de la liste d’en-têtes de la base de données à anonymiser. On comprend qu’on génère deux représentations, l’une de la première requête (de dimensions : taille de la première requête*taille d’encodage) et l’autre de la liste d’entêtes (de dimensions : nombre d’entêtes relatifs à des données confidentielles*taille d’encodage). En d’autres termes, le bloc encodeur prend en entrée : La première requête La liste d’en-têtes de la base de données à anonymiser Et renvoie en sortie : Une représentation de la première requête une représentation de la liste d’en-têtes de la base de données à anonymiser Ensuite, on a l’éventuel bloc de contextualisation. En effet, même si les représentations en sortie du bloc d’encodeur intègrent le contexte, il est souhaitable de contextualiser encore davantage via ce bloc, ce qui en pratique se traduit par la génération de nouvelles représentation avec par exemple une taille d’encodage inférieure, dites « contextualized embeddings ». Ledit bloc de contextualisation est avantageusement un réseau de neurones récurrent (RNN) bidirectionnel, en particulier de type BiLSTM, c’est-à-dire 2 LSTM (Long-Short Term Memory), un dans le sens de lecture (dit « forward ») et dans le sens inverse (dit « backward »). Ledit dudit bloc de contextualisation est utilisé dans une sous-étape (b2), d’application dudit bloc à chacune des représentations de la première requête et de la liste d’en-têtes de la base de données à anonymiser. En d’autres termes on a deux utilisations du bloc de contextualisation : dans la première, il prend en sortie la représentation de la première requête et renvoie en sortie une nouvelle représentation « contextualisée » de la première requête dans la seconde, il prend en sortie la représentation de la liste d’en-têtes de la base de données à anonymiser et renvoie en sortie une nouvelle représentation « contextualisée » de la liste d’en-têtes de la base de données à anonymiser On alors un bloc d’attention. Le mécanisme d'attention est une technique populaire utilisée dans les modèles d'apprentissage profond pour de nombreuses taches telles que la détection d’objets dans des images. L'idée sous-jacente est ici d'aider le modèle à concentrer son attention sur les parties pertinentes de la première requête lorsqu'il génère sa sortie. Ainsi, on a une sous-étape (b3) d’obtention d’une représentation des parties relatives aux mots à anonymiser de la première requête en appliquant ledit bloc d’attention à ladite représentation de la première requête, ladite liste d’en-têtes de la base de données à anonymiser étant utilisée comme carte d’attention. Le mécanisme d'attention utilise la représentation de la liste d’en-têtes de la base de données à anonymiser (ou avantageusement sa version contextualisée) comme un ensemble de caractéristiques pour calculer les poids du mécanisme d'attention sur la première requête. En d'autres termes, le modèle examine la représentation vectorielle des en-têtes et utilise ces informations pour déterminer quels mots de la première requête sont les plus pertinents par rapport aux en-têtes. Pour ce faire, il attribue des poids plus élevés aux mots qui sont plus étroitement liés aux en-têtes en termes de sens et de contexte. Le résultat de ce processus est un vecteur de caractéristiques (une nouvelle représentation) qui représente les parties pertinentes de la première requête dans le contexte des en-têtes, c’est-à-dire les parties susceptibles d’être relatives à des données confidentielles, et donc à anonymiser. Il n’y a plus qu’à décoder cette représentation, le procédé comprend ainsi une sous-étape une étape (b4) d’identification desdits mots à anonymiser de la première requête en appliquant le bloc décodeur à ladite représentation des parties relatives aux mots à anonymiser de la première requête (la sortie du bloc d’attention). De nombreuse architectures de bloc décodeurs peut être utilisées, notamment celles les blocs encodeurs des transformers évoqués pour la sou-étape (b1). Alternativement et de manière préférée, le bloc décodeur comprend comme l’on voit sur la un premier sous-bloc du bloc décodeur et un deuxième sous-bloc du bloc décodeur, en parallèle. Comme l’on verra, chacun du premier et du deuxième sous-bloc prend en entrée ladite représentation des parties relatives aux mots à anonymiser de la première requête, mais le deuxième sous-bloc prend en outre en entrée la sortie du premier sous-bloc. Ainsi la sous étape (b4) comprend préférentiellement : La prédiction, au moyen du premier sous-bloc, du nombre de mots à anonymiser de la première requête ; l’identification, au moyen du second sous-bloc, du nombre prédit desdits mots à anonymiser de la première requête, par exemple sous la forme d’un ensemble de pointeurs comme expliqué. Le premier sous-bloc vise donc à prédire le nombre de mots à anonymiser de la première requête. En notant M un nombre maximal de mots confidentiels à anonymiser de la première requête avec M Le deuxième sous-bloc vise à identifier le nombre prédit de mots à anonymiser de la première requête. Pour reformuler, si ledit nombre prédit de mots à anonymiser est n, alors le second sous-bloc identifie n mots. Pour ce faire, le second sous-bloc prend en entrée ledit nombre prédit, ou directement tout le vecteur de sortie du premier sous-bloc. De manière préférée, le deuxième sous-bloc est appliqué autant de fois que ledit nombre prédit de mots. Pour gérer cela, le second bloc peut en outre prendre en entrée un vecteur indiquant l'itération i≤n dans laquelle il se trouve (c'est-à-dire contenant un 1 à l'itération actuelle et un 0 ailleurs), ou une autre donnée équivalente. Cette deuxième entrée agit comme une référence pour informer le sous-bloc qu'on cherche la position du i-ème mot à anonymiser. La sortie (à chaque itération) de ce deuxième sous-bloc est avantageusement un vecteur de taille N (le nombre total de mots de la première requête), avec des valeurs comprises entre 0 et 1, représentative d’une probabilité que le mot soit à anonymiser. On peut définir que si une valeur est supérieure à 0,5, la position correspondante représente un mot qui doit être anonymisé. Alternativement, à chaque itération on prendre la valeur maximum. De manière préférée, le premier sous-bloc est un réseau de neurones entièrement connecté (FCNN Fully-Connected Neural Network) terminé par une couche d’activation de type softmax, et le deuxième sous-bloc est un autre réseau de neurones entièrement connecté terminé par une couche d’activation de type sigmoïde. Apprentissage Le procédé comprend avantageusement une étape (a0) d’apprentissage, i.e. d’obtention du réseau de neurones d’anonymisation. Comme expliqué, le bloc d’encodage est avantageusement préappris, de sorte qu’il s’agit plus préférentiellement d’entraîner l’éventuel bloc de contextualisation, le bloc d’attention et le bloc décodeur. Le bloc encodeur peut être affiné (fine-tuned) Cet apprentissage est mis en œuvre par les moyens de traitement 31 de données de l’éventuel troisième serveur 3, de manière supervisée, i.e. à partir de requêtes de référence en langage naturel dont les mots à anonymiser sont connus, typiquement stockées sur les moyens de stockage 32 du troisième serveur 3. Plus précisément, on met en œuvre, pour une pluralité de requêtes de référence en langage naturel, une étape miroir de l’étape (b), d’identification, au moyen du réseau de neurones d’anonymisation prenant en entrée ladite requête de référence et la liste prédéfinie d’en-têtes de la base de données relatifs à des données confidentielles, de mots candidats à anonymiser de la requête de référence ; et on adapte les paramètres du réseau de neurones d’anonymisation (ou du moins des blocs que l’on cherche à entrainer) en fonction des mots à anonymiser « attendus » (ceux associés avec les requêtes de référence) formant vérité terrain. Le réseau de neurones d’anonymisation est considéré correctement entraîné lorsqu’il est capable de prédire les mots anonymisés attendus. Procédés de transcription de requêtes en langage naturel et d’interrogation de la base de données Selon un deuxième aspect, l’invention concerne le procédé de transcription d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données 12 d’un premier serveur 1 et contenant des données confidentielles, vers un langage informatique de manipulation de ladite base de données, en particulier SQL, utilisant le procédé de pseudoanonymisation selon le premier aspect Plus précisément on commence par le procédé de pseudoanonymisation (étapes (a) à (c)) de sorte à générer la deuxième requête, en langage naturel, correspondant à la première requête dans laquelle les mots identifiés sont remplacés par des pseudonymes. Ensuite, dans une étape (d), les moyens 21 requièrent la transcription, par un modèle de langage génératif, généralement basé sur un grand modèle de langage (LLM), en particulier un modèle de type transformateur génératif pré-entraînés (GPT), de la deuxième requête en une troisième requête en ledit langage informatique de manipulation de ladite base de données. Par modèle de langage génératif, on entend une intelligence artificielle générative capable de générer du texte à partir d’un prompt, par exemple GPT-3, LaMDA, LLaMA, BLOOM, etc. Typiquement, le LLM est mis en œuvre par un serveur distant de sorte que cette requête lui est transmise. On note que cette externalisation ne pose aucun problème de confidentialité puisque la deuxième requête est pseudoanonymisée. En réponse, la troisième requête est reçue. On comprend que la troisième requête a le même contenu que la deuxième requête, de sorte qu’elle est encore pseudoanonymisée (et donc elle ne correspond pas à la première requête). A ce titre, le procédé selon le deuxième aspect comprend une étape (e) de génération d’une quatrième requête, en ledit langage informatique de manipulation de ladite base de données, correspondant à la troisième requête dans laquelle les pseudonymes sont remplacés par les mots d’origine de la première requête. En d’autres termes, la quatrième requête est la troisième requête « dé-pseudoanonymisée ». On comprend qu’ainsi, la quatrième requête correspond exactement à la première requête transcrite dans ledit langage informatique de manipulation de ladite base de données (SQL). Pour réaliser l’étape (e), on réutilise simplement la table de correspondance des pseudonymes de l’étape (c). Pour résumer on a 4 requêtes d’interrogation de la base de données : la première requête est en langage naturel et « en clair » (i.e. avec des mots confidentiels) ; la deuxième requête est en langage naturel et anonymisée ; la troisième requête est en langage informatique de manipulation de base de données et anonymisée ; la quatrième requête est en langage informatique de manipulation de base de données et à nouveau en clair Dans le cas de la deuxième requête : « Donne-moi la quantité moyenne en mg de XLSM409 donnée à Mr. GHRM035 dans la chambre 4 hier par le docteur FNM897 », on peut avoir la troisième requête suivante : SELECT AVG (dose_mg) AS quantité_moyenne_mg FROM prescriptions WHERE nom_patient = 'GHRM035' AND medication_prescrite = ‘Diphénhydramine’ and chambre = 4 AND nom_docteur = 'FNM897'; Et pour quatrième requête: SELECT AVG (dose_mg) AS quantité_moyenne_mg FROM prescriptions WHERE nom_patient = 'John Doe' AND medication_prescrite = ‘XLSM409’ and chambre = 4 AND nom_docteur = 'James Smith'; A noter que le modèle de langage génératif est généralement pré-entraîné, mais le procédé de transcription d’une première requête comprend avantageusement une « initialisation » de ce modèle pour améliorer ses performances, revenant à un fine-tuning. Cette initialisation peut être faite très simplement en envoyant des prompts au modèle de langage génératif avant toute demande de transcription. L’initialisation comprend à ce titre préférentiellement l’explicitation des en-têtes de de la base de données (préférentiellement tous et pas seulement ceux qui sont confidentiels), i.e. une description de l’en-tête en langage naturel, pour qu’il puissent être associés naturellement à des éléments de toute phrase. On peut l’initialiser également avec des exemples de requêtes. Selon un troisième aspect, l’invention concerne le procédé d’interrogation d’une base de données stockée sur des moyens de stockage de données 12 d’un premier serveur 1 et contenant des données confidentielles utilisant le procédé selon le deuxième aspect (et donc indirectement le procédé selon le premier aspect). Plus précisément on commence par le procédé de transcription de la première requête en langage naturel (étape (a) à (e)) de sorte à générer la quatrième requête, en langage informatique de manipulation de ladite base de données, correspondant à la première requête, puis dans une étape (f), ladite quatrième requête est exécutée. L’utilisateur reçoit en retour, typiquement sur le terminal 10, le résultat de l’interrogation. Serveur Selon un quatrième aspect, l’invention concerne le deuxième serveur 2 pour la mise en œuvre des procédés selon le premier, le deuxième et le troisième aspects. Ainsi, ce deuxième serveur 2 comprend comme expliqué au moins des moyens de traitement de données 21 et une mémoire 22. Il s’agit typiquement d’un serveur d’anonymisation/transcription/interrogation de base de données. Les moyens de traitement de données 21 sont configurés pour mettre en œuvre des étapes consistant à : Obtenir depuis un terminal client 10 d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données 12 d’un premier serveur 1 et contenant des données confidentielles ; identifier, au moyen d’un réseau de neurones d’anonymisation prenant en entrée ladite première requête et une liste prédéfinie d’en-têtes de la base de données relatifs à des données confidentielles, des mots à anonymiser de la première requête ; générer une deuxième requête, en langage naturel, correspondant à la première requête dans laquelle les mots identifiés sont remplacés par des pseudonymes ; avantageusement, requérir la transcription par un grand modèle de langage de la deuxième requête en une troisième requête, en ledit langage informatique de manipulation de ladite base de données ; avantageusement, générer une quatrième requête, en ledit langage informatique de manipulation de ladite base de données, correspondant à la troisième requête dans laquelle les pseudonymes sont remplacés par les mots d’origine de la première requête ; avantageusement, exécuter la quatrième requête. Selon un autre aspect, l’invention propose un système comprenant ledit deuxième serveur 2, ainsi que le premier serveur 1 et/ou un terminal client 10 connectés (via le réseau 20). Avantageusement ledit système comprend également le troisième serveur 3, connecté au deuxième serveur 2 toujours via le réseau 20. Le troisième serveur 3 comprend des moyens de traitement de données 31 configurés pour mettre en œuvre l’apprentissage dudit modèle de classification à partir de ladite base d’apprentissage du réseau de neurones d’anonymisation, et en particulier du bloc d’attention et du bloc décodeur (et de l’éventuel bloc de contextualisation) à partir de premières requêtes de référence dont les mots à anonymiser sont connus. Produit programme d’ordinateur Selon un cinquième et un sixième aspects, l’invention concerne un produit programme d’ordinateur comprenant des instructions de code pour l’exécution (sur les moyens de traitement de donnés 21 du deuxième serveur 2) d’un procédé selon le premier aspect de pseudoanonymisation d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données 12 d’un premier serveur 1 et contenant des données confidentielles ; d’un procédé selon le deuxième aspect de transcription de la première requête vers un langage informatique de manipulation de ladite base de données, en particulier SQL ; et/ou d’un procédé selon le troisième aspect d’interrogation de la base de données ; ainsi que des moyens de stockage lisibles par un équipement informatique (par exemple les moyens de stockage de données 22a du premier serveur 2a) sur lequel on trouve ce produit programme d’ordinateur. Procédé de pseudoanonymisation d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données (12) d’un premier serveur (1) et contenant des données confidentielles, le procédé étant caractérisé en ce qu’il comprend la mise en œuvre par des moyens de traitement de données (21) d’un deuxième serveur (2) d’étapes de : Obtention de ladite première requête depuis un terminal client (10) ; Identification, au moyen d’un réseau de neurones d’anonymisation prenant en entrée ladite première requête et une liste prédéfinie d’en-têtes de la base de données relatifs à des données confidentielles, de mots à anonymiser de la première requête ; Génération d’une deuxième requête, en langage naturel, correspondant à la première requête dans laquelle les mots identifiés sont remplacés par des pseudonymes. Procédé selon la revendication 1, dans lequel ledit réseau de neurones d’anonymisation comprend au moins un bloc encodeur de texte, un bloc d’attention et un bloc décodeur, l’étape (b) comprend une sous-étape (b1) d’obtention d’une représentation de la première requête et d’une représentation de la liste d’en-têtes de la base de données à anonymiser au moyen dudit bloc encodeur de texte ; une sous-étape (b3) d’obtention d’une représentation des parties relatives aux mots à anonymiser de la première requête en appliquant ledit bloc d’attention à ladite représentation de la première requête, ladite liste d’en-têtes de la base de données à anonymiser étant utilisée comme carte d’attention ; et une sous-étape (b4) d’identification desdits mots à anonymiser de la première requête en appliquant le bloc décodeur à ladite représentation des parties relatives aux mots à anonymiser de la première requête. Procédé selon la revendication 2, dans lequel lesdites représentations de la première requête et des parties relatives aux mots à anonymiser de la première requête sont des cartes de caractéristiques. Procédé selon l’une des revendications 2 à 3, dans lequel le bloc encodeur est un modèle préentrainé en particulier de type transformer. Procédé selon l’une des revendications 2 à 4, dans lequel ledit réseau de neurones d’anonymisation comprend en outre un bloc de contextualisation, l’étape (b) comprend une étape intermédiaire (b2) d’application à chacune des représentations de la première requête et de la liste d’en-têtes de la base de données à anonymiser. Procédé selon la revendication 5, dans lequel ledit bloc de contextualisation est un réseau de neurones récurrent bidirectionnel, en particulier de type BiLSTM. Procédé selon l’une des revendications 2 à 6, dans lequel le bloc décodeur comprend un premier sous-bloc et un deuxième sous-bloc en parallèle, la sous étape (b4) comprend : La prédiction, au moyen du premier sous-bloc, du nombre de mots à anonymiser de la première requête ; l’identification, au moyen du second sous-bloc, desdits mots à anonymiser de la première requête en fonction dudit nombre de mots à anonymiser prédit Procédé selon la revendication 7, dans lequel le premier sous-bloc est un réseau de neurones entièrement connecté terminé par une couche d’activation de type softmax, et le deuxième sous-bloc est un autre réseau de neurones entièrement connecté terminé par une couche d’activation de type sigmoïde. Procédé selon la revendication 8, dans lequel ledit deuxième sous-bloc est appliqué de manière itérée autant de fois que ledit nombre prédit de mots à anonymiser de la première requête. Procédé selon l’une des revendications 2 à 9, comprenant une étape (a0) d’apprentissage, par des moyens de traitement de données (21b) d’un troisième serveur (2b), du bloc d’attention et du bloc décodeur à partir de premières requêtes de références dont les mots à anonymiser sont connus. Procédé de transcription d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données (12) d’un premier serveur (1) et contenant des données confidentielles, vers un langage informatique de manipulation de ladite base de données, en particulier SQL, caractérisé en ce qu’il comprend la mise en œuvre par des moyens de traitement de données (21) d’un deuxième serveur (2) du procédé selon l’une des revendications 1 à 10 de pseudoanonymisation de ladite première requête, de sorte à générer une deuxième requête, en langage naturel, correspondant à la première requête dans laquelle les mots identifiés sont remplacés par des pseudonymes, puis d’étapes de : requête de transcription par un modèle de langage génératif de la deuxième requête en une troisième requête, en ledit langage informatique de manipulation de ladite base de données ; génération d’une quatrième requête, en ledit langage informatique de manipulation de ladite base de données, correspondant à la troisième requête dans laquelle les pseudonymes sont remplacés par les mots d’origine de la première requête. Procédé d’interrogation d’une base de données stockée sur des moyens de stockage de données (12) d’un premier serveur (1) et contenant des données confidentielles, caractérisé en ce qu’il comprend la mise en œuvre par des moyens de traitement de données (21) d’un deuxième serveur (2) du procédé selon la revendication 11 de transcription d’une première requête, en langage naturel, d’interrogation de ladite base de données, vers un langage informatique de manipulation de ladite base de données, de sorte à générer une quatrième requête, en ledit langage informatique de manipulation de ladite base de données correspondant à la première requête, puis d’une étape de : Exécution de ladite quatrième requête. Serveur (2) caractérisé en ce qu’il comprend des moyens de traitement de données (21) configurés pour : Obtenir depuis un terminal client (10) d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données (12) d’un premier serveur (1) et contenant des données confidentielles ; identifier, au moyen d’un réseau de neurones d’anonymisation prenant en entrée ladite première requête et une liste prédéfinie d’en-têtes de la base de données relatifs à des données confidentielles, des mots à anonymiser de la première requête ; générer une deuxième requête, en langage naturel, correspondant à la première requête dans laquelle les mots identifiés sont remplacés par des pseudonymes. Produit programme d’ordinateur comprenant des instructions de code pour l’exécution d’un procédé selon l’une des revendications 1 à 10 de pseudoanonymisation d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données (12) d’un premier serveur (1) et contenant des données confidentielles ; d’un procédé selon la revendication 11 de transcription de la première requête vers un langage informatique de manipulation de ladite base de données, en particulier SQL ; ou d’un procédé selon la revendication 12 d’interrogation de la base de données, lorsque ledit programme est exécuté sur un ordinateur. Moyen de stockage lisible par un équipement informatique sur lequel est enregistré un produit programme d’ordinateur comprenant des instructions de code pour l’exécution d’un procédé selon l’une des revendications 1 à 10 de pseudoanonymisation d’une première requête, en langage naturel, d’interrogation d’une base de données stockée sur des moyens de stockage de données (12) d’un premier serveur (1) et contenant des données confidentielles ; d’un procédé selon la revendication 11 de transcription de la première requête vers un langage informatique de manipulation de ladite base de données, en particulier SQL ; ou d’un procédé selon la revendication 12 d’interrogation de la base de données.