SECTION : Environnement et outils de
développement
Afin de concevoir un système intelligent d'analyse de
CV basé sur le traitement automatique du langage naturel, nous avons
soigneusement sélectionné une série d'outils,
bibliothèques et environnements adaptés au contexte du projet.
Cette section décrit en détail les choix technologiques retenus
ainsi que leur justification technique et fonctionnelle.
1. Environnement de développement :
Anaconda
L'environnement de développement utilisé dans ce
projet est Anaconda. Il s'agit d'une distribution open source de Python,
largement adoptée dans les domaines de la data science, du machine
learning et du traitement de données. Anaconda fournit un
écosystème intégré comprenant le gestionnaire de
paquets Conda, un environnement isolé et reproductible, ainsi que des
interfaces comme Jupyter Notebook ou Spyder. Ce choix permet de gérer
facilement les dépendances complexes liées aux
bibliothèques NLP (comme spaCy, transformers) et d'assurer une
compatibilité cohérente des versions. De plus, Anaconda facilite
le déploiement sur différents systèmes (Windows, Linux),
ce qui est crucial pour la portabilité du projet.
L'interface web destinée aux utilisateurs (entreprises
et demandeur d'emploie) a été développée en
s'appuyant sur la bibliothèque JavaScript React. Ce
choix technologique permet de
16
2. Langage de programmation principal :
Python
Le langage central utilisé est Python, en raison de sa
grande richesse en bibliothèques dédiées au traitement du
langage naturel, à l'intelligence artificielle et à la science
des données. Python est aujourd'hui considéré comme la
norme dans les domaines du NLP, grâce à des bibliothèques
comme spaCy, NLTK, scikit-learn, TensorFlow ou encore Hugging Face
Transformers. Sa syntaxe claire et son accessibilité favorisent une
productivité accrue et facilitent la collaboration entre
développeurs. De plus, Python est bien supporté dans les
environnements universitaires, ce qui rend son intégration naturelle
dans un cadre académique.
3. Framework Web : Django
Pour le développement de l'application web, nous avons
utilisé le framework Django. Ce framework Python repose sur une
architecture modèle-vue-contrôleur (MVC) qui favorise la
séparation des responsabilités et la maintenabilité du
code. Django est reconnu pour sa sécurité, sa robustesse et sa
rapidité de développement. Il intègre nativement des
modules pour la gestion des utilisateurs, l'administration des données,
les migrations de base de données, ce qui permet un développement
accéléré et structuré de la plateforme. Django est
également bien adapté à l'intégration de composants
d'intelligence artificielle via des APIs.
4. Traitement automatique du langage : spaCy et
Transformers (BERT)
Le coeur du système repose sur l'analyse linguistique
et sémantique des documents textuels (CV, offres d'emploi). Pour cela,
nous avons utilisé deux outils puissants et complémentaires.
D'une part, spaCy permet un traitement linguistique rapide et précis :
tokenisation, lemmatisation, reconnaissance d'entités nommées
(NER), etc. D'autre part, la bibliothèque Transformers de Hugging Face
fournit des modèles de langage pré-entraînés (comme
BERT) capables de produire des représentations sémantiques
profondes des phrases. Ces modèles permettent un appariement intelligent
entre un CV et une offre d'emploi, même lorsque les termes
utilisés diffèrent. Le couplage de spaCy pour la syntaxe et de
BERT pour la sémantique permet une analyse fine, robuste et
contextualisée.
5. Base de données : PostgreSQL
Le système de gestion de base de données
utilisé est PostgreSQL. Il s'agit d'un SGBD relationnel open source
reconnue pour sa fiabilité, sa conformité aux standards SQL et
ses performances, même avec des volumes de données importants.
PostgreSQL permet de stocker les profils candidats, les offres d'emploi, les
résultats d'analyse, ainsi que les historiques d'évaluation. Sa
capacité à gérer des types de données complexes et
à supporter les requêtes avancées (jointures,
agrégats, indexation) en fait un choix idéal pour ce projet. De
plus, son intégration avec Django via l'ORM (Object Relational Mapper)
permet une manipulation fluide des données côté backend.
6. Interface utilisateur (Frontend) : React
17
construire des interfaces utilisateur dynamiques et
réactives, capables de mettre à jour l'affichage en temps
réel en fonction des interactions et des données reçues du
backend.
React crée un système d'interface modulaire,
où chaque composant peut être stylisé de manière
claire et maintenable.
Grâce à cette approche, l'application propose un
tableau de bord interactif, ergonomique et responsive, optimisé pour
différents formats d'écrans (ordinateurs de bureau, tablettes,
terminaux mobiles). L'utilisation de React offre en outre la possibilité
d'implémenter des fonctionnalités avancées, telles que le
rafraîchissement automatique des résultats de matching, la
navigation fluide entre les pages et la gestion centralisée de
l'état de l'application. Enfin, cette architecture frontend garantit une
accessibilité renforcée et une expérience utilisateur
intuitive, en adéquation avec les standards modernes du
développement web.
7. Visualisation de données : Matplotlib et
Seaborn
Pour visualiser les résultats du système
(statistiques de matching, performances,
comparaisons), des bibliothèques de visualisation ont
été utilisées. Matplotlib est la bibliothèque de
base pour créer des graphiques en Python : histogrammes, courbes,
barres,
etc. Seaborn, construite sur Matplotlib, permet d'obtenir des
visualisations plus esthétiques avec moins de code, et une
intégration facilitée avec les DataFrames (pandas). Ces outils
sont particulièrement utiles pour présenter les
résultats des tests, les performances des
modèles NLP, ou encore les distributions de scores de
similarité entre CV et offres.
2.4 Architecture du système
L'architecture logicielle suit une structure client-serveur avec
les modules suivants :
1. Import des données :
Téléversement de CV au format PDF.
2. Extraction et prétraitement :
Conversion en texte brut, nettoyage, tokenisation.
3. NLP : Extraction des entités (NER),
tokenization, lemmatisation, analyse sémantique.
4. Matching et score : Calcul de
similarité entre le profil et une offre d'emploi.
5. Système d'aide à la décision
: Classement des candidats.
6. Dashboard : Interface RH, consultation des
résultats. 2.5 Méthode d'implémentation du
NLP
|