Présentation Curriculum Contact Technologie Réalisation Liens

Analyse automatique des curriculum vitae

Un tiers des entreprises françaises utilisent internet comme support pour leur recrutement (sources : Sondage IPSOS Liaisons Sociales/France Télécom réalisé auprès de 300 entreprises de plus de 100 salariés).

Si l'e-recrutement reste un phénomène relativement récent, il devrait prendre de l'ampleur dans les années à venir. Une enquête réalisée par l'APEC auprès de 3600 entreprises européennes (Allemagne, Belgique, Espagne, France, Italie, Luxembourg, Pays-Bas et Royaume-Uni) montre que le taux moyen d'utilisation du Web dans les stratégies de recrutement pour les huit pays s'élève à 49%, le record étant détenu par les Pays-Bas avec 81%.

Ce mode d'embauche génère un afflux important de candidatures. Ainsi, certaines grandes entreprises reçoivent jusqu'à 80.000 CV électroniques par an.

Les techniques de traitement automatique du langage naturel peuvent être utilisées pour faciliter l'exploitation de ces informations.

Le présent document présente un système d'analyse automatique de CV qui a été développé pour extraire, de manière automatique, les informations relatives au candidat :

  • Etat civil (nom, prénom, adresse, date de naissance et/ou age, situation familiale),
  • Numéros de téléphone,
  • Adresse(s) email,
  • Formation (date, diplôme),
  • Expérience professionnelle (date, fonction, société),
  • Langues étrangères pratiquées (langue, niveau de pratique),
  • Compétences informatiques,
  • Informations diverses telles que le permis de conduire, la date de disponibilité, la rémunération souhaitée.

Le système est organisé selon une architecture modulaire, chaque module ayant une fonction spécialisée :

  • détection de format du fichier,
  • conversion au format texte (ASCII),
  • détection de CV (permettant de sélectionner le CV si le candidat joint plusieurs documents à sa candidature),
  • prétraitement permettant de nettoyer et de normaliser le CV,
  • analyse de CV qui génère un fichier XML regroupant les informations extraites,
  • validation XML qui vérifie l'intégrité des informations extraites par rapport à une grammaire (schéma XML) spécifique,
  • ordonnancement de l'exécution des différents modules.

La figure ci-dessous présente l'enchaînement des étapes de l'analyse d'un CV.

analyseur

Les paragraphes ci-après détaillent certains des modules utilisés.

Module de détection des formats de fichier

