Waiter, est une plateforme SaaS permettant aux restaurateurs, dans un environnement social et grâce à un algorithme de matching, de recruter le candidat qui correspond à leurs besoins.

Notre but est d’améliorer l’expérience de recrutement en analysant sémantiquement la verbatim contenu dans les offres (les phrases et énoncés), et de le faire concorder avec les profils des candidats qui postulent à leurs offres

INTRODUCTION – LE PROCESSUS DE RECRUTEMENT CHEZ WAITER

D’abord, l’établissement recruteur s’inscrit sur Waiter, en y ajoutant toutes les informations nécessaires ( nom, adresse, siret, photos, description, spécialités etc…), afin de donner envie aux candidats présents sur la plateforme d’y postuler.
Puis le restaurant poste son offre d’emploi avec des critères et des filtres, comme par exemple : “Je cherche un limonadier ayant 3ans d’expérience, sachant porter au plateau et parlant anglais

Lorsque l’offre est publiée, les candidats vont postulé à l’offre d’emploi, et le professionnel recevra les candidatures avec un pourcentage de comptabilité à l’offre, il pourra alors accepter ou refuser les candidats.

Chez Waiter, nous souhaitons délivrer aux professionnels, le maximum de profils correspondant aux critères entrés dans les offres d’emplois. C’est pourquoi nous voulons améliorer notre base existante en analysant aussi le contenu sémantique des jobs mais aussi des profils y postulant. Le but étant de voir de façon évidente une corrélation existante ou non entre les 2 phrases : celle d’un recruteur et celle d’un candidat.

NOTRE METHODOLOGIE

Pour pouvoir aller plus loin dans l’analyse sémantique, nous avons utilisé le langage Python pour tout ce qui est Data Mining ou Text Mining, ainsi que des librairies telles que NLTK, Wordcloud, Pandas etc …

RECUPERATION ET NETTOYAGE DES DONNEES

Nous cherchons ici à récupérer des données textuelles d’utilisateurs et d’offres d’emploi de la plateforme Waiter. Grâce à un script Python, nous avons requêté une base de données directement en langage SQL, et enregistrer dans un fichier, les données que nous souhaitons.

Nous avons donc récupéré les descriptions des candidats de la plateforme ainsi que la description et le profil recherché des offres d’emploi.

Ensuite nous avons chargé nos fichiers récupérés précédemment sur Jupyter afin de pouvoir continuer à travailler dessus avec Python.

NOS ETAPES DE NETTOYAGE

1) « Tokenizer » notre dataset en y imputant les caractères qui ne nous seront pas utiles comme des liens URLs, des tags HTML, des chiffres
2) De nettoyer les “Stopwords” qui sont les mots qui ne seront pas utiles pour notre analyse comme par exemple des pronoms personnels, et autres… grâce à la librairie StopWords de NLTK.

3) Transformer notre liste de donnée en une chaîne de caractères, appelé string en anglais, afin que nous puissions continuer notre processus d’analyse textuelle.

ANALYSE DE SENTIMENT

Nous avons importé une librairie externe en Python qui nous permet de faire ce qu’on appelle de l’analyse de Sentiments, afin de voir la polarité et la subjectivité de notre texte à analyser. Dans notre cas la polarité ne nous est pas très utile ? La subjectivité quant à elle va nous servir à savoir si le jeu de donnée contient des informations pertinentes ou non telles que des liens urls, des promotions sur des produits.

 

 

NUAGE DE MOTS

Nous avons ensuite pour avoir une image visuelle des mots clés les plus apparents dans notre base de donnée effectuer des nuages de mots.

Termes les plus fréquents dans les descriptions des candidats.

Termes les plus fréquents dans les descriptions et profils recherchés des offres d’emploi.

MATCHING SEMANTIQUE, ET AMELIORATION DU PROCESS

On importe maintenant la librairie Fuzzy Wuzzy, qui permet d’analyser 2 phrases l’une par rapport à l’autre, ou 2 textes. Ici nous allons tester d’abord sur des échantillons. En effet, la taille de nos textes est assez conséquente, il est donc inutile pour le moment d’analyser tout notre dataset, car cela prendrait plusieurs heures de calcul.

Ici on peut observer une concordance moindre entre la description du candidat et l’offre d’emploi en effet il n’y a que 40% de matching entre les mots contenus dans ces 2 descriptions

Notre système de matching fonctionne bien, l’objectif est maintenant de pouvoir l’adapter à une mise en production afin de pouvoir analyser l’ensemble de nos données via des requêtes envoyées par l’API de Waiter, et grâce à des microservices en Python via Amazon Web services avec son service appelé “Lambda” et “EC2” qui nous permettraient d’avoir un module externe dédié au calcul sémantique du matching et ainsi ne pas surcharger notre API, mais de seulement envoyé les résultats de l’analyse.