Apparier des CV à des offres d'emploi

|

|

Le besoin
La solution
Ils peuvent vous aider

Le besoin

Comment évaluer automatiquement si un CV est pertinent pour un poste ?

Une fiche de poste décrit les prérequis nécessaires chez un candidat et les attentes de l'employeur pour la bonne réalisation d'un poste. Une annonce de recrutement reprend les éléments de la fiche de poste et vise à convaincre les candidats les plus pertinents de candidater à un poste. Un candidat qui postule est donc supposé fournir un CV qui contient tout ou au moins une partie des prérequis contenus dans la fiche de poste.

Si ces prérequis diffèrent selon le poste proposé, ils sont globalement composés des éléments suivants :

  • compétences : outils ou techniques que le candidat sait manipuler (par exemple : "C++", "pytorch", "vente"),

  • formations : formations nécessaires pour ce poste (par exemple : "licence de linguistique", "master en mathématiques appliquées"),

  • expériences : postes occupés par le candidat dans sa vie professionnelle (par exemple : "data scientist", "web developper") et missions correspondantes (par exemple : "refonte du site web", "management de l'équipe de vente"),

  • niveau d'expérience : ancienneté du candidat dans la profession (par exemple : "junior", "confirmé"). Cette information se déduit généralement de la durée de l'expérience professionnelle.

Pour évaluer automatiquement si un CV est pertinent pour un poste, il faut donc pouvoir automatiquement :

  1. Extraire les prérequis de la fiche de poste.

  2. Extraire les éléments pertinents du CV.

  3. Calculer un score de correspondance entre les prérequis du poste et les éléments du CV, c'est le "scoring" des CVs.

Ces trois étapes impliquent toutes deux la langue naturelle et nécessitent donc des outils de Traitement Automatique de la Langue. Comment l'intelligence artificielle peut-elle m'aider à diminuer le temps de traitement et augmenter la fiabilité ?

La solution

Le TAL pour évaluer la pertinence d'un CV pour un poste

Extraire les informations d'une fiche de poste ou d'un CV

Analyse automatique de de la fiche de poste

Pour trouver le candidat pertinent pour la description suivante, "Diplômé·e d'une école d'Ingénieur de premier rang (Centrale, Mines,…) ou équivalent - première expérience en langage objet (idéalement Java) en tant qu'ingénieur·e de développement idéalement dans le domaine de la finance.", la première étape consiste à détecter automatiquement les prérequis tels que "ingénieur", "Mines", "Centrale", "développement", "Java" et "finance".

La reconnaissance d’entités nommées (REN, ou Named Entity Recognition -NER-) vise à détecter automatiquement des informations comme noms de personnes ou de lieux, relations entre entreprises, dates, montants, etc. dans un texte. Au-delà des entités nommées, l'extraction d'information fournit des termes pertinents pour le domaine applicatif (voir la page de FAQ sur l'extraction d'information). Cette étape pourra extraire des termes comme Mines, Centrale, Java, ingénieur, développement, finance.

Ces éléments sont ensuite classés par rapport à une ontologie métier qui va permettre de classifier Java comme compétence, ingénieur, Mines ou Centrale comme des formations. Cette étape d'interprétation métier est cruciale par rapport à un extracteur d'information générique qui aurait plutôt tendance à extraire les éléments dans de grandes catégories "standard" telles que "nom", "organisation" ou "lieu". Dans notre cas, cet extracteur générique aurait certainement tendance à qualifier Mines, Centrale ou Java comme des lieux.

Pour réaliser cette ontologie métier, il est indispensable de disposer soit de données annotées (pour une classification automatique) soit d'une taxonomie explicitement construite.

On peut imaginer qu'à la fin du traitement, on obtienne une représentation telle que :

  • qualification : ingénieur,
    • optionnel : Mines, Centrale
  • expérience : développeur,
    • optionnel : finance
  • compétence : Java

Analyse automatique du CV

L'analyse automatique du CV va procéder au même type de traitement que l'analyse d'offres, mais avec deux éléments de complexité supplémentaires :

  • d'une part, la gestion des formats de documents : là où les offres sont généralement accessibles en texte brut, rendant leur analyse immédiate, les CVs sont présentés dans des formats d'impression (PDF, documents Office, images scannées, etc.) ce qui nécessite une étape de conversion préalable. Cette étape peut être source de perte d'information lors d'un traitement automatique, car l'objectif de ces formats est la présentation, pas la cohérence du contenu.
  • d'autre part, un CV présente beaucoup plus d'informations qu'une fiche de poste, incluant des expériences lointaines, des hobbies, etc. qui sont utiles à un recruteur pour comprendre le parcours d'un candidat mais peu utiles pour juger de sa qualification à un poste donné.

Pour la simplicité de l'exemple, tenons-nous en au titre d'un CV qui serait "ingénieur junior Calypso".

On va donc extraire de ce profil la représentation suivante :

  • formation : ingénieur
  • niveau d'expérience : junior
  • compétence : Calypso

