Kadia Rapport-Fin Last
Kadia Rapport-Fin Last
Kadia Rapport-Fin Last
Présenté par :
DEDICACE
A mes parents,
Plus que pour eux, je dois réussir ;
A ma famille.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 I
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
REMERCIEMENTS
Cette œuvre n'aurait jamais été possible sans le concours de nombreuses personnes.
Les actions remarquables des uns, ainsi que le soutien et l’expertise des autres ont laissé leur
empreinte sur ce mémoire.
Nos premiers mots de remerciements vont à l'endroit de Saham Assurance, filiale du
Groupe Sanlam Pan Africa, et des institutions de formation notamment, la Fondation X
Polytechnique et l 'Ecole X Polytechnique de Paris, l’INP-HB de Yamoussoukro et l'ENSAE
d'Abidjan. Elles ont fortement œuvré pour l’aboutissement de ce travail.
A nos encadreurs de Mémoire Messieurs BROU Konan Marcellin et GASSO Gilles
respectivement Maître de Conférences et Professeur, qui nous ont accordé une partie de leur
précieux temps, de leur esprit critique et surtout de leurs sens de l’écoute et de l’orientation.
Nous remercions également l’ensemble de l’équipe de la Digital Factory managée par
Monsieur BEDREDDINE Hicham et particulièrement l’équipe de la Data Factory dirigée par
Madame BERRADA Meriem pour l’accueil.
De même, nous remercions Monsieur JAMAL BENNIS Zouhair, Coach Agile, ainsi
que Mesdames MESSBAH Hind et NAJIMI Mariem, Data Engineers, pour leur aide lors de
la recherche des méthodes.
Nos sincères remerciements vont aussi à l’endroit du Directeur de l’IDSI
(International Data Science Institute) Monsieur TANOH Tanoh Lambert pour son amour du
travail et son charisme qui ont su éveiller en nous le sens de la responsabilité et du leadership.
Par ailleurs, nous tenons à exprimer notre profonde reconnaissance à Monsieur TANON
Kadjo Lambert, Directeur des études à l’INP-HB de Yamoussoukro, et à l’ensemble de ses
collaborateurs qui ont déployé des efforts pour nous assurer, non seulement, une formation de
qualité, mais surtout, des valeurs cardinales notamment, le savoir-faire, le savoir-être et le
goût du travail bien fait.
Enfin, à nos parents et nos amis, nos sincères remerciements pour votre aide si
remarquable ; vos précieux conseils et votre affection inconditionnelle nous ont donné la
force pour réaliser ce travail.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 II
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
AVANT-PROPOS
Ce document est rédigé dans le cadre du stage de fin de cycle de la formation des
Etudiants de Master en Data Science – Big Data de l’International Data Science Institute
(IDSI).
En effet, ce stage qui s’est effectué à la Digital Factory de Saham Assurance au Maroc
(par télétravail) est un lieu collaboratif, inventif et startuppeur de solutions innovantes en
faveur des assurés. Saham Assurance dont la maison mère Saham Finance a pour actionnaire
stratégique le sud-africain Sanlam.
Dans le cadre des projets que réalise la Digital Factory, il nous a été confié sous
l’encadrement de Mesdames MESSBAH Hind et NAJIMI Mariem, « la transformation,
migration de base de données et refonte de l’algorithme de regroupement des clients ».
Dans ce contexte, nous nous sommes efforcés de rester aussi fidèles que possible aux
objectifs que la structure souhaite atteindre en écrivant ce protocole d’étude.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 III
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
SOMMAIRE
DEDICACE ------------------------------------------------------------------------------------------------- I
REMERCIEMENTS -------------------------------------------------------------------------------------- II
AVANT-PROPOS---------------------------------------------------------------------------------------- III
SOMMAIRE ----------------------------------------------------------------------------------------------IV
RESUME -------------------------------------------------------------------------------------------------VII
ABSTRACT ----------------------------------------------------------------------------------------------VII
INTRODUCTION ------------------------------------------------------------------------------------- 10
CONCLUSION ---------------------------------------------------------------------------------------- 19
INTRODUCTION ------------------------------------------------------------------------------------- 20
CONCLUSION ---------------------------------------------------------------------------------------- 40
CONCLUSION GENERALE------------------------------------------------------------------------ 41
REFERENCES-------------------------------------------------------------------------------------------- 42
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 IV
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 V
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
SIGLES ET ABREVIATIONS
BL Blacklisté
DF Digital FACTORY
CIN BL Carte nationale d'identité blacklisté (Numéro saisi au hasard par un agent lors
FM Fuzzy matching
FN First Name
ID identifiant
LD Levenshtein Distance
LN Last Name
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 VI
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
RESUME
La gestion de la prolifération des données devient aujourd'hui de plus en plus
complexe. Certes, les entreprises disposent d’un ensemble de systèmes commerciaux internes
et externes dont elles se servent pour collecter et pour stocker leurs informations. Mais, ils
restent, à la vérité, tous disparates. Le véritable problème auquel fait face toute personne qui
tente d’intégrer ces données est l’absence de clé ou d’un ensemble de variables clés
permettant de les réunir. Et pourtant, ces données devront à un moment donné être intégrées
tout en veillant à ce que les doublons soient identifiés et que les nouvelles données soient
intégrées sans compromettre la qualité de celles qui existaient déjà.
Normalement, la mise en correspondance des données entre ensembles de données
consiste à fusionner ou à joindre deux ou plusieurs ensembles de données sur un ensemble de
clé(s) connue(s) et fiable(s).
Pour y parvenir, nous nous servirons de la correspondance floue (Fuzzy Matching) qui
est le processus par lequel les données sont jointes ensemble sur une ou plusieurs variables.
En d’autres termes, le Fuzzy Matching est la mise en œuvre de processus algorithmiques pour
identifier les doublons non identiques d'un ensemble de données tels que des noms
d'entreprises, des noms de personnes ou des informations sur les adresses en spécifiant des
champs de correspondance et des seuils de similitude définis.
ABSTRACT
Managing data proliferation today is becoming increasingly complex. Companies
often have a multitude of disparate internal and external business systems that collect and
store information. At some point, this data will need to be integrated while ensuring that
duplicate data is identified and new data is integrated without compromising the quality of
existing data. One of the major problems faced by anyone attempting to integrate these data is
the absence of any key or set of key variables to bring them together.
Normally, data matching between data sets involves merging or joining two or more
data sets on a known and reliable set of key(s). However, Fuzzy Matching is the process by
which data are joined together on one or more variables.
In simple terms, Fuzzy Matching is the implementation of algorithmic processes to
identify non-identical duplicates of a data set such as company names, personal names or
address information by specifying defined match fields and similarity thresholds.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 VII
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
INTRODUCTION GENERALE
Contexte
Parfois, les données concernant une personne ou une entreprise ou encore une entité
sont disponibles auprès de plusieurs sources. De ce constat, comment fusionner des
informations provenant de différentes sources ?
Dans un monde idéal (pour les utilisateurs de la data), toutes les données sources
partageraient un identifiant unique et commun pour chaque personne, entreprise ou autre
entité. Il arrive souvent qu’il n'y a pas d'identifiant unique. La combinaison de différentes
sources de données doit alors se faire sur la base de noms, d’adresses ou autres identifiants.
Ces identifiants ne sont toujours pas les mêmes, bien qu’ils puissent se référer à la même
personne ou à la même entité. Il s'agit d'un problème standard appelé "fuzzy matching" [1]
qui représente ainsi une problématique à part entière. Il est fréquemment utilisé pour effectuer
la "correspondance floue", c’est-à-dire, pour rechercher des correspondances approximatives
au sein d'une même source de données.
La plupart des algorithmes de fuzzy matching se heurtent à plusieurs problèmes
résultant de l'accroissement de la taille des données tels que les problèmes de fiabilité des
résultats et de performance en temps d'exécution des algorithmes mais également en espace
mémoire.
L’opération du fuzzy matching nécessite donc l’examen d’un immense espace de
recherche pour trouver les correspondances plausibles. Un défi majeur dont la minutie
permettra de les traiter.
Contributions
L’objectif principal de cette étude est de développer une solution qui vise à déterminer
les correspondances entre les données reçues quotidiennement d’extractions du système
d’information métier tout en préservant la qualité des résultats et un temps d’exécution
acceptable afin de regrouper ou d’ajouter de nouveaux clients.
Cette solution doit être capable de fédérer une méthodologie de matching qui constitue
l’essentiel de notre contribution à une démarche d’évaluation explicitée.
La méthodologie se décline ainsi en trois phases, à savoir :
- La phase de la préparation du Fuzzy Matching,
- La phase du Fuzzy Matching
- La phase du Post Fuzzy Matching.
D’abord, la phase de préparation du Fuzzy Matching consistera à préparer les données
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 8
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
pour le matching. Ensuite, la phase de Fuzzy Matching nous permettra de déterminer les
correspondances entre les données résultant de la phase précédente afin de regrouper des
clients ou d’ajouter de nouveaux clients. Finalement, la phase de Post Fuzzy Matching aura
pour but de fiabiliser les données reçues sur les clients.
Organisation du mémoire
Notre mémoire est organisé en deux chapitres. Le chapitre 1 est dédié à l’étude
préalable. Dans ce chapitre, il sera question de la présentation de la structure d’accueil puis, la
description détaillée du métier, du thème et, enfin, l’étude de l’existant.
Le chapitre 2 sera quant à lui consacré à l’analyse des principes du fuzzy matching,
ainsi que les différentes approches de fonctions de base utilisées pour déterminer les
correspondances entre les données et l’arbre de décision pour catégoriser et identifier les
personnes.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 9
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
INTRODUCTION
Ce chapitre permettra, d’une part, de présenter notre cadre d’étude et d’analyser les
concepts clés relatifs à la problématique du sujet. D’autre part, nous examinerons, le cahier de
charges, ainsi que la méthode de travail et l’étude de l’existant.
Le plan de ce chapitre est donc simple. Nous présenterons, d’abord, la structure
d’accueil. Ensuite, il sera question de la description détaillée du métier et des données. Enfin,
nous conclurons par l’étude de l’existant.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 10
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 11
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Notre stage s’est déroulé au sein de la team Data Factory dirigée par Madame
BERRADA Meriem. Cette team est composée de 3 sous équipes à savoir : les data scientists,
les data enginneer et les data analyst.
2. Méthodologie Agile
La méthode Agile est une organisation de travail en cycles courts, elle permet aux
équipes de développement de gérer un produit de manière souple, adaptative et itérative.
Le principe de base est que les équipes avancent ensemble et sont toujours prêtes à
réorienter le projet au fur-et-à-mesure de sa progression. Toutes les équipent travaillent en
synergie par la méthode Scrum qui s'appuie sur le découpage du projet en tranches de temps,
nommées « sprints ». Cette méthode se compose des éléments fondamentaux que sont les
rôles, les évènements et les artefacts.
a. Rôles Scrum
L'équipe Scrum est auto organisée et pluridisciplinaire, c'est-à-dire qu'elle choisit la
meilleure façon d’accomplir son travail et possède toutes les compétences nécessaires à
l'accomplissement du projet. La flexibilité, la créativité et la productivité de l'équipe sont ainsi
optimisées.
Une équipe Scrum se compose d’:
• un Scrum Master
• un Product Owner
• une équipe de développement
➢ Le Scrum Master
C’est un facilitateur qui aide à améliorer la communication au sein de l’équipe et cherche
à maximiser la productivité et le savoir-faire de celle-ci. Il est considéré comme le coach de
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 12
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
l'équipe de développement.
➢ Le Product Owner
Il porte la vision du produit à réaliser. Il établit la priorité des fonctionnalités à développer
ou à corriger, et qui valide les fonctionnalités terminées.
➢ L'équipe de développement
Cette équipe est chargée de transformer les besoins définis par le Product Owner en
fonctionnalités utilisables. Elle est pluridisciplinaire et possède toutes les compétences
nécessaires pour réaliser le projet. Il n'y a pas de notion de hiérarchie, toutes les décisions sont
prises ensemble.
b. Evènements Scrum
La vie d'un projet Scrum est rythmée par un ensemble de réunions définies avec précision
et limitées dans le temps.
➢ Le Sprint
Un Sprint est un intervalle de temps maximum pendant lequel une version terminée et
utilisable du produit est réalisée. Chaque sprint a un objectif et une liste de fonctionnalités à
réaliser.
➢ Revue du Sprint
Il s'agit du bilan du Sprint réalisé. Une fois le Sprint terminé, l'équipe Scrum et les parties
prenantes se réunissent pour valider ce qui a été accompli pendant le Sprint.
➢ Rétrospective du Sprint
Le but est l'adaptation aux changements qui peuvent survenir et l'amélioration continue du
processus de réalisation.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 13
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
➢ Mêlée quotidienne
Cette réunion quotidienne de 15 à 30 minutes est très importante. Il peut en avoir deux
c’est-à-dire une en début de journée et l’autre en fin comme c’est le cas au sein de la Data
Factory. Le but est de faire un point sur la progression journalière du Sprint.
c. Artefacts Scrum
➢ Le Product backlog
Il s'agit d'une liste hiérarchisée des exigences initiales du client concernant le produit à
réaliser.
➢ Le Sprint backlog
C'est le plan détaillé de la réalisation de l'objectif du Sprint, défini lors de la réunion de
planification du Sprint.
➢ L'incrément
Il s'agit de l'ensemble des éléments terminés du Product backlog pour le Sprint en cours,
ainsi que ceux des Sprints précédents. L'incrément doit fonctionner et être utilisable.
➢ Le Burndown chart
Ce graphique simple indique l'état d'avancement dans la réalisation des tâches du Sprint
backlog. Le Burndown Chart est actualisé tous les jours par le Scrum Master après la mêlée
quotidienne. Dans le cas de la Digital Factory une application « Jira Software » permet
d’avoir pour chaque membre de l’équipe, une visibilité de ses tâches à accomplir, ses tâches
en cours et celles qui doivent être testées ou validées et donc considérées comme achevées.
3. Environnement de travail
Prévu initialement être exécuté en présentiel dans les locaux de la Digital Factory (DF)
de Saham Assurance au Maroc, notre stage n’a pu finalement s’effectuer en distanciel
(Abidjan, Côte d’Ivoire) par la méthode du télétravail, en raison de la pandémie du Covid-19.
Une première difficulté à laquelle nous avions réussi à surmonter grâce à la sollicitude et au
professionnalisme de la DF.
Afin de mieux accomplir nos tâches, nous avions utilisé, comme outil de travail au
niveau hardware un ordinateur portable de marque Lenovo de caractéristiques 12 Go de
RAM, processeur Intel(R) Core (TM) i5-6300U CPU @ 2.40GHz, 2496 MHz ; au niveau
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 14
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Par ailleurs, la description détaillée du métier et des données fera l’objet de la suite de notre
étude.
Dans ce travail, il nous sera permi de définir les différents concepts, d’indiquer la
provenance des données utilisées et de présenter le cahier des charges.
➢ Assurance
Une assurance est un moyen permettant à une personne appelée « l'assuré » de gérer les
risques et de bénéficier du secours de l'assureur en cas de survenance d'un sinistre.
➢ Assurance vie
L'assurance-vie est une forme d'assurance dont l'objet est de garantir le versement d'une
certaine somme d'argent (capital ou rente) lorsque survient un événement lié à l'assuré : son
décès ou sa survie.
➢ Assurance automobile
Le contrat assurance automobile est une assurance obligatoire qui a pour but de garantir
le conducteur d'un véhicule automobile contre les conséquences des dommages matériels ou
corporels causés par son véhicule à des tiers.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 15
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
➢ Assistance automobile
L'assistance automobile consiste à apporter une aide ou un secours à un automobiliste qui
se trouve dans une situation problématique : panne, accident de voiture, etc. L'assistance
auto est considérée comme un soutien logistique.
➢ Police
Une police d'assurance est un document contractuel qui fixe les conditions
d'engagements de l'assureur à l'égard de l'assuré ou d'un groupe d'assurés.
➢ Contrat flotte
Lorsqu’il s’agit d’un contrat Flotte Entreprise, tous les véhicules sont liés à un seul client
principal et les conducteurs ne sont pas nommés.
FICHE CLIENT = 1 seule client = l’Entreprise
➢ Avenant
Modification d’un contrat d’assurance pour donner suite à un changement de situation tel
qu’un changement de véhicule ou un déménagement, permettant de modifier le contrat sans le
réécrire entièrement.
➢ Data lake
Concept lié à la mouvance du big data, le data lake désigne un espace de stockage global
des informations présentes au sein d'une organisation. Il permet de stocker de gros volumes de
données brutes et hétérogènes dans leur format natif.
➢ Dataframe (DF)
Tableaux de données.
➢ Data Warehouse
Les Data Warehouse ou entrepôts de données sont des bases de données permettant de
stocker des données historiques structurées non volatiles orientées sujet afin de les analyser.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 16
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Les données étant reconnues comme un actif stratégique de toutes les entreprises, elles
constituent aujourd’hui un enjeu majeur pour le groupe Saham. A cet effet, dans le but de
fiabiliser les données reçues chaque jour en delta (Historique de 3 jours) à partir d’extraction
du système d’information métier, on les stocke au niveau du datalake pour appliquer les
différents processus de Fuzzy Matching (Recherche approximative ou floue). Ces processus
ont pour objectif de classifier, de rapprocher les données selon les différents critères et règles
de métier. Ce rapprochement sert à identifier les doublons non identiques d’un jeu de données
en spécifiant les champs de correspondance et les seuils de similitude.
- L’objectif principal
L’objectif principal de cette étude est de développer une solution qui vise à déterminer
les correspondances entre les données reçues chaque jour en delta (Historique de 3 jours)
d’extractions du système d’information métier tout en préservant la qualité des résultats et
un temps d’exécution moins chronophage que l’existant afin de regrouper ou d’ajouter un
nouveau client.
- L’objectif spécifique
• Etudier les algorithmes de regroupements utilisant des calculs de distances
(Levenshtein distance, Damerau Levenshtein distance, Jaro distance, …)
• Benchmarker les algorithmes tels que Jaro-Winkler ; FuzzyWuzzy ; TF-IDF,
N-grammes, similitude cosinus qui permettront une amélioration de l’existant
• Implémenter la solution optimale.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 17
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
3-2- Méthodologie
1. Préparation du Fuzzy Matching : Dans cette étape, le processus Pre-FZM extrait les
données reçues du datalake, classifie les données, et différencie les polices monos et
flottes. Il ajoute aussi les UNID (identifiants uniques aux polices).
3. Post Fuzzy Matching : Ici le processus post Fuzzy matching classifie la fiabilité des
données reçues des clients, rapproche les polices en différenciant les souscriptions des
renouvellements, et finalement alimente les tables sur Valeur Client.
Le logiciel Alteryx est notre existant dans cette étude. Nous allons donc le présenter et
indiquer ses limites.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 18
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Des trois suites, celui utilisé par la DF est Alteryx Designer. Ce logiciel permet de
faire la correspondance floue (fuzzy matching) en utilisant les fonctions de Levenshtein
distance et Jaro distance. Son taux d’erreur est de 10% avec un temps de calcul acceptable.
L’idée de travailler sur un sujet déjà traité par un logiciel se situe à deux niveaux.
Premièrement, le coût élevé et, deuxièmement, les difficultés de sa maintenance. En fait, le
traitement algorithmique qu’utilise Alteryx Designer est complexe. Ce qui entraine parfois
des obstacles pour investiguer lorsqu’ils rencontrent un bug.
CONCLUSION
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 19
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
INTRODUCTION
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 20
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
des seuils de similitude définis. Il est utilisé pour faciliter le nettoyage des données, les
recommandations, la déduplication ou la mise en correspondance des données disparates.
Cette partie montre les bases de l'utilisation du Fuzzy Matching en python avec des
algorithmes tels que fuzzywuzzy ; jaro winkler et N-gramme, TF-IDF, Similitude Cosinus.
Par simple inspection comme le montre le tableau ci-dessus, il est facile de voir
que M. KONE ALI et KONE ALI, MARIE CLAIRE YAO et MC YAO font probablement
référence à la même personne avec de légères différences d'orthographe. Pour un humain, il
est facile de repérer ces doublons.
Dans les petits ensembles de données, les enregistrements peuvent être nettoyés à la
main. Mais qu'en est-il des énormes ensembles de données ?
Comment combiner des milliers d'entrées de texte et regrouper des entités similaires ?
Maintenant, avant de plonger dans les méthodes, prévisualisons un échantillon de données
disponibles de 10 lignes :
Tableau 2 : Extraction du jeu de données
Ce tableau nous montre une extraction du jeu de données dont les colonnes (CIN, DOB,
FN_H, LN_H et VEH_REGISTRATION2) représentent les variables clés de notre étude.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 21
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
C’est donc sur ces variables clés que nous allons appliquer les algorithmes du Fuzzy
Maching, et les règles métiers.
L’idée que nous défendons dans cette section est que la méthodologie de fuzzy
matching se base sur une approche hybride basée sur la combinaison des approches
holistiques et se décline en trois phases dont : La Préparation du Fuzzy Matching, le Fuzzy
Matching et le post-Fuzzy Matching.
Des trois (3) phases du Fuzzy Maching indiquées, nous ne pourrions traiter qu’une
phase dans cette étude, notamment le Fuzzy Matching, non qu’on veuille délibérément
écarter les deux autres, mais parce qu’ils (la préparation du Fuzzy Matching et le post-
Fuzzy Matching.) ont été entièrement traité.
Cette phase a pour objectif de réaliser un prétraitement sur les données. Il s’agit
d’extraire au quotidien (en delta Historique de 3 jours) les données reçues du datalake qui
regroupent plusieurs éléments d’informations clients (nom, prénoms, CIN, DOB, …) polices
(policy_key, …) et véhicules (Immatriculation, …). A partir de ce regroupement, les données
sont classifiées et différenciées entre les polices monos et flottes, tout en ajoutant les UNID
(identifiants uniques aux polices).
Après avoir constitué les données à partir de la Préparation du Fuzzy Matching, nous
observons une taille moyenne de 40 Mo soit, une approximation de 30.000 lignes avec 58
colonnes. De cette collecte, nous supprimons les doublons. En plus de ces données reçues
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 22
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Le tableau 2 présenté, plus haut, nous fournit les variables à partir desquelles nous
appliquons notre data cleaning.
Chaque enregistrement est potentiellement un doublon de tous les autres
enregistrements à traiter. Ils doivent tous être comparés les uns des autres. Une approche
largement utilisée afin de comparer deux enregistrements et d’évaluer leur similarité textuelle
pour toutes sortes de combinaison de leurs composantes. Pour se faire, plusieurs fonctions de
similarité proposées dans la littérature de diverses communautés de recherche peuvent être
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 23
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
utilisées. Ces fonctions comparent deux chaînes de caractères et indiquent si ces dernières
doivent être considérées ou non comme similaires ou, pour la plupart, mesurent le niveau de
similarité entre les deux chaînes de caractères comparées. Les fonctions de similarité choisies
sont proposées ci-après.
Les algorithmes utilisés dans ce cas sont : fuzzywuzzy ; jaro-winkler et N-gramme, TF-
IDF et Similitude Cosinus.
1. FuzzyWuzzy
Le FuzzyWuzzy est une bibliothèque de Python qui est utilisée pour la correspondance
de chaînes de caractères. Il utilise la distance de Levenshtein [2] pour calculer les différences
entre les séquences.
La distance de Levenshtein (LD) mesure la similarité entre deux chaînes de caractères
chaîne source (s) et chaîne cible (t). Elle est égale au nombre minimal de caractères qu’il faut
supprimer, insérer ou remplacer pour transformer s en t.
C’est une distance au sens mathématique du terme, donc en particulier c’est un nombre positif
ou nul, et deux chaînes de caractères sont identiques si et seulement si leur distance est nulle.
[3] Par exemple :
Si s = "test" et t = "test", alors LD (s, t) = 0, car aucune opération n'a été réalisée
(Les mots sont identiques)
Si s est "test" et t est "tent", alors LD (s, t) = 1, car un remplacement (changer "s" en
"n") suffit pour transformer s en t.
Si s est vide, la distance est le nombre de caractères dans t.
Si t est vide, la distance est le nombre de caractères dans s.
Plus la distance Levenshtein est grande, plus les chaînes sont différentes.
Fonctionnement
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 24
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Initialiser la première ligne par la matrice ligne [0,1, ..., m-1, m] et la première colonne par la
matrice colonne [0,1, ..., n-1, n]
R E P L A C E
0 1 2 3 4 5 6 7
D 1 0 0 0 0 0 0 0
E 2 0 0 0 0 0 0 0
L 3 0 0 0 0 0 0 0
E 4 0 0 0 0 0 0 0
T 5 0 0 0 0 0 0 0
R E P L A C E
E 6 0 0 0 0 0 0 0
D 1 1 1 1 1 1 1
E 1 0 1 1 1 1 0
E 1 0 1 1 1 1 0
On remplit ensuite la matrice M en utilisant la règle suivante M[i, j] est égale au minimum
entre les éléments suivants :
Attention ! Il s'agit de Cout(i-1, j-1) et non de Cout(i, j) car la matrice Cout est moins grande
que la matrice M, ce qui entraîne un décalage.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 25
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
R E P L A C E
0 1 2 3 4 5 6 7
D 1 1 2 3 4 5 6 7
E 2 0 0 0 0 0 0 0
L 3 0 0 0 0 0 0 0
E 4 0 0 0 0 0 0 0
T 5 0 0 0 0 0 0 0
E 6 0 0 0 0 0 0 0
R E P L A C E
0 1 2 3 4 5 6 7
D 1 1 2 3 4 5 6 7
Nous réitérons cette opération jusqu'à
remplir la matrice :
E 2 2 1 2 3 4 5 6
L 3 3 2 2 2 3 4 5
E 4 4 3 3 3 3 4 4
T 5 5 4 4 4 4 4 5
E 6 6 5 5 5 5 5 4
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 26
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Tableau 3 : Résultat du FuzzyWuzzy avec une similarité > 0.8 sur l’extraction faite
2. Jaro winkler
1 𝑚 𝑚 𝑚−𝑡
( + + ) , 𝑓𝑜𝑟 𝑚 ! = 0
Jaro similarity = {3 |𝑠1 | |𝑠2 | 𝑚
0, 𝑖𝑓 𝑚 = 0
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 27
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Exemple d’illustration :
Sw = Sj + P * L * (1 - Sj) où,
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 28
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
La fonction de jaro winkler qui implémente les distances de Jaro et de jaro winkler
retourne également un dataframe des noms matchés avec un pourcentage de similitude > 0.8
fixée. On voit également que les noms (FN_LN) qui matchent sont regroupés dans la colonne
Group. Voir partie colorée.
Tableau 4 : Résultat du Jaro Winkler avec une similarité > 0.8 sur l’extraction faite
Dans cette étape, nous allons construire une matrice de termes de documents avec TF-
IDF et N-Grammes afin d’utiliser la similarité cosinus pour calculer la proximité entre les
chaînes de caractères.
✓ N-grammes
Les N-grammes sont des moyens pour diviser les chaînes en sous-séquences où N est la
taille du morceau. Ici, n peut être 1, 2, 3 et ainsi de suite. Pour N = 1, chaque sous-séquence
résultante est appelée un « unigramme », pour N = 2, un « bigramme » et pour N = 3, un «
trigramme ».
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 29
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Après avoir divisé nos chaines de caractères en bigrammes, calculons le score TF-IDF pour
2-grammes de noms constitués.
TF (t) = (Nbre de fois que le terme t apparaît dans un document) /(Nbre total des termes du
document).
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 30
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
IDF (t) = log e (Nbre total de documents /Nbre de documents contenant le terme t).
Exemple :
Prenons un document contenant 100 mots dans lequel le mot chat apparaît 4 fois.
Le terme fréquence (c'est-à-dire tf) pour chat est alors tf = (4/100) = 0,04.
Maintenant, supposons que nous ayons 100.000 de documents et que le mot chat apparaisse
dans 1.000 d'entre eux.
Ensuite, la fréquence inverse du document (c'est-à-dire idf) est calculée comme
Idf = log (100 000 /1 000) = 2
Ainsi, le poids Tf-idf est le produit de ces quantités : TF-IDF = 0,04 * 2 = 0,08
Une matrice clairsemée : est une matrice qui contient plus de valeurs nulles que de
valeurs non-nulles. On utilise une matrice clairsemée au lieu d'une simple matrice à cause du :
• Stockage : il y a moins d'éléments non nuls que les zéros et donc une mémoire
moindre peut être utilisée pour stocker uniquement ces éléments. Cela signifie
stocker des éléments non nuls avec des triplets (ligne, colonne, valeur, (nnz)).
• Ligne : Index de la ligne, où se trouve l'élément différent de zéro.
• Colonne : Index de la colonne, où se trouve l'élément différent de zéro.
• Valeur : Valeur de l'élément non nul situé à l'index (ligne, colonne).
• Temps de calcul : Le temps de calcul peut être économisé en concevant
logiquement une structure de données ne traversant que des éléments non nuls.
Exemple :
Comme nous pouvons le voir ci-dessous, il y a 6 éléments non nuls (nnz =6 ) et 14 valeurs
nulles. Cette matrice prend 5 * 4 = 20 espaces mémoire.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 31
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Tableau 5: Extrait d'une partie de la matrice clairsemée générée dans notre cas de figure
L’utilisation de la similarité cosinus ici sert à calculer la proximité entre les chaînes de
caractères.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 32
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
✓ Similitude cosinus : est une mesure qui calcule le cosinus de l'angle entre deux
chaînes de caractères. C’est une métrique comprise entre 0 et 1 utilisée pour
déterminer la similitude des chaînes indépendamment de leur longueur.
Plus cette valeur est proche de 1 (cosinus de 0 °), plus la similitude des chaînes est
élevée. Plus l'angle est petit, plus la similitude cosinus est élevée. Lorsqu'elle est tracée sur un
espace multidimensionnel où chaque dimension correspond à un n-gramme dans le jeu de
données, la similitude cosinus calcule l'orientation (l'angle) des chaînes de caractères.[7]
Exemple 2 :
1. I love dogs
2. I love, love, love, love, love, love, love dogs
3. I hate cats
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 33
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Si nous regardons la distance entre nos points, « I love dogs » et « I hate cats » sont
physiquement plus proches l'un de l'autre que « I love dogs » et « I love, love, ...dogs ».
Cependant, si nous regardons l'angle entre les lignes de nos points - la distance cosinus - nous
pouvons voir que l'angle entre « I love dogs » et « I love, love … dogs » est beaucoup plus
petit que l'angle entre « I love dogs » et « I hate cats ».
Ainsi, la similitude cosinus entre la chaîne 1 et la chaîne 2 sera plus élevée (plus proche de 1)
que la similitude cosinus entre la chaîne 1 et la chaîne 3.
Dans notre cas, nous utilisons la matrice résultante de la partie précédente ainsi que sa
transposée pour donner le résultat A ci-dessous :
Ce résultat, représenté en B sous forme de matrice permet d’avoir une meilleure visibilité.
Pour aboutir au résultat final de cette combinaison de fonctions (N-grammes, TF-IDF
et similitude cosinus), nous allons utiliser le résultat du tableau 6 pour créer une fonction qui
va regrouper tous les noms matchés en un nom de Group commun.
Dans le tableau ci-dessous, on voit que les lignes 2,3,4 et 5 appartiennent au même
Group AMINE MYRIEM tout simplement car ces personnes ont été matchés donc apparemment
identique. Dans la suite on verra si elles le sont réellement.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 34
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Tableau 7 : Résultat du N-gramme ; TF-IDF ; Similitude cosinus avec une similarité > 0.8 sur l’extraction fait
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 35
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Bien avant de comparer les résultats de nos algorithmes, nous appliquons d’abord les
règles métiers inscrites dans l’arbre ci-dessous afin de scinder notre dataframe en deux
groupes (clients nouveaux et clients regroupés) avant de procéder à l’attribution des
identifiants.
La meilleure pratique pour atteindre notre objectif qui, est de diviser en deux cluster
nos clients, est d’utiliser une sorte d’approche en cascade comme le montre la figure ci-
dessous ; Pour y arriver, nous utilisons SQL Spark pour retrancher au fur et à mesure les
clients qui correspondent aux différentes règles.
Figure 5 : arbre de décision
Une fois les clusters nouveaux clients et regroupement clients faits, nous procédons à
la phase d’attribution d’identifiant unique aux lignes de regroupements qui représentent la
même entité en fonction de certaines informations communes à savoir CIN ou DOB ou encore
VEH_REGISTRATION2.
Il est important de souligner que ses règles ont été appliquées sur les outputs de nos trois
algorithmes mentionnés plus haut. Le output final après cette étape se présente comme suit :
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 36
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
- Pour les lignes marquées au rouge, il s’agit des deux individus appartenant au même
Group car, ils ont une similarité de nom (FN_LN) > 80%. Mais, ils ne correspondent
pas à la même entité (new_code = 4 et 5) du moment où les informations des autres
colonnes diffèrent.
➢ Distance de Levenshtein
Comme toute la matrice doit être parcourue entièrement mais seulement une fois,
l’algorithme possède une complexité quadratique relative à la taille du dataframe. En effet, il
faut stocker et remplir la matrice en mémoire d’où la quantité de mémoire utilisée à 𝑂(𝑚)
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 37
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
avec un temps d’implémentation de O (N*M), pour N et M les longueurs des deux chaînes de
caractères.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 38
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
Similitude cosinus.
La qualité de résultat s’est faite sur 30% du jeu de données soit 3300 lignes par une
vérification manuelle.
Les fonctions de similarité basées sur N-grammes - TF-IDF - Similitude Cosinus sont
plus rapides à évaluer que les deux autres car elle effectue moins de comparaisons.
P = (5 / 3300) * 100
P = 0,15 % (ce pourcentage a été calculé en vérifiant manuellement sur 30% du jeu de
données de 11.000 lignes reçus pour le test).
Il est également important de signifier que dans une extraction contenant un même
client dupliqué m fois (m > 2), notre algorithme arrive à les regrouper avec un taux d’erreur
inférieur à 5 % (<5%).
Quant à l’évaluation générale de notre meilleur algorithme avec le logiciel Alteryx,
nous n’avions pu l’effectuer du fait qu’en raison de la sensibilité des données, il ne nous a pas
été possible de les disposer pour cette opération.
Le processus post Fuzzy matching consiste d’abord de refaire le Fuzzy matching sur le
stock des données ensuite de fiabiliser les données reçues sur les clients, de rapprocher les
polices en différenciant les souscriptions des renouvellements afin d’alimenter les tables sur
Valeur Client.
A la fin de cette étape, nous prenons le cas des clients qui ont un numéro de police différent
de l’ancienne police et nous mettons à jour les informations nécessaires.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 39
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
CONCLUSION
Après avoir implémenté nos différentes fonctions de similarités, nous avons pu faire le
choix de celle qui nous paraissait être la meilleure solution. De plus, l’application de notre
arbre de décision nous a permis de scinder notre jeu de données initial en deux groupes
(regroupement et nouveau client) pour ensuite attribuer les identifiants adéquats.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 40
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
CONCLUSION GENERALE
En définitive, s’il nous a paru nécessaire de présenter l’organigramme de la Digital
Factory, le rôle et la mission de chaque pôle, la méthodologie Agile, l’environnement de
travail et l’étude de l’existant, notre réflexion s’est fondamentalement portée sur le
développement d’une solution qui vise à déterminer les correspondances entre les données
journalières reçues tout en préservant la qualité des résultats et un temps d’exécution
acceptable afin de regrouper ou d’ajouter un nouveau client.
Ainsi, bien que le Fuzzy Matching ait permis la mise en œuvre de processus
algorithmiques pour déterminer la similarité entre des éléments de données (noms
d'entreprises, noms de personnes, etc.) en spécifiant des champs de correspondance et des
seuils de similitude définis, ce travail nous a également permis d’évaluer et de comparer
plusieurs fonctions de similarité dans une étude de détection de doublons approximatifs. C’est
une tâche importante qui favorise l’intégration de données provenant de différentes sources.
En moyenne sur l’ensemble des jeux de données traités dans cette étude, on observe que des
trois fonctions de similarités seul le N-grammes, TD-IDF, similitude cosinus réponds bien à
nos attentes.
Par ailleurs, les fonctions de similarité évaluées dans le cadre de ce travail sont
relativement simples à implémenter pour quiconque désirerait détecter automatiquement des
doublons approximatifs dans une base de données. Toutefois, lorsqu’on compare deux
enregistrements afin de déterminer s’ils représentent la même entité, on doit aussi choisir les
éléments d’information (variables) à comparer suivi du seuil de similitude à déterminer. On
peut le faire comme dans la présente étude, en comparant simplement les chaînes de
caractères résultant de la concaténation des noms et prénoms ou autres variables.
Pour ce qui est de l’environnement du travail, notre stage s’est effectué en télétravail à
cause de la pandémie du COVID-19. Nous avons accusé du retard à cause du changement de
notre maître de stage Madame MESSBAH Hind pour cause de démission de l’entreprise.
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 41
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
REFERENCES
[1] https://www.lexjansen.com/nesug/nesug07/ap/ap23.pdf
[2] https://en.wikipedia.org/wiki/Levenshtein_distance
[3]https://people.cs.pitt.edu/~kirk/cs1501/Pruhs/Spring2006/assignments/editdistance/Levens
htein%20Distance.htm
[4] https://fr.wikipedia.org/wiki/Distance_de_Jaro-Winkler
[5] https://thinkr.fr/text-mining-n-gramme-avec-r/
[6] https://www.quentinfily.fr/tf-idf-pertinence-lexicale/
[7] https://neo4j.com/docs/graph-algorithms/current/labs-algorithms/cosine/
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 42
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
REMERCIEMENTS -------------------------------------------------------------------------------------- II
AVANT-PROPOS---------------------------------------------------------------------------------------- III
SOMMAIRE ----------------------------------------------------------------------------------------------IV
RESUME -------------------------------------------------------------------------------------------------VII
ABSTRACT ----------------------------------------------------------------------------------------------VII
INTRODUCTION ------------------------------------------------------------------------------------- 10
CONCLUSION ---------------------------------------------------------------------------------------- 19
INTRODUCTION ------------------------------------------------------------------------------------- 20
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 43
TRANSFORMATION, MIGRATION DE BASE DE DONNEES ET REFONTE DE L’ALGORITHME DE REGROUPEMENT DES CLIENTS
1. FuzzyWuzzy ----------------------------------------------------------------------------------- 24
CONCLUSION ---------------------------------------------------------------------------------------- 40
CONCLUSION GENERALE------------------------------------------------------------------------ 41
REFERENCES-------------------------------------------------------------------------------------------- 42
KADIA Essan Amelan Armelle-Déborah Master 2 Data Science - Big Data 2019 - 2020 44