Conception et réalisation d’une application NLP pour le traitement massif de grands volumes de CVs

Conception et réalisation d’une application NLP pour le traitement massif de grands volumes de CVs

Natural Language Processing Made Easy – using SpaCy (in Python)[3]

  Date de parution : 4 avril 2017  Domaine : Textmining/Fouille de textes/NLP  Sous Domaine : Traitement des CVs  Quelles tâches de traitement de CV sont gérées ?  Dépouillement  Présélection  Pour la tâche de dépouillement  Tokenization, part of speech tagging et l’entity detection avec la librairie NLP Spacy – Avantages : Extraction automatique des entités nommées – Inconvénients : Difficulté à détecter les nom et prénoms  Pour la tâche de présélection  Word to vectors integration avec Spacy en utilisant l’algorithme Glove – Avantages : Meilleure comparaison entre deux documents – Inconvénients : Limites sur le contexte des mots  Classification des CV avec Spacy et sklearn Le parsing et l’extraction d’entités sont possibles grâce au tokenization, au part of speech tagging et à l’entity detection. Ces outils de Spacy vont nous permettre d’extraire les nom et prénom, l’école, l’université et les organisations dans lesquelles le candidat a eu à travailler. Les limites de ces fonctionnalités résident dans les ambigu¨ıtés d’un mot qui peut avoir plusieurs interprétations. De plus, les mots inconnus par l’application sont impossibles à interpréter sauf, traitement manuel en plus, des noms et prénoms des candidats qui sont difficilement identifiables. Les tâches de comparaison et de scoring des CVs sont faisables avec le Word to Vectors Integration qui utilise l’algorithme GloVe. Ceci est utile pour mesurer les compétences d’un candidat face à une technologie donnée. Ou encore pour comparer 2 documents tels que 2 CVs différents ou un CV et une offre d’emploi. L’inconvénient de cette fonctionnalité est qu’elle présente des limites à identifier le contexte dans lequel un mot est utilisé dans une phrase, ce qui a comme conséquence la perte d’informations lors de l’analyse textuelle de notre corpus. La tâche de classification de texte avec Spacy et Scikit-Learn est utile dans le cas de l’apprentissage supervisé que l’on peut utiliser pour classer les CVs compatibles ou non à une offre d’emploi. Les limites de cette solution sont liées à la qualité des CVs labéllisés, pour que le modèle puisse produire de bons résultats, il est nécessaire d’avoir un bon jeu de données d’apprentissage. La dernière étape de l’article décrit une comparaison avec les autres librairies NLP telles que NLTK, et Core NLP. La librairie Spacy présente des avantages par rapport aux autres librairies sur la vitesse des tâches de Tokenizer, Tagging et Parsing. Enfin, Spacy affiche un bon score de précision en ce qui concerne l’extraction d’entités.

Article 2: Custom Name Entity Recognization Using Spacy (Resume Entity Extraction)

Date de parution : 4 mai 2020  Domaine : Textmining/Fouille de textes/NLP  Sous Domaine : Traitement des CVs  Quelles tâches de traitement de CV sont gérées ?  Dépouillement  Pour la tâche de dépouillement  Parsing et extraction manuelle d’entités sur chaque CV avec l’outil Dataturks – Avantages : Outil web open source avec possibilité de collaboration – Inconvénients : Des bugs notés lors des annotations des CVs  Construction d’un modèle basé sur le Deep Learning pour l’extraction automatique de skills à partir d’un CV avec Spacy – Avantages : Extraction automatique des entités nommées – Inconvénients : Nécessite un jeu de données important. Testé uniquement sur un dataset en anglais Cet article explique la démarche à suivre pour manuellement annoter un CV grâce à l’outil Dataturks qui est une application web open source d’annotation de données de type image et textuelle. L’application permet d’importer un lot de CVs, d’annoter manuellement les entités (Skills, expériences, technologies, éducation, organisations, lieu, nom et prénom), de les enregistrer et les exporter dans un fichier au format JSON. L’outil NLP Spacy est ensuite utilisé pour entraˆıner un modèle de Deep Learning à partir des entités exportées par Dataturks. L’idée est de construire un modèle entraˆıné à partir de CVs annotés ou labellisés manuellement afin de pouvoir extraire automatiquement des Skills à partir d’un CV. L’inconvénient de cette solution réside dans le fait qu’il faut annoter manuellement beaucoup de CVs pour avoir un modèle efficace sur des milliers de documents.L’autre inconvénient est que l’article se base uniquement sur des données en anglais, il serait plus intéressant de pouvoir tester le modèle sur des documents en fran¸cais et d’en évaluer ses performances.

Article 3 : Resume Screening with Python