La détection du format de fichier est basée sur la recherche de séquences « magiques » (suite d'octets spécifiques) qui permettent d'identifier les principaux formats de fichiers. Ce type de séquence n'étant pas disponible pour certains formats (Word, Excel, PowerPoint), des séquences plus complexes sont, dans ce cas, recherchées.

La détection des séquences spécifiques est effectuée à l'aide de deux machines à états finis dédiées.

automate a états finis
Automate à états finis utilisé pour la détection
des formats de fichiers

Convertisseur vers le format texte

La majorité des CV fournis par les candidats sont au format Microsoft Word. Les autres formats rencontrés sont les suivants : PDF, RTF et HTML.

Après une série de tests, il a été décidé d'utiliser Word, sous forme d'objet COM, pour la conversion des formats DOC et RTF. En effet, les différents convertisseurs testés donnaient des résultats moins bons dans le cas de mise en page complexe du document d'origine.

Une procédure spécifique a été développée pour la conversion des documents ayants des mises en page complexes (utilisation du modèle objet de Word).

Des convertisseurs spécifiques sont utilisés pour les formats PDF et HTML.

Détection des CV

Les candidatures envoyées par email peuvent comporter plusieurs documents attachés. Il est donc nécessaire de pouvoir identifier quel est le document correspondant au CV du candidat.

Ce module utilise un ensemble d'expressions rationnelles dont le nombre d'occurrence est recherché dans le document. Les dénombrements, regroupés par catégories, sont ensuite combinés dans un système à base de logique floue pour déterminer un coefficient indicateur de la présence du CV.

Les résultats suivants ont été obtenus :

  • Rappel = (réponses correctes)/(réponses attendues) = 100 %
  • Précision = (réponses correctes)/(réponses fournies) = 99,3 %
métriques
Métriques pour l'évaluation des systèmes de
filtrage d'information

Pré-traitement

Certains caractères « parasites » sont filtrés (nettoyage).

Un ensemble de transformations du texte original est effectué à l'aide d'expressions rationnelles spécifiques. Le but est de normaliser le texte pour faciliter l'étape d'analyse détaillée.

L'analyseur

L'analyseur constitue le module principal du système. Il a pour but d'identifier les différentes informations contenues dans le CV du candidat.

L'analyse est découpée en plusieurs étapes :

  • l'analyse lexicographique,
  • l'analyse syntaxique,
  • la reconnaissance des entités complexes,
  • l'étiquetage morphosyntaxique,
  • l'analyse structurelle du document,
  • l'analyse sémantique.

La figure ci-dessous présente l'enchaînement des étapes effectuées durant l'analyse d'un CV.

analyseur

L'analyse lexicographique

Au cours de cette étape, le texte est segmenté en unités élémentaires, les « lexèmes ». Les lexèmes sont des entités représentatives de la nature des éléments de base rencontrés dans le texte (mots, nombres, ponctuation, caractère de contrôle, ...).

Un exemple d'un tel découpage est donné dans la figure ci-dessous 

analyse lexicographique

La reconnaissance des entités complexes

Les lexèmes sont combinés selon des règles définies par une grammaire spécifique pour former des éléments plus complexes tels que les dates, les numéros de téléphone, etc.

Une partie de l'identification des entités nommées (noms de personnes, noms de lieux, fonctions, diplômes) est également effectuée durant cette étape.

Des dictionnaires spécifiques sont utilisés dans la reconnaissance de certaines catégories d'entités. Par exemple, la reconnaissance des noms de personnes s'appuie sur un dictionnaire de prénoms ainsi qu'un dictionnaire des civilités.

Réseaux Bayésiens

Cette étape à pour objet l'identification de certaines entités nommées (noms de sociétés, noms de personnes) sans faire appel à des dictionnaires spécialisés.

Des réseaux bayésiens ont été constitués par apprentissage supervisé (à partir d'un corpus préalablement étiqueté manuellement) et sont utilisés pour marquer des mots élémentaires constituants les entités à rechercher. Des heuristiques spécifiques sont ensuite appliquées pour extraire les noms dans leur intégralité (voir « Détection des noms de sociétés sans dictionnaire » pour plus de détail).

La figure suivante présente la structuration d'une partie d'un document après les étapes d'analyse syntaxique et de reconnaissance des entités nommées :

analyse syntaxique

L'étiquetage morphosyntaxique

Au cours de cette étape, des variables spécifiques sont associées à chaque mot : Lemme, type grammatical, genre et nombre du mot.

L'analyse structurelle du document

Au cours de cette étape, les différentes sections du document sont identifiées : Etat civil, Expérience professionnelle, Formation, etc.

L'identification fait appel à deux réseaux neuromimétiques : Le premier reconnait les points de rupture dans le document (délimitation des sections), le second identifie la nature des différentes sections ainsi délimitées.

réseau neuromimétique
Détection des sections à l'aide
d'un réseau neuromimétique

L'analyse sémantique

Dans ce cas, l'analyse porte sur le sens des mots. Cette étape permet d'identifier les informations complexes telles que l'expérience professionnelle et le cursus du candidat.

Cette analyse s'appuie sur les informations déterminées au cours des étapes précédentes.

Les informations extraites du CV sont ensuite structurées sous forme d'un fichier XML.

Un exemple de document XML issue de l'analyse de mon CV est présenté ci-dessous :

<?xml version="1.0" encoding="ISO-8859-1"?>
<resume xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="D:\NewResume.xsd">
 <header>
   <name>
     <firstname gender="M">Patrice</firstname>
     <lastname>MELLOT</lastname>
   </name>
   <address>
     <street>14, résidence Le Clos de Verrières</street>
     <zip>91370</zip>
     <city>Verrières le Buisson</city>
   </address>
   <contact>
     <phones>
       <phone type="Tél. Répondeur">01.60.13.15.92</phone>
     </phones>
     <emails>
       <email></email>
     </emails>
   </contact>
   <personaldata>
     <age type="age">45</age>
     <situation>Marié</situation>
     <nationality/>
   </personaldata>
 </header>
 <academics>
   <degree level="Bac+8" diploma="Doctorat" title="de Microbiologie" obtention="1">
     <date literal="1987">
       <day>0</day>
       <month>0</month>
       <year>1987</year>
     </date>
   </degree>
   <degree level="Bac+5" diploma="Ecole Polytechnique" title=": Assistant de travaux pratiques de Biologie" obtention="1">
     <date literal="1988">
       <day>0</day>
       <month>0</month>
       <year>1988</year>
     </date>
   </degree>
   <degree level="Bac+4" diploma="Maîtrise" title="de Biochimie" obtention="1">
     <date literal="1982">
       <day>0</day>
       <month>0</month>
       <year>1982</year>
     </date>
   </degree>
   <degree level="Bac" diploma="Baccalauréat C" title="empty" obtention="1">
     <date literal="1978">
       <day>0</day>
       <month>0</month>
       <year>1978</year>
     </date>
   </degree>
 </academics>
 <experiences>
   <experience stage="false">
     <period literal="Depuis 1994">
       <from literal="1994">
         <day>0</day>
         <month>0</month>
         <year>1994</year>
       </from>
       <to literal="now">
         <day>0</day>
         <month>0</month>
         <year>now</year>
       </to>
     </period>
     <function>Consultant</function>
     <company>PATRICE MELLOT</company>
   </experience>
   <experience stage="false">
     <period literal="1988 - 1993">
       <from literal="1988">
         <day>0</day>
         <month>0</month>
         <year>1988</year>
       </from>
       <to literal="1993">
         <day>0</day>
         <month>0</month>
         <year>1993</year>
       </to>
     </period>
     <function>Gérant</function>
     <company>DIGITHEME SARL</company>
   </experience>
 </experiences>
 <languages>
   <language level="Lu, parlé et écrit">anglais</language>
 </languages>
 <skills>
   <skill type="lang">HTML</skill>
   <skill type="lang">JAVA</skill>
   <skill type="lang">XML</skill>
   <skill type="lang">APL</skill>
   <skill type="lang">C</skill>
   <skill type="lang">C++</skill>
   <skill type="lang">COLDFUSION</skill>
   <skill type="lang">JAVASCRIPT</skill>
   <skill type="lang">JSP</skill>
   <skill type="lang">NQL</skill>
   <skill type="lang">PYTHON</skill>
   <skill type="lang">SQL</skill>
   <skill type="lang">Visual Basic</skill>
   <skill type="lang">XSLT</skill>
   <skill type="graph">Photoshop</skill>
   <skill type="graph">Flash</skill>
   <skill type="method">Uml</skill>
   <skill type="os">DOS</skill>
   <skill type="os">WINDOWS 95</skill>
   <skill type="os">WINDOWS 98</skill>
   <skill type="os">WINDOWS NT</skill>
   <skill type="os">WINDOWS 2000</skill>
   <skill type="pao">Framemaker</skill>
   <skill type="server">Jrun</skill>
   <skill type="server">Weblogic</skill>
   <skill type="sgbd">ORACLE</skill>
   <skill type="sgbd">ACCESS</skill>
   <skill type="agl">AMC/Designor</skill>
 </skills>
 <misc/>
</resume>

Performances du système

Les performances du système ont été déterminées à partir d'un jeu de CV non utilisés durant le développement.

Pour la partie « Etat Civil » du candidat (civilité, nom, prénom, rue, code postal ville, téléphone, email, age et/ou date de naissance), le rappel moyen est de 93,66 %, la précision moyenne étant de 99,45 % (P & R moyen = 96,44 %).

Pour la partie historique de carrière (formation et expérience professionnelle) les performances sont en cours d'étude, les résultats seront publiés ultérieurement.