FR 2966949 A1 20120504 FR 1059023 A 20101102 PROCEDE POUR L'AUTOMATISATION DE LA CONSTITUTION D'UNE BASE DE DONNEES STRUCTUREE DE PROFESSIONNELS Domaine de l'invention [0001] La présente invention concerne la création automatique et l'exploitation de bases de données, plus particulièrement pour la constitution et l'exploitation de bases de données de candidatures et de professionnels en vue de l'identification et la sélection de compétences. Etat de la technique [0002] On connaît dans l'état de la technique des solutions permettant d'interroger de manière automatique (« scanner » en langue anglaise) le réseau internet pour extraire des pages explorées les informations susceptibles de compléter une base de données. [0003] En particulier, le brevet EP2143018 décrit un procédé pour créer une base de donnée de curriculum vitae comprenant une étape d'extraction sémantique des informations dans un document et extraction d'une pluralité de composants du document pour renseigner une matrice de données définissant une pluralité d'entrées normalisées. Lors de cette étape, chaque composant extrait est associé à une entrée normalisée de la matrice de données. [0004] Le brevet européen EP2043011 de la société 123people Internet Service GmbH décrit un système pour l'agrégation et l'enrichissement automatisés des résultats de recherche générés en réponse aux questions/aux requêtes de recherche à de ressources de réseau multiples, telles que des moteurs de recherche. Dans une mode de réalisation, un utilisateur prépare 2966949 - 2 une requête de recherche transmise au serveur. La requête de recherche, qui peut comprendre un ou plusieurs termes de recherche. Le serveur peut modifier la requête de recherche pour augmenter la probabilité de résultats pertinents. 5 [0005] On connaît également le brevet américain US6381592 divulguant une méthode pour localiser automatiquement les pages de sites Internet qui contiennent des mots-clés définis par une combinaison booléenne. Ce brevet de l'art antérieur propose une étape d'extraction de toutes les adresses 10 de courrier électronique de ces pages ainsi que les pages hyperliés à autant de niveaux reliant choisie par l'opérateur. Ces données extraites sont exploitées ensuite pour l'envoi d'une description de la possibilité d'emploi sous la forme d'un courrier électronique à chacune des adresses extraites. 15 [0006] On connaît également la demande de brevet japonais JP2005092889 décrivant un procédé pour l'identification des zones cohérentes dans une page web. Une première étape consiste à analyser le code HTML. On procède ensuite au filtrage des données répétitives de la page web et on réalise un mappage pour 20 identifier une arborescence hiérarchique du document et être adaptés à l'arborescence structurelle de bloc d'information par analyse des similitudes sémantiques. [0007] [0008] Inconvénients des solutions de l'art antérieur 25 [0009] [00010] Les différentes solutions connues présentent l'inconvénient d'être mal adaptées au volume considérable de données à traiter : le WEB contient environ 400 milliards de pages et potentiellement 3 milliards de personnes employables. 30 Le traitement automatique de volumes aussi importants implique, lors de la mise en oeuvre des solutions connues, des capacités de traitement considérables. De plus, les solutions de l'art 2966949 - 3 antérieur conduisent à des bases contenant un nombre significatif de données non pertinentes, ce qui les rend difficilement exploitables. Solution apportée par l'invention [00011] Afin de remédier à ces inconvénients, l'invention concerne selon son acception la plus générale un procédé pour 10 l'automatisation de la constitution d'une base de données structurée de professionnels caractérisé en ce qu'il comporte : [00012] des étapes de collecte de données par l'exploration de sources d'informations non structurées, notamment de pages HTML par balayage automatique du web, par qualification des pages 15 d'informations importées de chacune des sources par un classifieur fournissant un indicateur de probabilité de l'appartenance des dites informations importées à la classe d'intérêt, [00013] des étapes de filtrage pour écarter les pages dont 20 l'indicateur de probabilité est inférieur à une valeur seuil [00014] une étape de traitement de chacune des pages non écartées pour l'extraction des informations non structurées, l'analyse sémantique, et l'importation desdites informations dans les rubriques correspondantes de ladite base de données 25 structurée [00015] une étape de traitement desdites pages et informations pour calculer les informations non directement accessibles. [00016] Avantageusement, le procédé selon l'invention comporte une étape préalable de prétraitement des pages d'informations 30 provenant d'une même source, consistant à identifier et supprimer une partie au moins des informations communes à plusieurs pages d'une même source. 5 - 4 Description d'un mode de réalisation détaillé [00017] L'invention sera mieux comprise à la lecture de la description qui suit, se référant aux dessins annexés. La figure annexée représente une vue schématique des traitements techniques mis en oeuvre par l'invention. [00018] Un serveur informatique connecté au réseau internet comporte un robot pour l'exploration d'une multitude de sites web sélectionnés par exemple à partir de mots clés. [00019] Les fichiers correspondant aux pages explorées sont importées sur le serveur et font l'objet d'un traitement consistant à : - analyser le code de la page - identifier des données récurrentes, correspondant par exemple à des en-têtes, des blocs d'informations générales. [00020] Les données ayant fait l'objet d'un pré-traitement sont ensuite analysées par un réseau bayésien pour calculer un indicateur de probabilité d'appartenance à la classe de curriculum vitae. Les données dont l'indicateur calculé est inférieur à une valeur seuil sont supprimées, et les autres fichiers font l'objet ensuite d'un traitement additionnel d'analyse sémantique consistant notamment à normaliser les informations par : Traitement grammatical pour l'harmonisation des termes formulés au pluriel ou au singulier, et au masculin ou au féminin - Traitement par table de synonymes et enregistrement sous la racine des synonymes ou d'un identifiant - Construction de matrice par analyse statistique, pour déterminer les mots les plus proches du point de vue - 5 sémantique - Appariement en fonction de cooccurrence entre des termes (par exemple BNP et banque). [00021] On procède ensuite à un filtrage dynamique et à une indexation automatique et on génère les appariements LSA. [00022] On enrichit l'index de chaque CV avec des termes associés issus de l'analyse de CV voisins historiques (par des synonymes ou par des termes plus généraux. Ex. BNP ou SG associés dans un même groupe, DG ou directeur général ; synonymes par analyse contextuelle, par exemple : anglais courant = anglais bilingue = anglais maternel). [00023] Les différents traitements visent à enrichir la qualité de l'information tout en réduisant le nombre de termes afin de réduire le coût du traitement. [00024] Ces différents traitements aboutissent à la reconstruction dynamique du CV, avec des données extraites et des données recalculées par analyse sémantique ou par des post-traitement pour enregistrer par exemple le nombre d'années d'expériences. Modes de mise en oeuvre particulier [00025] L'exploration du web peut être réalisée par des robots configurés pour un site donné, par une détection de la page de départ, une navigation à l'intérieur du site pour trouver le CV et une étape d'extraction des informations pour construire un CV formaté. [00026] L'exploration du web peut également être réalisée par un moteur de recherche tel que celui proposé par le projet NUTCH (nom commercial) réalisant le parcours de site à partir d'une url et parcourant toutes les pages. [00027] Selon une variante préférée, la base comporte un module 2966949 - 6 d'inhibition d'une personne et de blocage de la réinscription, et d'envoi de messages automatiques de demande si le refus est maintenu, avec une périodicité paramétrable. 5 [00028] Selon une autre variante particulière, le procédé comporte une étape de filtrage dynamique. Le but est de pouvoir indiquer pour un document donné une candidature donnée si elle est pertinente ou non pour une requête donnée un descriptif de poste donné. A cet effet, un classifieur (par exemple un filtre 10 bayésien) calcule le score d'un document (candidature) sur la base de documents précédemment classés. [00029] Ce filtre reçoit les candidatures courriel (« email » en anglais) à destination du recruteur et lui ajoutant un en-tête spécifiant si la candidature semble correspondre à l'offre pour 15 lequel le candidat postule. [00030] L'offre est identifiée grâce à son numéro d'offre extrait du titre ou du corps du courriel (« email » en anglais). [00031] Lorsqu'une nouvelle offre est rencontrée, un courriel (« email » en anglais) demande au recruteur de renseigner par 20 retour de courriel (« email » en anglais) des mots-clés (requête) définissant au mieux cette offre. [00032] [00033] La première approche de classification est basée sur le score d'une recherche dans un document texte de mots-clefs 25 extraits manuellement d'un descriptif de poste (« job description » en anglais) ; elle revient donc à calculer la similarité sémantique entre deux documents textes. De nombreux algorithmes sont disponibles pour répondre à cette problématique, dont en particulier le Vector Space Model utilisé 30 par le moteur de recherche Lucene. Cette approche permet de traiter les cas simples tels que l'absence ou la présence de tous les mots clefs de la requête mais nécessite un bon choix de 2966949 - 7 mots clefs de la part de l'utilisateur. Cette première solution de filtrage du contenu d'un CV fonctionne par rapport à un ensemble de mots clefs (la requête fournie par l'utilisateur). Cette approche nécessite que l'utilisateur ait une bonne 5 connaissance de son domaine de recherche et de l'outil utilisé afin de choisir un petit ensemble de mots clefs représentatif de son besoin. [00034] Une deuxième approche se fonde sur la technologie la plus employée dans les filtres antispams pour le courriel : la 10 classification naïve bayésienne. Elle se base sur le théorème de Bayes et suppose notamment que tous les mots sont indépendant (il n'y a pas de notion de contexte ou d'ordre). De nombreuses variantes pour cette classification ont été décrites et plusieurs implémentations sont disponibles dans la 15 suite logicielle WEKA (Waikato Environment for Knowledge Analysis, par l'université de Waikato). [00035] Le classificateur convertit automatiquement les requêtes en plusieurs catégories, et entraine un filtre par catégorie. I1 est donc important de garder le nombre de mots clefs 20 relativement faible. [00036] Afin de pouvoir traiter les données, WEKA doit les convertir dans sa représentation propre. L'approche consiste à : Trier manuellement les CV au format texte 25 (extraits manuels de fichier eml avec kmhtconvert, puis convertir depuis les PDF avec pditotext et depuis les .doc avec abiword) dans différents dossiers, correspondant chacun à une catégorie (ou requête). Durant la phase de mesure initiale, les documents ont de plus été découpés en jetons 30 grammaticaux (ou « tokenisés » selon un néologisme équivalent) et ramenés à leur racine grammaticale (ou « léxèmisés » selon un néologisme équivalent) avec le SmartAnalyzer de Lucene Beetween. Cette étape est indépendante de WEKA. - Convertir chaque document texte, sur lequel on applique des traitements similaires à ceux utilisés par le moteur de recherche Beetween et décrit précédemment: traitement grammatical, retrait des mots vides de sens. Charger l'ensemble de ces fichiers au format ARFF avec la classe TextDirectoryLoader de WEKA. On obtient alors une chaine de caractères représentant le document associé à sa classe (la catégorie). - Le document est traduit au format ARFF afin d'être utilisable par WEKA. On lui associe une classe (ensemble de mots clés définissant l'offre) fournie par le recruteur. On considérera par la suite que tout document appartenant à une classe est légitime pour cette classe et que tous document appartenant à une autre classe est un "spams". Cette étape peut se faire dans les applications Explorer ou Knowledge Flow proposées par WEKA. - Le document est ensuite vectorisé en des attributs numériques utilisables par WEKA. Vectoriser l'ensemble des chaines en des attributs numériques utilisables par WEKA avec la classe StringToWordVector. La chaine est découpée en mot avec des moyens de découpage en jetons (ou « tokenizer » selon un néologisme équivalent) de WEKA, et seul les n plus intéressants - autrement dit, ceux qui apportent le plus d'informations pour la classification - sont transformés en attributs. Une valeur numérique leur est donnée en fonction de leur présence dans le document. - On peut à ce moment appliquer les transformations TF (term frequency), IDF (inverse document frequency), et normaliser les valeurs par rapport à l'ensemble du jeu de 2966949 - 9 données (« training set » en langue anglaise). Cette étape peut se faire dans les applications Explorer ou Knowledge Flow. Lancer les mesures avec le classifieur sur le jeu 5 de données (validation croisée 10-fois ou « ten-fold cross validation » en anglais ou Echantillonnage à 66% ou « 66% split » en anglais), les résultats sont présentés au sein du logiciel. Cette étape peut se faire dans les applications Explorer ou 10 Experimenter. [00037] Le filtre bayésien peut être soit entrainé (marquage d'un document comme pertinent ou non pour une requête donnée), soit estimer la probabilité d'un document d'appartenir à une certaine classe (le classifier). 15 [00038] L'ensemble des documents est traité de cette sorte, ce qui permet de constituer une base de connaissance à partir du filtre entraîné. [00039] Le filtre implémenté reçoit un document (à marquer ou à 20 classifier) et une requête qu'il découpe en différentes catégories, et pour chaque catégorie il va entrainer ou utiliser un filtre possédant une classe pertinente et une classe non-pertinente. [00040] L'entraînement du classifieur est réalisé manuellement 25 et au fur et à mesure par le recruteur qui indique si un document est pertinent ou non pour la requête donnée, afin de corriger ou d'encourager le filtre. [00041] Afin de permettre de catégoriser des offres qui n'ont pas encore été rencontrées (par exemple, un développeur java 30 j2ee) mais pour laquelle on a déjà rencontré une offre similaire (par exemple, ingénieur java j2ee), un découpage des mots clefs en n-grams est mis en place. 2966949 - 10 - [00042] Les n mots clefs sont ensuite regroupés en catégorie par unigram, bigram, trigram et un n-gram. [00043] Ce principe d'éclatement d'une requête en n-grams se base sur le fait que deux requêtes "acheteur hardware" et 5 "acheteur industriel" peuvent être découpées en plusieurs catégories "acheteur", "hardware", "industriel", "acheteur hardware" et "acheteur industriel". La catégorie "acheteur" étant commune à ces deux requêtes, il peut être utile de combiner les résultats du filtrage pour 10 l'un et l'autre, afin de pouvoir classer un "acheteur industriel" sur la base d'un acheteur, même sans en avoir entrainer le filtre sur la catégorie "acheteur industriel" avant. [00044] On découpe donc chaque requêtes en N mots clefs que 15 l'on va exploser en unigrams, bigrams, trigrams, ... (K-1)-grams, K-grams et un N-gram (avec K REVENDICATIONS1 - Procédé pour l'automatisation de la constitution d'une base de données structurée de professionnels caractérisé en 5 ce qu'il comporte : - des étapes de collecte de données par l'exploration de sources d'informations non structurées, notamment de pages HTML par balayage automatique du web, par qualification des pages d'informations importées de chacune des sources par un classifieur fournissant un indicateur de probabilité de l'appartenance des dites informations importées à la classe d'intérêt, des étapes de filtrage pour écarter les pages dont l'indicateur de probabilité est inférieur à une valeur seuil - une étape de traitement de chacune des pages non écartées pour l'extraction des informations non structurées, l'analyse sémantique, et l'importation desdites informations dans les rubriques correspondantes de ladite base de données structurée - une étape de traitement desdites pages et informations pour calculer les informations non directement accessibles. 2 - Procédé pour l'automatisation de la constitution d'une base de données structurée de professionnels selon la revendication précédente caractérisé en ce qu'il comporte une 30 étape préalable de prétraitement des pages d'informations provenant d'une même source, consistant à identifier et supprimer une partie au moins des informations communes à plusieurs pages 10 15 20 25 - 12 - d'une même source. 3 - Procédé pour l'automatisation de la constitution d'une base de données structurée de professionnels selon l'une des revendications précédentes caractérisé en ce qu'il comporte une étape préalable de prétraitement pour la normalisation des données extraites de la page explorée. 4 - Procédé pour l'automatisation de la constitution d'une base de données structurée de professionnels selon l'une des revendications précédentes caractérisé en ce qu'il comporte un fonction d'inhibition du nom d'une personne. 5 - Procédé pour l'automatisation de la constitution d'une base de données structurée de professionnels selon la revendication précédente caractérisé en ce que la fonction d'inhibition est réalisée par un module d'inhibition d'une personne et de blocage de la réinscription, et d'envoi de messages automatiques de demande si le refus est maintenu, avec une périodicité paramétrable 6 - Procédé pour l'automatisation de la constitution d'une base de données structurée de professionnels selon l'une des revendications précédentes caractérisé en ce que les étapes de collectes de données sont réalisées par des robots configurés pour un site donné, par une détection de la page de départ, une navigation à l'intérieur du site pour trouver le CV et une étape d'extraction des informations pour construire un CV formaté. 7 - Procédé pour l'automatisation de la constitution d'une base de données structurée de professionnels selon l'une des revendications précédentes caractérisé en ce qu'il comporte - 13 - une étape de filtrage dynamique. 8 Procédé pour l'automatisation de la constitution d'une base de données structurée de professionnels selon la revendication précédente caractérisé en ce que le filtrage dynamique comporte un mécanisme d'adaptation pour pouvoir filtrer des offres inconnues en se basant sur des offres connues similaires.