Date de parution : 6 décembre 2020  Domaine : Textmining/Fouille de textes/NLP  Sous Domaine : Traitement des CVs  Quelles tâches de traitement de CV sont gérées ?  Classification  Pour la tâche de classification  Prétraitement des CVs avec le framework Sklearn – Avantages : Facilite le travail de classification  Classification automatique des CVs en utilisant KNN – Inconvénients : Nombre de classes élevées. Risque de sur-apprentissage du modèle à cause des biais présents dans chaque CV L’article se base sur un jeu de données comportant 963 CVs labellisés. Il y a au total 25 catégories auxquelles sont répartis les différents CVs. Pour pouvoir faire la classification supervisée il est nécessaire de vectoriser les mots de chaque CV. Avant cette étape, il est indispensable de nettoyer les CVs en supprimant les URLs, hashtags, mentions, caractères spéciaux et ponctuations. Ensuite, il faut encoder les variables catégoriques avec la librairie Sklearn. La méthode du TF-idf est utilisée pour vectoriser le jeu de données avec suppression des stop words et réduction de la dimensionnalité des termes du corpus de 1500 au maximum. L’algorithme KNN (KNeighborsClassifier) a été utilisé pour faire la classification des CVs avec un découpage du jeu de données de 80 % pour l’apprentissage et 20 % pour les tests. Après test de classification, la précision obtenue est de 90 % sur la phase d’apprentissage et de test du modèle. L’un des inconvénients de cette méthode est qu’il est nécessaire de labéliser manuellement un nombre de CVs important pour pouvoir faire la classification. L’autre problème est qu’il y a un nombre de classes élevé ce qui n’est pas nécessaire dans le cas o`u l’on cherche à recruter un nombre limité de candidats. De plus, la classe à prédire est présente sur chaque CV que l’on cherche à classer, ce qui constitue un biais pour le modèle qui risque de faire du sur-apprentissage sur le jeu d’apprentissage. Ceci aura pour conséquence un modèle incapable de se généraliser c’est-à-dire, qui fera de mauvaises classifications pour des CVs n’ayant pas de termes qui match les catégories ou classes à prédire.

Article 4: ResumeNet

A Learning-based Framework for Automatic Resume Quality Assessment.Quelles tâches de traitement de CV sont gérées ?  Présélection  Pour la tâche de présélection  Framework d’évaluation de la qualité des CVs par word et sentence embedding basés sur le Universal Sentence Encoder – Avantages : Encodage propice à la classification, la similarité et le clustering de textes  Classification des CVs par méthodes non supervisées par la technique du manifold regularization – Avantages : Efficace pour palier à la contrainte liée à une quantité faible de données labélisées Cet article utilise un jeu de données de 10 000 CV fournis par une entreprise de gestion de CV pour construire un modèle capable d’évaluer automatiquement la qualité d’un CV. Une fine partie des CV ont été labellisés par des experts RH. Chaque label précise si le CV est intéressant ou non. L’équipe a effectué un prétraitement des CVs pour en extraire les informations pertinentes à son évaluation comme le niveau d’éducation, les skills et les expériences. Ensuite, ces informations sont introduites dans un réseau de neurones pour prédire un score pour chaque CV. Les techniques de word et sentence embedding sont utilisées à l’entrée du réseau de neurones, il a également été introduit des schémas d’attention pour intégrer des words et sentences embeddings multiples. Des stratégies ont été développées pour gérer le déséquilibre entre les CV labellisés et non labellisés (pair/triplet-based loss, manifold regularization). 3 critères d’évaluations sont utilisés :  Receiver operating characteristic (ROC)  F-measure  average precision (AP) ROC et F-measure sont utilisés pour évaluer la classification des CVs. Average precision pour évaluer le ranking des CVs. Les résultats obtenus sont comparés avec ceux des plateformes d’évaluation de la qualité des CV (RQA). Le Universal Sentence Encoder est utilisé dans l’article pour encoder les termes et les phrases. Cette technique peut être utilisée pour faire la classification de textes, mesurer la similarité sémantique, faire du clustering etc. L’approche semi-supervisée est utilisée dans l’article pour gérer la contrainte de peu de données labélisées dans l’ensemble du jeu de données à disposition. Avec la technique du manifold regularization, il est possible de tracer une frontière entre plusieurs données non labélisées en supposant que les données qui sont proches dans un plan sont plus susceptibles d’appartenir à une même classe que par rapport aux données plus éloignées. 10 343 CVs ont été collectés au total dont seulement 33 positifs et 89 négatifs soit 10 221 CV non labellisés. L’approche technique utilisée est un réseau de neurones qui prend en entrée les skills et le working experiences de chaque candidat, après la première couche cachée, il y a le calcul de similarité cosinus qui est effectué puis un score est produit à la sortie du réseau. L’idée est de mesurer la similarité entre les skills et le working experiences du candidat pour en ressortir un score. En plus des informations listées précédemment, il y a d’autres critères pris en compte comme le niveau d’éducation (licence, master), le nombre d’années d’expérience, les prix ou récompenses, le nombre de skills et les postes occupés. Ces informations sont prises en compte et normalisées pour calculer le score d’un candidat. Plus le score est élevé, plus le candidat est susceptible d’être sélectionné et interviewé. La stratégie utilisée dans cet article aurait pu être améliorée, si les CVs étaient matchés aux offres d’emploi auxquels ils correspondraient.

LIRE AUSSI :  Intérêt du dosage du NT-proBNP dans la prise en charge des dyspnées aiguës

Article 5: Build your own Resume Parser Using Python and NLP[9] 

Date de parution : 2018  Domaine : Textmining/Fouille de textes/NLP  Sous Domaine : Traitement des CVs  Quelles tâches de traitement de CV sont gérées ?  Dépouillement  Pour la tâche de dépouillement  Prétraitement et extraction des entités des CVs avec Python et NLTK – Avantages : Extraction rapide des entités nommées – Inconvénients : Nécessite un entrainement d’un réseau de neurones pour obtenir de meilleurs scores  Extraction des téléphones et email par expression régulières – Inconvénients : Inefficace sur les mauvais formatages  Extraction des skills et instituts des CVs à partir d’une base de données – Inconvénients : Nécessite une base de données exhaustive L’extraction du texte à partir des CVs au format PDF se fait à partir de la librairie Python pdfminer. Par contre, pour extraire des CVs au format docx, il est nécessaire d’utiliser une autre librairie (docx2txt). Pour les fichiers au format doc, il est nécessaire d’utiliser la librairie catdoc. L’extraction du nom et prénom des candidats se fait avec la librairie NLTK en utilisant la fonctionnalité du ✭✭ Named Entity Recognition ✮✮ (NER). Cette fonctionnalité a la possibilité d’extraire des entités contenues dans le texte, comme les nom et prénom d’une personne par exemple. Par contre, le résultat retourné par NLTK dans l’article est assez mitigé, d’o`u la recommandation d’utiliser le modèle NER de l’université de Stanford. L’extraction des numéros de téléphone se fait par contre avec les expressions régulières de la libraire re de Python, de même que les adresses emails. Pour l’extraction de skills avec NLTK il est nécessaire de tokenizer le texte de chaque CV, puis de supprimer les stopwords. L’utilisation d’une base de données (fichier csv) de skills ou d’une API est suggérée dans l’article pour déterminer les skills présents dans un CV. Pour améliorer la recherche de skills il est suggéré dans l’article d’utiliser l’API Skills API qui est un service hébergé sur internet contenant plus de 70 000 skills. La librairie requests est utilisée pour interroger l’API à partir des tokens, bigram et trigram issus de chaque CV. 2.6. ARTICLE 6 29 Enfin, concernant l’extraction des informations liées à l’éducation du candidat, une liste de mots réservés est utilisée pour parser les instituts, écoles ou universités. Il serait possible d’améliorer les solutions apportées dans l’article en entraˆınant un réseau de neurones capable de reconnaˆıtre les entités telles que les skills et les instituts de formation des candidats.

