Ce projet est un système de recommandation d'emplois basé sur le traitement du langage naturel (NLP). Il analyse le CV de l'utilisateur et recommande les 20 meilleurs emplois alignés avec son profil. Les offres d'emploi sont extraites de LinkedIn et Indeed. De plus, l'utilisateur peut générer une lettre de motivation pour une offre spécifique et obtenir des statistiques détaillées sur les compétences techniques et les langages les plus demandés.
-
Recommandation d'emplois 📝:
- L'utilisateur télécharge son CV (format PDF ou DOCX).
- Le système analyse le CV et recommande les 20 meilleurs emplois alignés avec son profil.
-
Génération de lettre de motivation 💌:
- L'utilisateur peut fournir l'URL d'une offre d'emploi.
- Le système génère une lettre de motivation personnalisée pour cette offre.
-
Statistiques et insights 📊:
- Analyse des compétences techniques et des langages les plus demandés dans les offres d'emploi.
- Statistiques sur les localisations et les titres de poste les plus populaires.
- Visualisation des compétences techniques et des soft skills les plus recherchés.
Job_recommendation_System/
├── Webscrapping/ # Scripts de web scraping pour LinkedIn, Indeed et Glassdoor
│ ├── chromedriver.exe # Pilote Chrome pour Selenium
│ ├── glassdoor_refactor.ipynb # Notebook pour le scraping de Glassdoor
│ ├── indeed_refactor.ipynb # Notebook pour le scraping de Indeed
│ ├── linkedin_refactor.ipynb # Notebook pour le scraping de LinkedIn
│ └── pass_linkedin.txt # Fichier contenant les identifiants LinkedIn
├── data/ # Dossier contenant les données brutes et traitées
│ ├── data_full_translate_to_en_de_23_2907_drop_duplicates.csv # Données traduites et nettoyées
│ ├── skill_extraction_Skiller_03.08_final.csv # Extraction des compétences
│ ├── skill_extraction_Skiller_03.08_final_web.csv # Extraction des compétences (web)
│ ├── skill_extraction_Skiller_03.08_final_web_v1.csv # Extraction des compétences (web v1)
│ ├── skill_extraction_Skiller_08.08_final_web.csv # Extraction des compétences (web finale)
│ └── skill_name.csv # Liste des compétences
├── data_exploratory/ # Notebooks pour l'exploration et le nettoyage des données
│ ├── data_cleaning.ipynb # Nettoyage des données
│ └── data_exploratory.ipynb # Exploration des données
├── model/ # Modèles de machine learning et NLP
│ ├── als_model.pkl # Modèle ALS pour la recommandation
│ ├── skill_extractor.pkl # Modèle d'extraction des compétences
│ ├── skill_extractor_sm.pkl # Modèle d'extraction des compétences (version light)
│ ├── tfidf_model.pkl # Modèle TF-IDF
│ └── tfidf_model_0808.pkl # Modèle TF-IDF mis à jour
├── picture/ # Dossier contenant les images utilisées dans l'application
├── ultility/ # Scripts utilitaires
│ ├── cleaning.py # Fonctions de nettoyage des données
│ └── language.py # Fonctions de traitement du langage
├── README.md # Fichier README
├── about.py # Page "À propos" de l'application
├── app.py # Point d'entrée de l'application
├── cover_letter.py # Génération de lettres de motivation
├── home.py # Page d'accueil de l'application
├── job_recommender.py # Système de recommandation d'emplois
├── page_statistics.py # Page des statistiques et insights
└── requirements.txt # Dépendances du projet
- Langages : Python
- Frameworks : Streamlit (interface utilisateur)
- Traitement de texte : spaCy, NLTK, PyPDF2 (pour l'analyse de CV)
- Web scraping : BeautifulSoup, Selenium (pour extraire les offres d'emploi)
- Machine Learning : Scikit-learn, TensorFlow (pour la recommandation)
- Visualisation : Matplotlib, Seaborn, Plotly (pour les statistiques)
- Génération de texte : OpenAI GPT (pour les lettres de motivation)
- Objectif : Extraire les offres d'emploi de LinkedIn, Indeed et Glassdoor.
- Outils : Selenium, BeautifulSoup.
- Processus :
- Configuration de Selenium : Utilisation de
chromedriver.exepour automatiser la navigation sur les sites web. - Connexion aux sites : Les identifiants LinkedIn sont stockés dans
pass_linkedin.txtpour une connexion automatisée. - Extraction des données : Les offres d'emploi sont extraites en parcourant les pages web et en récupérant les informations clés (titre, description, localisation, etc.).
- Sauvegarde des données : Les données extraites sont sauvegardées dans des fichiers CSV pour un traitement ultérieur.
- Configuration de Selenium : Utilisation de
- Objectif : Nettoyer les données brutes pour les rendre utilisables.
- Outils : Pandas, NumPy.
- Processus :
- Suppression des doublons : Les offres d'emploi en double sont supprimées.
- Traitement des valeurs manquantes : Les champs vides sont remplis ou supprimés.
- Normalisation des données : Les textes sont convertis en minuscules, les caractères spéciaux sont supprimés, et les formats de date sont standardisés.
- Traduction des données : Les offres d'emploi sont traduites en anglais pour une analyse cohérente.
- Objectif : Explorer les données pour identifier des tendances et des insights.
- Outils : Pandas, Matplotlib, Seaborn.
- Processus :
- Analyse des compétences : Les compétences techniques les plus demandées sont identifiées.
- Visualisation des données : Des graphiques sont générés pour montrer les tendances des offres d'emploi par localisation, titre de poste et compétences.
- Extraction des insights : Les insights sont utilisés pour améliorer le système de recommandation.
- Objectif : Analyser les textes des offres d'emploi et des CV pour extraire des informations clés.
- Outils : spaCy, NLTK, PyPDF2.
- Processus :
- Tokenisation : Les textes sont divisés en mots ou phrases.
- Lemmatisation : Les mots sont réduits à leur forme de base (par exemple, "running" devient "run").
- Suppression des stop words : Les mots courants (comme "le", "de", "et") sont supprimés.
- Extraction des entités nommées : Les noms, lieux, dates et autres entités sont extraits.
- Objectif : Identifier les compétences techniques et les soft skills dans les offres d'emploi et les CV.
- Outils : spaCy, Scikit-learn.
- Processus :
- Création d'un corpus de compétences : Une liste de compétences techniques et de soft skills est créée à partir des données disponibles.
- Matching des compétences : Les compétences sont identifiées dans les textes en utilisant des techniques de matching de mots-clés.
- Modélisation : Un modèle TF-IDF est utilisé pour pondérer l'importance des compétences dans les offres d'emploi.
- Objectif : Construire un corpus de textes pour entraîner les modèles NLP.
- Outils : spaCy, NLTK.
- Processus :
- Collecte des textes : Les descriptions d'offres d'emploi et les CV sont collectés.
- Prétraitement des textes : Les textes sont nettoyés et normalisés.
- Création du corpus : Les textes sont organisés en un corpus structuré pour l'analyse et la modélisation.
git clone https://github.com/Meriam-Inoubli/Job_recommendation_System.gitcd Job_recommendation_Systempython -m venv env
source env/bin/activate # Sur Windows : env\Scripts\activatepip install -r requirements.txtstreamlit run app.pyL'application sera accessible Ă l'adresse suivante : http://localhost:8501.
Sur la page d'accueil, téléchargez votre CV au format PDF ou DOCX.
Le système analysera votre CV et affichera les 20 meilleurs emplois alignés avec votre profil.
Entrez l'URL d'une offre d'emploi. Le système générera une lettre de motivation personnalisée basée sur votre CV et les détails de l'offre.
Consultez les statistiques sur les compétences techniques, les langages de programmation, les localisations et les titres de poste les plus demandés.
- Meriam Inoubli : meriam.inoubli@dauphine.tn
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