Calculer la correspondance entre un poste et un CV

Lorsqu'un profil structuré comme ci-dessus a été extrait du CV, il convient de calculer un score de correspondance entre le CV et l'offre afin de hiérarchiser l'ensemble des CVs reçus. Cela s'effectue par comparaison de ces structures semi-formelles. Il reviendra bien sûr au recruteur de décider quels CVs retenir suite à cette hiérarchisation.

La méthode la plus simple consisterait à donner un score de 100% aux candidats ayant exactement tous les éléments requis par l'offre, et 0% aux autres. Par exemple, si une offre requiert comme formations "ingénieur", "mines", "centrale" et comme compétence "Java", "finance" et si les termes "ingénieur", "mines", et "java" et "finance", sont dans le CV du candidat, alors le candidat est retenu pour l'offre. Cette approche laisse cependant de côté les CVs qui seraient compatibles mais dont les termes ne seraient pas exactement les mêmes que ceux exprimés dans l'offre, comme celui que nous avons vu ci-dessus. En effet, Calypso est un logiciel Java spécialisé en trading. Notre candidat est donc très bien placé alors que formellement, il ne "coche" qu'une case dans la correspondance.

Il convient donc de définir un score qui prenne en compte la dimension sémantique des facettes retenues, à savoir leur signification, afin de considérer que "Calypso" est un logiciel et qu'il est écrit en Java. Des méthodes symboliques (basées sur des règles logiques organisées en réseaux sémantiques) ou vectorielles (basées sur des modèles statistiques) peuvent servir à représenter cette sémantique (voir Analyse sémantique).

Représentation symbolique

Les ontologies et taxinomies sont deux méthodes de représentation des connaissances qui permettent de représenter les relations entre des objets. La taxinomie permet de représenter des relations "parent-enfant" (par exemple : "Calypso" est une sorte de "logiciel" ), tandis que l'ontologie permet une description plus complexe des relations (par exemple : "Calypso" a pour domaine "finance" et "Calypso" est lié à "Java"). Ces deux méthodes permettent donc de représenter les liens sémantiques entre objets par un ensemble de règles logiques qui les lient.

De nombreuses classifications de ce type existent en accès libre, dont certaines spécifiques aux ressources humaines (comme par exemple la taxinomie ESCO). Elles peuvent servir à initialiser une représentation métier qui pourra être enrichie par des informations métier, soit issues de corpus de CV et/ou d'offres, soit ajoutées explicitement.
Dans notre cas, elles peuvent servir à représenter formellement les prérequis de la fiche de poste, et à représenter et enrichir les connaissances extraites du CV. Le score de proximité entre le CV et l'offre d'emploi peut alors être calculé directement sur ces représentations. En effet, les taxinomies et ontologies sont respectivement des arbres et graphes, des structures mathématiques que l'on peut comparer.

Représentation vectorielle

Formellement, on peut représenter la mise en correspondance d'une offre avec des CVs avec de la recherche documentaire via un moteur de recherche : la fiche de poste est la requête, le corpus est l'ensemble des CVs reçus, charge à la machine de nous produire la meilleure réponse à notre question. La différence principale réside dans le fait que, le domaine étant ciblé, il est possible d'une part de qualifier les critères de recherche (compétence, expérience, etc.) et d'autre part d'utiliser un référentiel métier pour exploiter la sémantique des requêtes.

Les modèles de langue permettent de représenter mots ou groupes de mots dans un espace vectoriel où la proximité des vecteurs représente leur proximité sémantique. Ils permettent de transformer les objets linguistiques en objets mathématiques, ce qui permet alors de calculer que "jardinier" est plus proche de "botaniste" que de "mécanicien".

Pour calculer un score de proximité à l'aide de ces modèles de langue, il est donc possible de procéder de la sorte :

  1. Obtenir grâce au modèle de langue la représentation vectorielle de chaque information extraite.

  1. Combiner (par exemple en calculant leur somme) les vecteurs du CV et ceux du poste.

  2. Calculer la distance entre le vecteur du CV et celui du poste.

La distance obtenue à la dernière étape représente un score de proximité sémantique entre les entités nommées qui constituent le poste et celles qui constituent le CV.

Points d'attention

Certaines entreprises (ou sites d'emploi) choisissent de structurer l'information au préalable en demandant les prérequis dans un formulaire à choix restreints, puis de se servir de cette information pour ensuite générer l'offre. Ceci permet de s'affranchir de l'étape d'extraction d'information dans les offres d'emploi. Cependant, cela nécessite d'intégrer un système de génération de texte (voir Comment fonctionne la génération de texte ?) pour rédiger le poste en langue naturelle à partir des éléments obtenus dans le formulaire. Cette autre méthode intéressante peut permettre de s'affranchir de l'étape d'une partie de l'extraction de l'information des postes (sachant qu'une partie des données, comme le descriptif de la mission n'est pas formalisable en liste à choix fini et restera donc en texte libre).

Par Laurine Huber, doctorante en IA/NLP