Table des matières

Acronyms
1 Introduction
1.1 Contexte
1.1.1 Le e-recrutement
1.1.2 Les limites du e-recrutement
1.2 Problématique
1.3 Objectifs
1.4 Motivations
2 Etat de l’art
2.1 Article 1
2.2 Article 2
2.3 Article 3
2.4 Article 4
2.5 Article 5
2.6 Article 6
2.7 Article 7
2.8 Article 8
2.9 Article 9
2.10 Article 10
2.11 Article 11
2.12 Article 12
2.13 Article 13
2.14 Article 14
2.15 Article 15
2.16 Article 16
2.17 Article 17
2.18 Article 18
2.19 Article 19
2.20 Article 20
2.21 Synthèse de l’état de l’art
3 Conception et réalisation du système
3.1 Conception de notre système
3.1.1 Fonctionnalités de l’application
3.2 Réalisation de notre système
3.2.1 Réalisation de l’application NLP
3.2.2 Réalisation des interfaces web
3.2.3 Réalisation de la base de données
3.2.4 Processus de présélection des meilleurs candidats
3.2.5 Mise en place des tâches en file d’attente
3.3 Performances
3.3.1 Présentation du jeu de données
3.3.2 Tableau de mesures de performances
4 Conclusion et perspectives
4.1 Conclusion
4.2 Perspectives
Bibliographie

projet fin d'etudeTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *