Vous êtes sur la page 1sur 107

Mémoire de fin d’études

Pour l’obtention du diplôme d’un ingénieur


Option : Systèmes d’Information et Technologies (ST)

Thème :
Les systèmes de recommandation séquentiels sur des textes juridiques

Réalisé par : Encadré par :

− M. CHADOULI Ayyoub − M. HACHANI Alaa Eddine

− Mme. YOUSFI Soumeya − Mme. ABDELLAOUI Sabrina

Organisme d’accueil : Legal Doctrine

Promotion : 2022/2023
Remerciements
Nous souhaitons tout d'abord exprimer nos remerciements les plus sincères à notre
encadrante, Mme. Sabrina ABDELLAOUI, Enseignant-Chercheur à l’ESI, pour son
sérieux et sa patience, ainsi pour la qualité de son suivi tout au long de notre stage. Nous
avons beaucoup bénéficié de son expérience scientifique et en tant qu’encadrante.

Nous tenons à remercier M. Alaa Eddine HACHANI, chef de l’équipe technique de


Legal Doctrine, pour nous avoir donnés cette opportunité à partir duquel nous avons tant
appris. Nous remercions également Mme. Yasmina AHMEDSAID, responsable du
service RH et Administratif, ainsi que toute l’équipe IT de Legal Doctrine pour nous
avoir accueillis au sein de l’entreprise.

Nos remerciements les plus sincères à M. Aymen KHOUAS et Mme. Amira MILOUDI,
de la cellule ML, pour leur réactivité et la qualité de leur suivi. Leurs qualités
scientifiques et humaines, la disponibilité et la confiance dont ils ont fait preuve à notre
égard, ils nous ont beaucoup appris alors que nous en savions si peu. Nous les
remercions d'avoir dépassé les attentes pour garantir le succès de notre projet.

Nous tenons aussi à remercier tous les enseignants de l’ESI qui ont contribué à notre
formation, sans eux, nous ne serions pas capables de réaliser ce travail modeste.

Et enfin, nous adressons nos plus sincères remerciements aux membres du jury pour
avoir accepté d’évaluer ce modeste travail.

I
Dédicaces
À nos chers parents,

Nous tenons à vous dédier ce rapport en signe de profonde gratitude et d'amour.

Votre soutien indéfectible tout au long de nos parcours académique a été une source
d'inspiration inestimable.

Votre encouragement constant, vos encouragements chaleureux et vos précieux


conseils ont été les piliers sur lesquels nous avons pu construire nos aspirations et
atteindre nos objectifs.

À nos chers frères et sœurs,

Nous sommes conscients que nos réalisations ne sont pas seulement les nôtres, mais
qu'elles sont le fruit de vos sacrifices, de votre dévouement et de votre soutien
constant. Je vous suis profondément reconnaissant de nous avoir encouragés à
poursuivre nos rêves et à donner le meilleur de nous-mêmes.

À nos précieux amis, malheureusement, nous ne pourrons pas citer tous vos noms,
vous avez été une seconde famille pour nous. Nous vous remercions de tout cœur
pour votre présence, votre soutien, votre amitié et les merveilleux moments partagés
au cours de toutes ces années.

Ayoub et Soumeya

II
Résumé
Récemment, un nouveau type d'économie est apparu, dans lequel la monnaie consiste à
maintenir l'intérêt de l'utilisateur. Elle se concentre principalement sur l’obtention de son
feedback et de comprendre ce qu’il apprécie et celui qui ne l'intéresse pas
Pour cette raison, la recherche sur les systèmes de recommandation a dernièrement fait l'objet
d'une attention particulière, notamment les systèmes séquentiels de recommandation qui ont
prouvé leur supériorité ces dernières années. Différentes méthodes probabilistes et méthodes
de l’apprentissage profond ont été suggérées pour créer un tel système et certaines approches
sont plus performantes que d’autres.
Notre projet de fin d'étude s'inscrit dans le cadre d'un projet initié par Legal Doctrine, une start-
up legaltech algérienne qui édite la plateforme legal-doctrine.com. L'objectif de ce projet est
d'améliorer l'expérience des clients en offrant un accès personnalisé au fonds juridiques. Plus
précisément, la start-up vise à développer un système de recommandation séquentiel permettant
aux utilisateurs d'optimiser leur utilisation des textes juridiques algériens et de cibler leurs
préférences de manière plus précise.
Dans ce contexte, notre travail consiste à concevoir et mettre en place un système de
recommandation séquentiel de textes juridiques. Nous proposons deux solutions, la première
est un filtrage collaboratif qui incorpore le principe de séquentialité. Tandis que la deuxième
conduit une analyse approfondie sur le contexte juridique, elle exploite les caractéristiques des
différents documents. Les deux solutions sont capables de modéliser les séquences
d'interactions et de fournir des recommandations ciblées.

Mots-clés :
Préférences utilisateur, systèmes de recommandation séquentiels, textes juridiques,
apprentissage profond.

III
Abstract
Recently, a new type of economy has emerged, in which the currency is keeping the user
interested. It primarily focuses on obtaining user feedback and understanding what they like to
see and what they don’t.
For this reason, research on recommendation systems has recently received special attention,
particularly sequential recommendation systems that have proven their superiority in recent
years. Various probabilistic methods and deep learning approaches have been suggested to
create such systems, and some approaches are more effective than others.
Our final year project is part of an initiative by Legal Doctrine, an Algerian legaltech startup
that operates the legal_doctrine.com platform. The goal of this project is to enhance the
customer experience by providing personalized access to legal content. Specifically, the startup
aims to develop a sequential recommendation system that enables users to optimize their use of
Algerian legal texts and target their specific interests more accurately.
In this context, our work involves designing and implementing a sequential recommendation
system for legal texts. We propose two solutions: the first is a type of collaborative filtering
that incorporates the principle of sequential recommendation, while the second involves in-
depth analysis of the legal context and utilizes the characteristics of different documents. Both
solutions are capable of modeling interaction sequences and providing targeted
recommendations.

Keywords :
User preferences, sequential recommender systems, juridical texts, deep learning.

IV
‫الملخص‬
‫علَى اِ ْهتِ َم ِام ا َ ْل ُم ْست َْخد ِِم ‪ .‬ي َُر ِكزَ َهذَا‬ ‫َاظ َ‬ ‫ْث تَت َ َمث َّ ُل ا َ ْلعُ ْملَةُ فِي ا َ ْل ِحف ِ‬ ‫الر ْق ِمي ‪َ ،‬حي ُ‬ ‫صا ِد َّ‬ ‫ظ َه َر ن َْوعٍُُ ٌُ َجدِيدٌ ِمنَ اَإل ْقتِ َ‬ ‫ُم َؤ َّخ ًرا ‪َ ،‬‬
‫اث فِي‬ ‫َ‬
‫ت اَ ْْل ْب َح ُ‬ ‫ْ‬
‫ب ‪ ،‬أظ َه َر ْ‬ ‫َ‬ ‫سب َ ِ‬ ‫علَى َج ْم ِع ُردُو ِد أ ْفعَا ِل اَل ُم ْست َْخدَ ِمينَ َوفَ ْه ِم َما يُ ْع ِجبُ ُه ْم َو َما ََل يُ ْع ِجبُ ُه ْم ‪ِ .‬ل َهذَا اَل َّ‬ ‫ْ‬ ‫َ‬ ‫سا ِسي ٍ َ‬ ‫ش ْك ٍل أ َ َ‬ ‫ع ِب َ‬ ‫اَلنَّ ْو َ‬
‫َ‬ ‫َ‬ ‫ْ‬ ‫ْ‬ ‫َ‬
‫س ِليَّ ِة التِي أثبَتَت تف َُّوق َها‬ ‫َّ‬ ‫َ‬ ‫ْ‬
‫سل ُ‬ ‫َّ‬
‫صيَ ِة الت َ‬ ‫َ‬ ‫َّ‬
‫ير أن ِظ َم ِة الت ْو ِ‬ ‫َ‬ ‫ْ‬ ‫َ‬ ‫ْ‬
‫يرةِ ‪َ ،‬ح ْو َل إِ ْمكَانِيَّ ِة ت َط ِو ِ‬ ‫َ‬
‫صيَ ِة اهتِ َما ًما ُمت َزَ ايِدًا فِي اآل ِونَ ِة اْل ِخ َ‬ ‫ْ‬ ‫ِ‬ ‫َّ‬ ‫َ‬
‫َم َجا ِل أن ِظ َم ِة الت ْو ِ‬ ‫ْ‬ ‫َ‬
‫َاء ِمثْ ٍل َه ِذ ِه اَ ْْل َ ْن ِظ َم ِة‬ ‫ق ِ ِإل ْنش ِ‬ ‫ِ‬ ‫م‬ ‫ِ‬ ‫َ‬ ‫ع‬‫َ‬ ‫ت‬ ‫م‬
‫ُ‬ ‫ال‬ ‫م‬ ‫ِ‬ ‫ُّ‬ ‫ل‬ ‫َ‬ ‫ع‬ ‫َّ‬ ‫ت‬ ‫ال‬‫و‬‫َ‬ ‫ت‬
‫ِ‬ ‫اَل‬ ‫َ‬ ‫م‬
‫َ‬ ‫ت‬
‫ِ‬ ‫حْ‬ ‫َل‬
‫ِ‬ ‫َ‬ ‫ا‬ ‫ب‬
‫ِ‬ ‫ا‬ ‫س‬
‫َ‬ ‫ح‬ ‫ِ‬ ‫ى‬ ‫َ‬ ‫ل‬‫ع‬ ‫ة‬
‫ٍ‬ ‫َ‬ ‫د‬‫ن‬
‫ِ‬ ‫َ‬ ‫ت‬ ‫س‬
‫ْ‬ ‫م‬ ‫ُ‬ ‫ة‬
‫ٍ‬ ‫َ‬ ‫ف‬ ‫ل‬
‫ِ‬ ‫َ‬ ‫ت‬ ‫ْ‬
‫خ‬ ‫م‬
‫ُ‬ ‫يب‬
‫َ‬ ‫ل‬
‫ِ‬ ‫ا‬ ‫س‬
‫َ‬ ‫َ‬ ‫أ‬ ‫ح‬
‫ُ‬ ‫ا‬‫ر‬‫َ‬ ‫ت‬
‫ِ‬ ‫ْ‬
‫ق‬ ‫ِ‬ ‫ا‬ ‫م‬
‫َّ‬ ‫َ‬ ‫ت‬ ‫ْ‬
‫د‬ ‫َ‬ ‫ق‬ ‫و‬ ‫َ‬ ‫‪.‬‬ ‫ة‬
‫ِ‬ ‫َ‬ ‫ي‬ ‫اض‬ ‫ت ا َ ْل َم ِ‬ ‫سن ََوا ِ‬ ‫فِي اَل َّ‬
‫غي ِْرهَا ‪.‬‬ ‫ق أ َ ْكث َ َر فَعَّا ِليَّ ٍة ِم ْن َ‬ ‫ُ ِ‬ ‫ر‬ ‫ُّ‬
‫لط‬ ‫َ‬ ‫ا‬ ‫ض‬ ‫ُ‬
‫‪َ ،‬و ن ِ َ ْ َ‬
‫ع‬ ‫ب‬ ‫د‬ ‫َج‬
‫ت اَ ْلقَانُو ِنيَّ ِة فِي‬ ‫ِي ش َِر َكةٌ نَا ِشئَةٌ ِل ِت ْكنُولُوجْ يَا ا َ ْل َم ْعلُو َما ِ‬ ‫ار َم ْش ُروعٍ بَدَأَتْهُ ‪َ ، Legal Doctrine‬وه َ‬ ‫ط ِ‬ ‫ع َملُنَا ِفي ِإ َ‬ ‫يَ ْد ُخ َل َ‬
‫ول‬ ‫ص ٍ‬ ‫الو ُ‬ ‫ِين تَجْ ِربَ ِة اَلعُ َم ََل ِء ِم ْن ِخ ََل ِل تَ ْس ِهي ِل ُ‬ ‫ْ‬ ‫َ‬
‫ِف َهذَا اَل َم ْش ُروعِ إِلى تَحْ س ِ‬ ‫ْ‬ ‫صة ‪ . legal-doctrine.com‬يَ ْهد َ‬ ‫ً‬ ‫ِير ِمنَ َّ‬ ‫ا َ ْل َجزَ ائِ ِر اَلَّتِي تُد ُ‬
‫ِين‬ ‫س ِلي ٍ يَ ْس َم ُح ِل ْل ُم ْست َْخد ِِمينَ ِبتَحْ س ِ‬ ‫س ْل ُ‬ ‫صيَ ِة ت َ َ‬ ‫ظ ِام ت َْو ِ‬ ‫ير نِ َ‬ ‫ش ِر َكةُ اَلنَّا ِشئَةُ ِإلَى ت َْط ِو ِ‬ ‫ِف اَل َّ‬ ‫صاد ِِر اَ ْلقَانُونِيَّ ِة ‪ِ .‬بالتَّحْ دِي ِد ‪ ،‬ت َ ْهد َ‬ ‫ِإلَى ا َ ْل َم َ‬
‫ْ‬
‫ص ِم ِيم َوتَن ِفي ِذ‬ ‫ع َملنَا ِم ْن تَ ْ‬ ‫ُ‬ ‫ق ‪ ،‬يَتَك ََّونَ َ‬ ‫لسيَا ِ‬ ‫َ‬
‫شك ِل أدَ َّق ‪ .‬فِي َهذا اَ ِ‬ ‫َ‬ ‫ْ‬ ‫يَلتِ ِه ْم بِ َ‬ ‫ض َ‬ ‫اف تَف ِ‬ ‫ْ‬ ‫وص اَلقَانُونِيَّ ِة اَل َجزَ ائِ ِريَّ ِة َوا ْستِ ْهدَ ِ‬ ‫ْ‬ ‫ْ‬ ‫ص ِ‬ ‫اِ ْستِ ْخدَ ِام ِه ْم ِللن ُ‬
‫ُّ‬
‫وص اَ ْلقَانُونِيَّ ِة ‪.‬‬ ‫ص ِ‬ ‫س ِلي ٍ ِللنُّ ُ‬ ‫س ْل ُ‬ ‫صيَ ِة ت َ َ‬ ‫ظ ِام ت َْو ِ‬ ‫نِ َ‬
‫ق‬ ‫لسيَا ِ‬ ‫ق ِل ِ‬ ‫ع ِمي ٍ‬ ‫س ِل َكذَلِكَ ‪ .‬بَ ْينَ َما ا َ ْل َح ُّل اَلثَّانِي يَقُو ُم ِبتَحْ ِلي ٍل َ‬ ‫س ْل ُ‬ ‫ض َّمنُ َم ْبدَأ ُ اَلت َّ َ‬ ‫ص ِفيَ ِة اَلتَّعَ ُاونِيَّ ِة َويَت َ َ‬ ‫علَى اَلت َّ ْ‬ ‫نُقَ ِد ُم َح اَل يَ ْعت َِمدُ َ‬
‫َ‬ ‫َ‬
‫ت ُم ْست ْه ِدف ٍة ‪.‬‬ ‫صيَا ٍ‬ ‫ِيم ت َْو ِ‬ ‫ْ‬ ‫َ‬
‫ع ِل َوتقد ِ‬ ‫س ِل التفَا ُ‬ ‫َّ‬ ‫َ‬ ‫سل ُ‬ ‫ْ‬ ‫َ‬ ‫َ‬
‫على ن َْمذ َج ِة ت َ‬ ‫َ‬ ‫ان َ‬ ‫َ‬ ‫َّ‬ ‫ْ‬ ‫َ‬
‫ت ال ُمخت ِلف ِة ‪ِ .‬كَل ال َحلي ِْن قاد َِر ِ‬ ‫َ‬ ‫َ‬ ‫َ‬ ‫ْ‬ ‫ْ‬ ‫َ‬ ‫َ‬
‫ص ال ُم ْستنَدَا ِ‬ ‫ْ‬ ‫َ‬ ‫صائِ َ‬ ‫ا َ ْلقَانُونِي ِ َويَ ْست َ ِغ ُّل َخ َ‬

‫كلمات مفتاحية‪:‬‬

‫وص ا َ ْلقَانُو ِنيَّةُ ‪ ،‬التَّعَلُّ ِم ال ُمتَعَ ِم ِ‬


‫ق‬ ‫ص ُ‬ ‫س ْل ُ‬
‫س ِليَّ ِة ‪ ،‬اَلنُّ ُ‬ ‫اِ ْه ِت َما َمات ا َ ْل ُم ْست َْخدَ ِم ‪ ،‬أ َ ْن ِظ َمةُ اَلت َّ ْو ِ‬
‫صيَ ِة اَلت َّ َ‬
‫‪.‬‬

‫‪V‬‬
Table des matières
Remerciements I
Dédicaces II
Résumé III
Abstract IV
‫الملخص‬ V
Table des matières VI
Liste des figures X
Liste des tableaux XII
Liste des sigles et des abréviations XIII

Introduction Générale 1

Chapitre I : Synthèse 3
1.1 Introduction 3
1.2 Généralités sur les SR 3
1.2.1 Définitions 3
1.2.2 Notions de base 3
1.2.3 Classification 4
1.2.4 Domaines d'application 4
1.2.5 Systèmes classiques de recommandation 4
1.3 Systèmes de recommandation séquentiels 8
1.3.1 Définition 8
1.3.2 Motivation : Pourquoi les SRS ? 8
1.3.3 Modèles traditionnels de recommandation séquentielle 8
1.3.3.1 Modèles de Chaînes Markoviennes 9
1.3.3.2 Modèles de factorisation matricielle 9
1.3.4 Apprentissage par renforcement 10
1.4 Apprentissage profond dans les SRS 11
1.4.1 Pourquoi l'apprentissage profond ? 11
1.4.2 SRS basés sur les RNN 12
1.4.3 SRS basés sur les CNN 13
1.4.4 SRS basés sur les Graphs (GNN) 14
1.5 SRS basés sur les auto-encodeurs 15
1.6 Modèles d'attention 16

VI
1.6.1 Mécanismes d'attentions vanille 16
1.6.2 Self-attention 16
1.6.3 L'attention par produit scalaire 17
1.7 Métriques d’évaluation 18
1.7.1 Les métriques basées sur les valeurs 18
1.7.2 Les métriques basées sur le classement 18
1.8 Conclusion 20

Chapitre II : Étude de l’existant 22


2.1 Introduction 22
2.2 L'organisme d'accueil 22
2.2.1 Présentation de l'organisme 22
2.2.2 Service d’accueil 23
2.2.4 Les textes juridiques 24
2.3 Description du système actuel 26
2.3.1 La couche métier 26
2.3.2 La couche applicative 28
2.3.3 La couche infrastructure 31
2.4 Solutions envisagées 32
2.4.1 Solution 1 : L’adaptation d’un SRS existant 33
2.4.2 Solution 2 : La mise en place d’un nouveau SRS 33
2.4.3 Solution 3 : L’amélioration du système des mots-clés 35
2.5 Solutions retenues 36
2.6 Revue des objectifs 36
2.7 Conclusion 36

Chapitre III : Conception 37


3.1 Introduction 37
3.2 Expression des besoins 37
3.2.1 Les spécifications fonctionnelles 37
3.2.2 Les spécifications non fonctionnelles 37
3.3 Diagramme de classes 38
3.4 Exploration des données 40
3.4.1 Collecte et stockage des données 40
3.4.2 Visualisation et fouilles des données 41

VII
3.5 Architecture globale 47
3.5.1 Solution 1 : L'adaptation des SRS existants 47
3.5.2 Solution 2 : Le développement d’un SRS à partir du zéro 49
3.5.3 Mise à jour des données 50
3.5.4 Cas d’utilisation 51
3.6 Conclusion 58

Chapitre IV : Réalisation 59
4.1 Introduction 59
4.2 Outils d’implémentation 59
4.2.1 Environnement 59
4.2.2 Exploration et prétraitement 60
4.2.3 Évaluation 60
4.3 Implémentation des modèles existants 60
4.3.1 Bibliothèque RecBole 60
4.3.2 Architecture de la bibliothèque 61
4.3.3 Configuration de la bibliothèque 62
4.3.4 Préparation des données 63
4.3.5 Apprentissage 65
4.4 Réalisation d’un nouveau modèle 68
4.4.1 Architecture 68
4.4.2 Justification du choix 68
4.4.3 Prétraitement des données 69
4.4.4 Création des séquences 70
4.4.5 Encodage des données 70
4.4.6 Construction du modèle 72
4.4.7 Réglage des paramètres (Fine Tuning) 74
4.5 Tests et évaluations 74
4.5.1 Résultats des modèles RecBole 74
4.5.2 Résultats du SRS développé (from scratch) 78
4.6 Conclusion 79

Conclusion générale 80
Bibliographie 82
Document annexe 85

VIII
1. Gestion du projet 86
2. Informations supplémentaires sur RecBole 89

IX
Liste des figures
Figure 1.1 : Illustration de la recommandation basée sur le contenu. 5

Figure 1.2 : Illustration du principe de filtrage collaboratif. 6

Figure 1.3 : Illustration d’un système hybride avec l’implémentation séparée. 6

Figure 1.4 : illustration d’un système hybride implémenté avec l’intégration des
caractéristiques. 7

Figure 1.5: Deux exemples de séquences d'interactions d'utilisateurs. 8

Figure 1.6 : Comparaison des performances du modèle RL avec la méthode des règles
d'association et le filtrage collaboratif. 11

Figure 1.7 : Architecture d'un algorithme de recommandation basé sur le CNN. 14

Figure 1.8 : Architecture d’un Transformer. 18

Figure 1.9 : Attention par produit scalaire. 19

Figure 2.1 : L’organigramme de Legal Doctrine. 24

Figure 2.2 : Processus de choix des préférences. 26

Figure 2.3 : Processus de la veille juridique sur la plateforme legaldoctrine.com. 27

Figure 2.4 : Sous-système de recommandation avec le filtrage collaboratif. 27

Figure 2.5 : Page d’accueil de la plateforme legal-doctrine.com. 29

Figure 2.6 : La page d’actualités. 29

Figure 2.7 : La page des filtres et les préférences. 30

Figure 2.8 : le système de notification de la plateforme. 30

Figure 2.9 : l’infrastructure de la plateforme LD. 32

Figure 3.1 : Diagramme de classes. 39

Figure 3.2 : La répartition des textes par pays sur la plateforme. 41

Figure 3.3 : La répartition des textes juridiques par organismes. 42

Figure 3.4 : Les différents secteurs des textes législatifs. 43

Figure 3.5 : Représentation partiale des textes selon les sous-secteurs. 43

Figure 3.6 : Diagramme circulaire représentant la portion de chaque type d’interaction. 45

Figure 3.7 : Box plot (boîte à moustaches) des nombres d’interactions par utilisateur. 46

X
Figure 3.8 : L’implémentation de plusieurs SR en mode compétitif. 47

Figure 3.9 : L’implémentation de plusieurs SR en mode coopératif. 47

Figure 3.10 : Le traitement des séquences d’items. 48

Figure 3.11 : Processus de choix pour les modèles existants. 48

Figure 3.12 : La séquence d’interaction pour l’utilisateur avec l’identifiant “3214”. 49

Figure 3.13 : L’agrégation d’une séquence d’interaction pour un seul utilisateur. 50

Figure 3.14 : Le processus de mise à jour des modèles. 51

Figure 3.14 : Le diagramme de séquence de la recommandation sur la page d’accueil. 54

Figure 3.15 : Le diagramme de séquence de la recommandation des résultats pour la


recherche. 55

Figure 3.16 : Le diagramme de séquence de la recommandation des résultats pour la


recherche. 56

Figure 3.16 : Le diagramme de séquence représentant le nouveau système de VJ. 57

Figure 4.1 : Architecture globale de RecBole. 62

Figure 4.2 : le flux des données pour la bibliothèque RecBole. 63

Figure 4.3 : Prétraitement et conversion des données pour la bibliothèque RecBole. 64

Figure 4.4 : Les stratégies d’apprentissage par défaut dans RecBole. 65

Figure 4.5 : Illustration des deux techniques d’échantillonnage. 66

Figure 4.6 : Visualisation des résultats du test 1 (lr = 0.001, k=10). 76

Figure 4.7 : Visualisation des résultats du test 1 (lr = 0.001, k=10). 77

Figure 4.8 : Visualisation des résultats du test 1 (lr = 0.001, k=10). 78

Figure a.1 : Planning prévisionnel du PFE. 86

Figure a.2 : Espace Drive principal. 86

Figure a.3 : Contenu du dossier “Rapports”. 89

XI
Liste des tableaux
Tableau I : Les notations systématiques et traditionnelles dans un tableau de contingence
binaire. 19

Tableau II : Une comparaison entre la bibliothèque RecBole et ses antécédents. 61

Tableau III : Les exigences de chaque type de recommandation en fichiers atomiques. 64

Tableau IV : Les paramètres pouvant être impactés par le réglage automatique pour le
modèle BERT4Rec. 67

Tableau V : Aperçu des données d’interaction après le prétraitement. 69

Tableau VI : le Dataframe après la création des séquences. 69

Tableau VII : Les différents paramètres de la couche LSTM. 70

Tableau VIII : Les paramètres intervenant dans le fine-tuning du modèle (solution 2). 73

Tableau IX : Résultats du Fine Tuning des modèles RecBole, LR = 0.001 et topk = 10. 75

Tableau X : Résultats du Fine Tuning des modèles RecBole, LR = 0.001 et topk = 15. 76

Tableau XI : Résultats du Fine Tuning des modèles RecBole, LR = 0.01 et topk = 15. 77

Tableau XII : Résultat de notre modèle en comparaison avec un modèle de référence. 78

XII
Liste des sigles et des abréviations
AE: Auto-Encodeurs.
BERT4Rec: Bi-directional Encoders Representation from Transformers for Recommendations.
BPR: Bayesian Personalized Ranking (ou Classement Bayésien Personnalisé).
BPR-MF: Bayesian Personalized Ranking with Matrix Factorization.
CDA: Chunking Deep Attention.
CNN: Convolutional Neural Networks (Réseaux de Neurones Convolutionnels).
DASRec: Deep Self-Attention for Sequential Recommendation.
FC: Filtrage Collaboratif.
FFN: Feed-Forward Network.
FM: Factorisation matricielle.
FMC: Factorized Markov Chains (Chaînes de Markov Factorisées).
FPMC: Factorized & Personalized Markov Chains.
GCN: Graph Convolutional Networks.
GNN: Graph Neural Networks.
GRU: Gated Recurrent Unit.
IPTV: Internet Protocol Television.
IoT: Internet of Things.
LD: Legal Doctrine
LSTM: Long-short term memory networks.
MAE: Mean Absolute Error
MLE: Maximum Likelihood Estimation (Estimation du Maximum de Vraisemblance).
ML: Machine Learning, ou apprentissage automatique. MRR: Mean Reciprocal Rank.
MSE: Mean Square Error.
NCF: Neural Collaborative Filtering.
NDGC: Normalized Discounted Cumulative Gain.
NLP: Natural Language Processing (Traitement Automatique du Langage Naturel).
PFFN: Position-wise Feed-Forward Network.
PT: Parameter Tuning.
RI: Recherche d’information.
RL: Reinforcement Learning (ou Apprentissage par Renforcement).
RMSE: Root Mean Square Error.
RNN: Recurrent Neural Networks.
SASRec: Self-Attention for Sequential Recommendation.
SGD: Stochastic Gradient-Descent (Gradient descent stochastique).

XIII
SR: Système de recommandation.
SRS: Systèmes de recommandation séquentiels.
SSE-PT: Stochastic Shared Embeddings with Personalized Transformers.
SVD: Singular Value Decomposition.
TF: TensorFlow
TF-IDF: Term Frequency - Inverse Document Frequency.
TFX: Tensorflow Extended
TransRec: Translation Based Recommendation.
UX: User Experience.
VAE: Variation de l’encodeur automatique.
VJ: Veille juridique

XIV
Introduction Générale :
Legal Doctrine est une start-up legaltech qui se spécialise dans la collecte et la mise en
ligne des législations, réglementations et décisions de justice en Afrique. Son objectif principal
est de garantir la transparence et l'accessibilité des droits pour les entreprises et les
administrations. Pour ce faire, l'entreprise utilise des algorithmes d'intelligence artificielle
puissants pour analyser les textes juridiques. Elle met ensuite ces informations à disposition via
un moteur de recherche et un système de veille juridique automatisée, permettant ainsi aux
utilisateurs d'exploiter les données de manière pratique.

Dans le but de fidéliser ses clients et améliorer leur expérience ergonomique, l'entreprise
vise à mettre en place un système de recommandation séquentielle pour les textes juridiques.
Ce projet a pour objectif de faciliter l’accès aux documents, et de proposer des
recommandations de plus en plus pertinentes.

Les systèmes de recommandations séquentielles représentent une nouvelle approche qui


va au-delà des simples interactions entre utilisateurs et articles. Ils cherchent également à
comprendre et à modéliser les comportements séquentiels des utilisateurs, ainsi que l'évolution
de leurs préférences et de la popularité des articles au fil du temps.

Pour alimenter ce système et générer les meilleures recommandations, Legal Doctrine


recueille des informations à partir de l'historique personnel et de l'activité des utilisateurs, en
prenant en compte la temporalité de leurs actions. Cela permettra de générer des
recommandations séquentielles et d'améliorer l'expérience des utilisateurs de manière
significative.

Objectifs :

Dans le but de favoriser l'amélioration continue de la plateforme legal-doctrine.com, notre


mission consiste à analyser, concevoir, développer et mettre en place un système séquentiel de
recommandations pertinentes. Nous visons donc à concrétiser les objectifs suivants :
✔ Réaliser une synthèse sur les différentes approches de recommandation.
✔ Améliorer l’expérience utilisateur par rapport à l’aspect ergonome.
✔ Offrir un système de recommandation qui prend en compte la séquentialité des actions
des utilisateurs.
✔ Déployer la solution sur les micro services de la plateforme.

Structure du rapport :

Le mémoire actuel représente une compilation de notre travail de recherche, et il est


organisé en quatre chapitres selon la structure suivante :
Chapitre I : Synthèse :

1
Ce chapitre consiste en une étude approfondie de la littérature pertinente à notre projet,
où nous avons recensé les différentes recherches liées à notre domaine d'étude. Il portera sur
les points suivants :
● Généralités sur les SR (définitions, notions et classifications)
● Les systèmes séquentiels : principes de fonctionnement.
● L’apprentissage profond dans les SRS.
Chapitre II : Analyse de l’existant :
C’est un passage impératif vers la résolution de notre problématique, nous devons
connaître au mieux l’environnement et le périmètre du projet. Ensuite, nous proposerons
plusieurs solutions adéquates pour enfin déterminer celles qui feront objet de la conception et
la réalisation.
Chapitre III : Conception :
Dans ce chapitre, nous définissons les éléments essentiels de la solution. Il s’agit de la
modélisation abstraite du travail à réaliser avec les différents outils (diagrammes de classes,
modélisation des processus, etc.).
Chapitre IV : Réalisation :
Il contiendra les détails d’implémentations de chaque solution, ainsi que la
méthodologie d’évaluation pour assurer une bonne fonctionnalité.
La dernière partie est consacrée au document annexe.

2
Chapitre I : Synthèse
1.1 Introduction
À mesure que le volume de données disponibles en ligne augmente, les systèmes de
recommandation deviennent de plus en plus essentiels. Il est désormais indispensable d'aider
les utilisateurs à trouver les bonnes informations au bon moment, face à l'expansion des données
à l'ère du Big Data. Depuis l'émergence des sciences cognitives et de la recherche
d'informations, le concept d'assister les utilisateurs avec des suggestions a conduit au
développement de systèmes capables de modéliser chaque utilisateur à travers un profil
comprenant ses informations personnelles et ses préférences. Les premières recherches en
recommandation ont démontré leur capacité à mettre en correspondance le contenu sur le web
avec ces profils [24]. Cependant, en raison de la nature psychologique humaine, il est facile de
constater les limites de la recommandation traditionnelle. Une simple représentation ou
labellisation des intérêts se révèle trop rigide pour s'adapter aux évolutions dynamiques de ces
derniers.
Les récentes avancées scientifiques dans le domaine des systèmes de recommandation
ont porté leur attention sur les modèles séquentiels, visant à extraire des caractéristiques
sophistiquées afin de fournir des recommandations plus précises [2]. L'apprentissage profond
est l'exemple le plus courant, une technologie avancée en constante évolution, qui a également
permis aux systèmes de recommandation séquentiels de progresser. Cela a conduit à la création
d'architectures complexes, mais très efficaces. Cependant, certains problèmes persistent dans le
domaine de la recommandation, notamment lorsqu'il s'agit d'un nouvel utilisateur dont les
préférences sont encore inconnues.
1.2 Généralités sur les SR
1.2.1 Définition

Les systèmes de recommandation sont des programmes qui utilisent des techniques et
des outils pour suggérer des items pertinents aux utilisateurs. Ces suggestions sont basées sur
le processus de décision spécifique, comme l'achat d'un produit ou la sélection d'un film qui
pourrait les intéresser [25].
Le but primaire d'un SR est d'assister les individus dans l'évaluation d'un nombre
énorme de différentes alternatives qui résultent de la quantité massive d'informations circulant
sur le web [25]. Donc, l’idée derrière les systèmes de recommandation est d'extraire uniquement
les éléments les plus pertinents et les plus utiles parmi un large éventail de choix.

1.2.2 Notions de base

● Item : (appelé aussi article ou élément) est le terme qu'on utilise pour désigner tout ce
qu'un système recommande, généralement, ce dernier traite un type spécifique d'items
(produits, articles de news, pistes de musique...), ceci permet au système d'apprendre
toutes les propriétés du modèle de l'item (son design, son interface graphique, etc.) [25].
● Profil utilisateur : il est exprimé par la concaténation des informations personnelles de
cet utilisateur telles que l’âge, le sexe, la zone géographique, etc. avec sa liste d’intérêts
basée sur les mêmes caractéristiques [24].
● Profil item : c’est l’ensemble des caractéristiques de l’item, par exemple, on peut
utiliser les tags pour un produit ou des mots-clés pour un document textuel.

3
● Feedback : c’est la donnée principale qu’on fournit à un SR, on distingue deux types
de feedback [25] :
Le feedback explicite : il est souvent exprimé par une note attribuée ou une appréciation,
on peut également trouver d'autres formes du feedback explicite par exemple des
commentaires qui exprime un avis ou un sentiment.
Le feedback implicite : il est évalué à partir des interactions comme les clics, les vues
etc…

1.2.3 Classification

Il existe deux types de systèmes de la recommandation et qui seront détaillés par la suite [9] :
1- Les systèmes classiques [24] : Basés sur le contenu, le filtrage collaboratif, et des
approches hybrides qui combinent les deux premières techniques de plusieurs manières.
2- Les systèmes séquentiels [1] :
a. Traditionnels : ce sont des techniques basées sur la similarité (entre utilisateurs ou
entre articles) tels que la factorisation matricielle et les chaînes de Markov.
Les modèles avec de l’apprentissage : RNN, CNN, etc. et d’autres qui utilisent de
l’apprentissage profond et qui sont plus avancés (par exemple modèles d’attention).

1.2.4 Domaines d’application :

La recherche sur les systèmes de recommandation se concentre principalement sur la


pratique et les applications commerciales, car elle vise à améliorer concrètement les systèmes
de recommandation utilisés dans le commerce. Nous pouvons identifier des domaines
d'application plus généraux pour les systèmes de recommandation les plus couramment utilisés
[25] :
● Divertissement : recommandations de films, de musique et d'IPTV.
● Contenu : personnalisation des journaux, recommandation de documents,
recommandation de pages Web, applications d'apprentissage en ligne et filtrage des
courriers électroniques.
● E-commerce : recommandations de produits pour les consommateurs, tels que des
livres, des caméras, des ordinateurs, etc.
● Services : recommandations de services de voyage, recommandation d'experts pour des
consultations, recommandation de maisons à louer, etc.
1.2.5 Les systèmes classiques de recommandation

Les systèmes traditionnels constituent les fondements de la recommandation, et certains


de ces anciens modèles sont encore utilisés sur de grandes plateformes telles que YouTube et
Netflix. Même parmi les systèmes récents basés sur des modèles séquentiels, on observe
l'influence des techniques classiques au niveau abstrait. Il est donc essentiel de comprendre les
principes et le fonctionnement de ces approches avant d'aborder la recommandation classique.
À la fin de ce chapitre, vous aurez acquis une compréhension des concepts de base impliqués
dans le processus de recommandation, ainsi que des avantages et des limites de chaque
approche. Trois approches principales sont généralement considérées [24] :
▪ L’approche basée sur le contenu :

4
À l'origine, la recommandation a émergé au sein de la communauté de recherche
d'information (RI) [24]. Le besoin initial était de fournir aux lecteurs les documents appropriés
au bon moment, ce qui a conduit à l'utilisation de techniques similaires dans les deux domaines.
La recommandation de contenus textuels repose sur une comparaison entre le contenu des
documents et les profils des utilisateurs (voir la figure 1.1).
L'interaction d'un utilisateur avec le contenu recommandé entraîne un ajustement positif
(ou négatif) des poids correspondant aux caractéristiques définissant ce contenu dans le profil
de l'utilisateur. Cela permet d'améliorer les recommandations futures [32].

Figure 1.1 : Illustration de la recommandation basée sur le contenu [45]


Cette approche utilise la similarité entre les préférences de l’utilisateur et le contenu des
éléments. La coïncidence entre les caractéristiques des items et le profil de l’utilisateur peut être
mesurée de différentes manières telles que [24] :
● L’indice de Dice.
● Le TF-IDF (Term Frequency - Inverse Document Frequency).
● Techniques basées sur la similarité des espaces vectoriels (approches Bayésiennes,
Arbres de décision, etc.).
▪ Le filtrage collaboratif :
Cette technique diffère de la première, au lieu de suggérer un contenu pareil à celui que
l'utilisateur avait apprécié dans le passé, on recommande des éléments aimés par des utilisateurs
ayant des préférences similaires [32]. En effet, chaque utilisateur aura un ensemble des plus
proches voisins, et son appréciation sera prédite à travers la combinaison des scores attribués
au 'items' par ses voisins. Ces interactions sont stockées dans la « matrice des interactions user-
items ».
Le système tente de trouver des "peers" d’un utilisateur 𝑢, c.-à-d., de différents utilisateurs
qui ont les mêmes préférences (ils ont attribué des notes semblables aux mêmes films). Ensuite,
l'application va recommander les films les plus appréciés par ces "peers". (Comme montré dans
la figure 1.2).

5
Figure 1.2 : Illustration du principe de filtrage collaboratif [45]
Selon [38], les algorithmes de filtrage collaboratif peuvent être regroupés sur deux
(02) catégories : des modèles heuristiques (ou basés sur la mémoire), et d'autres qui sont
basés sur des modèles (model-based).
▪ Les approches hybrides :
Ces approches visent à combiner les deux approches précédentes afin de réduire leurs
limitations et en profitant de leurs caractéristiques, il existe plusieurs manières pour construire
un modèle hybride [24] :

Méthode 1 : Implémenter un système de chaque type séparément, puis, combiner leurs résultats
de prédiction.

Une façon de créer des systèmes de recommandation hybrides consiste à mettre en


œuvre des systèmes collaboratifs et basés sur le contenu séparément. Ensuite, nous pouvons
avoir deux scénarios différents. Premièrement, nous pouvons combiner les résultats (notes)
obtenus à partir de systèmes de recommandation individuels en une recommandation finale en
utilisant soit une combinaison linéaire de notes [37] ou un schéma de vote. Alternativement,
nous pouvons utiliser l'un des systèmes individuels, en choisissant à tout moment d'utiliser celui
qui est "meilleur" que les autres sur la base d'une métrique de "qualité" de recommandation.

Figure 1.3 : Illustration d’un système hybride avec l’implémentation séparée [34]

Méthode 2 : Intégrer quelques caractéristiques d'un type dans un modèle pur de l'autre type.

Good et al. [39] emploient une approche quelque peu semblable en utilisant la variété
de différents filterbots - des agents d'analyse de contenu spécialisés qui agissent en tant que

6
participants supplémentaires dans une communauté de filtrage collaboratif. En conséquence,
les utilisateurs dont les notes concordent avec certaines des notes des filterbots pourraient
recevoir de meilleures recommandations. De même, il est possible d’utiliser une approche
collaborative où le vecteur traditionnel des notes de l'utilisateur est complété par des notes
supplémentaires, qui sont calculées à l'aide d'un prédicteur basé sur le contenu pur [43].

Figure 1.4 : illustration d’un système hybride implémenté avec l’intégration des caractéristiques [34]

Méthode 3 : Construire un modèle qui combine toutes les caractéristiques des deux types.

L'approche la plus populaire dans cette catégorie consiste à utiliser une technique de
réduction de la dimensionnalité sur un groupe de profils basés sur le contenu. Par exemple,
Soboroff et Nicolas [44] ont utilisé l'indexation sémantique latente (LSI) pour créer une vue
collaborative d'une collection de profils d'utilisateurs, où les profils d'utilisateurs sont
représentés par des vecteurs de termes, ce qui entraîne une amélioration des performances par
rapport à l'approche purement basée sur le contenu.

7
1.3 Systèmes de recommandation séquentiels
1.3.1 Définition :

Les systèmes de recommandation séquentielle sont un type d'algorithme de


recommandation qui prend en compte la séquence des éléments avec lesquels un utilisateur a
interagi dans le passé. Ces systèmes sont capables de faire des recommandations personnalisées
en analysant les modèles de comportement d'un utilisateur au fil du temps, tels que les articles
qu'il a consultés, recherchés ou achetés. Ils peuvent également prendre en compte le contexte,
comme l'heure de la journée ou le lieu, pour faire des recommandations encore plus précises.
Un exemple de système de recommandation séquentielle est un service de diffusion de musique
en continu qui suggère des chansons à un utilisateur en fonction des chansons qu'il a
précédemment écoutées et de l'heure de la journée [2].

1.3.2 Motivation : Pourquoi des SRS ?

Figure 1.5 : Deux exemples de séquences d'interactions d'utilisateurs [1]


Les interactions utilisateur-article sont essentiellement séquentielles. C’est-à-dire que
dans le monde réel, les comportements d'achat des utilisateurs se déroulent généralement de
manière successive, plutôt que de manière isolée. Prenons l'exemple des achats de Jimmy de la
figure 1, avant de partir en vacances, Jimmy a réservé un vol, un hôtel et loué une voiture et sa
prochaine action pourrait être de visiter une attraction touristique en conduisant sa voiture. Dans
ce cas, l'hôtel peut être proche de l'aéroport et du lieu de récupération de la voiture louée.
Dans ce scénario, chacune des actions suivantes de Jimmy dépend des actions
précédentes et, par conséquent, les quatre actions sont séquentiellement dépendantes. De même,
nous pouvons voir les dépendances séquentielles dans le cas de Tina. Ce type de dépendances
séquentielles existe couramment dans les données de transaction, mais ne peuvent pas être bien
capturées par les SRS conventionnels basés sur le contenu ou le filtrage collaboratif, ce qui
motive essentiellement le développement des SRS. D’après [1], Il y a deux grandes classes pour
les systèmes de recommandation séquentiels : Des modèles traditionnels et ceux qui sont plus
récents et incorporent des architectures d’apprentissage.

1.3.3 Modèles traditionnels de séquence :

Ce sont les modèles les moins récents, nous trouvons trois types de modèles dans cette classe
qui sont [1] :

8
1.3.3.1 Modèles de chaînes Markoviennes :

Une chaîne de Markov est un modèle stochastique décrivant une séquence d'événements
possibles dans lequel la probabilité de chaque événement dépend uniquement de l'état atteint
lors de l'événement précédent [3].
Supposons que nous ayons un ensemble d'états, 𝑆 = (𝑗, 𝑖𝑛−1 , 𝑖𝑛−2 , . . . , 𝑖0 ). Les chaînes de
Markov suivent la propriété de Markov qui peut être écrite comme :
Pour tout 𝑛 ≥ 1 on a :
𝑃(𝑋𝑛 = 𝑗|𝑋0 = 𝑖0 , . . . , 𝑋𝑛−1 = 𝑖𝑛−1 ) = 𝑃(𝑋𝑛 = 𝑗|𝑋𝑛−1 = 𝑖𝑛−1 ).

Présentation du modèle proposé par Shani :

De nombreuses approches ont été proposées dans la littérature cherchant à unifier la


dynamique séquentielle et les variations des préférences à court terme dans leur conception
pour obtenir une meilleure performance. L'objectif principal de ce système de recommandation
séquentielle est d'avoir l'impression de comprendre l'utilisateur. Ces modèles évaluatifs
séquentiels sont basés sur les chaînes de Markov pour capturer les éléments séquentiels. [4] ont
proposé une approche pour mettre en œuvre les chaînes de Markov. Ainsi, ce modèle est basé
sur un ensemble déterminé selon les k éléments les plus récents (𝑥1 , . . . , 𝑥𝑘 ) afin de calculer la
probabilité d'accès d'un élément qui procède à une séquence d'éléments. La fonction de
transition est déterminée par l'estimation du maximum de vraisemblance (MLE) [5].
Cependant, cette technique présente plusieurs faiblesses [5] :
● Le problème de la rareté des données survient lorsque la plupart des utilisateurs actifs
n'évaluent qu'un petit sous-ensemble des données globales.
● Le système n'intègre pas le facteur temps de manière exacte.
● Le système ne prend en compte que les séquences de 5 éléments, alors que les
utilisateurs peuvent accéder à plus de 5 éléments au cours d'une session.
● Accéder à l'élément x à partir de l'élément y n'est pas la même chose qu'accéder à
l'élément y à partir de l'élément x. Par conséquent, cela va générer un système
compliqué.

1.3.3.2 Modèles de factorisation matricielle :

La factorisation matricielle est une technique utilisée dans les systèmes de


recommandation pour décomposer une grande matrice utilisateur-élément en un espace de
caractéristiques latentes de faible dimension. La matrice utilisateur-élément contient
généralement des informations telles que des évaluations, des vues ou des interactions, et le but
de la factorisation matricielle est de représenter ces données dans un format compact et
interprétable [6].
L'approche la plus courante de la factorisation matricielle consiste à utiliser la
décomposition en valeurs singulières (SVD), qui décompose la matrice utilisateur-élément en
trois matrices : une matrice utilisateur, une matrice élément et une matrice diagonale de valeurs
singulières. Les matrices des utilisateurs et des articles contiennent des caractéristiques latentes
qui représentent respectivement les utilisateurs et les articles, et les valeurs singulières
représentent l'importance de ces caractéristiques.

Présentation des modèles proposés :

9
[7] ont proposé un modèle appelé FPMC, combinant la FM et les chaînes de Markov
pour les recommandations séquentielles, qui a montré de bonnes performances dans la
modélisation des préférences individuelles pour les recommandations séquentielles. Le modèle
proposé par [8], appelé « Fossil », a étendu le FPMC pour souligner l'importance des modèles
séquentiels en introduisant des chaînes de d'ordre élevé et des modèles de similarité. Le résultat
a montré une meilleure performance de recommandation que le premier modèle [9]. Cependant,
elle présente des problèmes plus complexes en termes de rareté des données et de démarrage à
froid. De plus, cette approche est très exigeante en termes de calcul, d'où le problème de
scalabilité [5].

1.3.4 Apprentissage par renforcement :

L'apprentissage par renforcement est surtout connu dans le domaine du Machine


Learning comme un cadre dans lequel des agents apprennent à choisir l'action optimale dans
chaque situation ou état dans lequel ils se trouvent. L'agent est supposé se trouver dans un état
spécifique, à chaque étape, il effectue une action et passe à un autre état. Après chaque
transition, l'agent reçoit une récompense R(s). L'objectif de l'agent est d'apprendre les actions à
réaliser dans chaque état pour recevoir la plus grande récompense cumulée, sur son chemin vers
l'état cible. L'ensemble des actions choisies dans chaque état est appelé la politique de l'agent
[10].

Modèle proposé par Taghipour :

Dans un scénario typique, un utilisateur web visite des pages de manière séquentielle à
partir d'un site web, par exemple les pages a, b, c et d. Chaque page que l'utilisateur demande
peut être considérée comme une étape ou un mouvement dans l’environnement RL. Après
chaque action de l'utilisateur, ce sera autour de l’agent de faire un mouvement [10].
Le but de l’agent est de prédire le(s) prochain(s) mouvement(s) de l'utilisateur avec la
connaissance de la situation actuelle et de ses mouvements précédents. Chaque fois que
l'utilisateur fait un mouvement (demande une page), si l’agent a déjà prédit ce mouvement, il
recevra une récompense, sinon il n'en recevra aucun ou des points négatifs. Par exemple, prédire
une visite de la page 𝑑 après avoir vu les pages 𝑎 et 𝑏 par l'utilisateur dans l'exemple précédent
donne des points positifs à l’agent. Le but ultime de l’agent est d'accumuler le plus de points
possibles [10].
Les performances de ce modèle en termes d’exactitude des recommandations ont été
comparées avec deux autres méthodes : les règles d'association, l'une des approches les plus
courantes dans les systèmes de recommandation, et le filtrage collaboratif. Le modèle se basant
sur l’apprentissage par renforcement a démontré des résultats supérieurs aux deux autres
méthodes :

10
Figure 1.6 : Comparaison des performances du modèle RL avec la méthode des règles d'association et le filtrage
collaboratif [10]

1.4 L’apprentissage profond dans les SRS

1.4.1 Pourquoi l’apprentissage profond ?

L'apprentissage profond est une technique puissante qui peut être utilisée pour
construire des systèmes de recommandation pour plusieurs raisons [11] :
La manipulation de données à grande échelle et à haute dimension : Les modèles
d'apprentissage profond sont capables de gérer des données à grande échelle et à haute
dimension telles que des images, du texte ou de l'audio, qui sont courantes dans les systèmes
de recommandation. Ils peuvent également apprendre des relations complexes et non linéaires
entre les utilisateurs et les articles, que les méthodes traditionnelles peuvent ne pas être en
mesure de capturer.
Personnalisation : Les modèles d'apprentissage profond peuvent apprendre des représentations
des utilisateurs et des articles qui sont utiles pour faire des recommandations personnalisées.
Pour ce faire, le modèle est entraîné sur un ensemble de données d'interactions utilisateur-
article, telles que les évaluations ou les vues, et apprend à prédire l'évaluation qu'un utilisateur
donnerait à un article en fonction de son comportement passé et des caractéristiques de l'article.
Traitement des données séquentielles : Les modèles d'apprentissage profond tels que les RNN
et les LSTM sont bien adaptés au traitement des données séquentielles, et peuvent être utilisés
pour modéliser la séquence des éléments avec lesquels un utilisateur a interagi. Cette approche
est particulièrement utile pour les systèmes de recommandation séquentielle, où l'objectif est
de prendre en compte la séquence des éléments avec lesquels un utilisateur a interagi dans le
passé.
Gestion des données manquantes : Les modèles d'apprentissage profond sont capables de gérer
les données manquantes et peuvent faire des recommandations sur la base des données
disponibles. Pour ce faire, le modèle est entraîné sur un ensemble de données d'interactions
utilisateur-article, telles que les évaluations ou les vues, et apprend à prédire l'évaluation qu'un
utilisateur donnerait à un article en fonction de son comportement passé et des caractéristiques
de l'article.

11
Traitement du problème du démarrage à froid : les modèles d'apprentissage profond peuvent
apprendre des représentations d'utilisateurs et d'articles qui sont utiles pour faire des
recommandations, même lorsqu'il y a peu de données disponibles sur les utilisateurs ou les
articles. Pour ce faire, le modèle est entraîné sur un ensemble de données d'interactions
utilisateur-article, telles que les évaluations ou les vues, et apprend à prédire l'évaluation qu'un
utilisateur donnerait à un article en fonction de son comportement passé et des caractéristiques
de l'article.
Dans l'ensemble, l'apprentissage profond peut être utilisé pour construire des systèmes de
recommandation capables de faire des recommandations personnalisées aux utilisateurs en
analysant les modèles dans leur comportement et les caractéristiques des articles, et également
de traiter des données à grande échelle et à haute dimension, des données séquentielles et des
données manquantes.

1.4.2 SRS basés sur les RNN :

Les réseaux neuronaux récurrents (RNN) sont un type de modèle d'apprentissage


profond qui peut être utilisé pour construire des systèmes de recommandation. Les RNN sont
particulièrement bien adaptés à la modélisation de données séquentielles, et peuvent être utilisés
pour prendre en compte la séquence des éléments avec lesquels un utilisateur a interagi dans le
passé [12].
La particularité des RNN est qu’ils sont dotés d’une ‘mémoire’, c’est-à-dire que les
RNN se souviennent du passé et se basent sur ces souvenirs pour prendre de nouvelles
décisions.
Les réseaux neuronaux récurrents ont une mémoire à court terme. Cela implique qu'un
réseau récurrent oublie ce qu'il a appris précédemment dans une séquence plus longue, et
possède donc une mémoire à court terme. La mémoire à long terme à court terme (LSTM) et
l'unité récurrente à grille (GRU) ont été développées pour remédier au problème de mémoire
dans les réseaux récurrents [12].
Ils résolvent ce problème en l'utilisation de portes, qui peuvent contrôler le flux
d'informations. Les portes ont la capacité de décider quelles données dans la séquence doivent
être conservées ou rejetées, de sorte que les données importantes sont transmises le long de la
longue chaîne de séquences pour faire des prédictions.

Les approches proposées [13] :

Une approche populaire de l'utilisation des RNN dans les systèmes de recommandation
consiste à utiliser un RNN pour modéliser le comportement temporel de l'utilisateur, puis à
utiliser les représentations apprises pour formuler des recommandations. Dans cette approche,
le comportement passé de l'utilisateur, tel que les articles qu'il a consultés, recherchés ou
achetés, est introduit dans un RNN, qui apprend à extraire les caractéristiques temporelles de la
séquence d'articles. Les représentations apprises peuvent ensuite être utilisées pour faire des
recommandations à l'utilisateur en lui suggérant des articles similaires à ceux avec lesquels il a
déjà interagi.
Une autre approche consiste à utiliser des RNN pour modéliser à la fois l'utilisateur et
les séquences d'éléments, puis à utiliser les représentations apprises pour formuler des
recommandations. Dans cette approche, le comportement passé de l'utilisateur et les
caractéristiques des articles sont introduites dans des RNN distincts, qui apprennent à extraire
les caractéristiques temporelles des deux séquences. Les représentations apprises peuvent
ensuite être utilisées pour faire des recommandations en suggérant des éléments identiques à

12
ceux avec lesquels l'utilisateur a déjà interagi et qui sont également similaires aux éléments
avec lesquels l'utilisateur interagit actuellement.
Dans l'ensemble, les RNN peuvent être utilisés pour construire des systèmes de
recommandation puissants, capables de faire des recommandations personnalisées aux
utilisateurs en analysant les schémas de leur comportement dans le temps et en tenant compte
de la séquence des éléments avec lesquels un utilisateur a interagi dans le passé.

Les limites de cette approche [1]

Le RNN n'est pas sans défaut pour les SRS, avec des lacunes sur deux aspects :
1. Il est facile de générer de fausses dépendances en raison de l'hypothèse trop forte que
toutes les interactions adjacentes dans une séquence doivent être dépendantes, ce qui
n'est pas forcément le cas dans le monde réel, car il y a généralement des interactions
non pertinentes ou bruyantes à l'intérieur d'une séquence.
2. Il est probable que l'on ne saisisse que les dépendances ponctuelles, sans tenir compte
des dépendances collectives (par exemple, plusieurs interactions affectent la suivante
de manière collaborative).

1.4.3 SRS basés sur les CNN :

Dans le domaine de la DL, le CNN est l'algorithme le plus célèbre et le plus couramment
utilisé. Le principal avantage du CNN par rapport à ses prédécesseurs est qu'il identifie
automatiquement les caractéristiques pertinentes sans supervision humaine. Les CNN ont été
largement appliqués dans une série de domaines différents, notamment la vision par ordinateur,
le traitement de la parole, la reconnaissance des visages, etc. [14].

Les approches proposées :

Le CNN suit la structure des réseaux neuronaux ordinaires, c'est-à-dire le perceptron


multicouche. La structure de base structure de base du CNN comprend une couche d'entrée,
une couche de convolution (qui comprend comme paramètre les filtres qui sont de nombre et
taille flexible), couche d'activation, couche de mise en commun, couche de connexion complète
et couche de sortie. -Grâce à ces couches, l'algorithme CNN est réalisé [15]. L'organigramme
de l'algorithme de recommandation basé sur CNN est illustré à la figure suivante :

Figure 1.7 : Architecture d'un algorithme de recommandation basé sur le CNN [15]

13
L’algorithme de recommandation basé sur le CNN recommande des éléments à
l'utilisateur cible en suivant principalement les étapes suivantes. Tout d'abord, nous entrons les
attributs des données prétraitées par la couche d'entrée. Ensuite, l’algorithme extrait différentes
caractéristiques de ces données et génère des vecteurs de caractéristiques d'attribut. Ensuite,
l'opération de connexion complète est mise en œuvre pour connecter caractéristiques d'attributs
et générer le vecteur caractéristique de l'utilisateur et le vecteur caractéristique de l'article.
Après cela, l’algorithme utilise les caractéristiques de l'utilisateur et de l'élément pour prédire
l’évaluation de l’utilisateur. Enfin, il sélectionne les éléments du Top-K ayant un haut niveau
de prédiction et qui n'ont pas été évalués par les utilisateurs pour construire les
recommandations [15].
Les algorithmes de recommandation basés sur CNN présentent certains avantages sur les
techniques de recommandation traditionnelles, telles qu'une bonne tolérance aux pannes, un
traitement parallèle et la capacité d'auto-apprentissage. Ils fonctionnent rapidement et ont une
bonne performance adaptative et une haute résolution [15].

Les limites de cette approche [1] :

Les SRS basés sur le CNN ne peuvent pas capturer efficacement les dépendances à long
terme en raison de la taille limitée des filtres utilisés dans le CNN, ce qui limite leurs
applications.
1.4.4 Réseau de neurones Graph (GNN) :
Les réseaux neuronaux graphiques (GNN) sont un type de réseau neuronal qui peut être
utilisé pour traiter des données représentées sous forme de graphes. Un graphe est une structure
de données constituée d'un ensemble de nœuds (également appelés sommets) et d'arêtes qui les
relient et qui représentent les relations entre les nœuds. Les GNN sont particulièrement bien
adaptés à la modélisation de données présentant une structure graphique naturelle, comme les
réseaux sociaux, les pages Web et les structures moléculaires [16].

Les approches proposées :

Parmi tous ces algorithmes d'apprentissage profond, il existe la méthode basée sur
l'apprentissage des graphes, qui considèrent les informations des systèmes de recommandation
du point de vue des graphes.
La plupart des données dans les systèmes de recommandation ont essentiellement une
structure de graphe. Par exemple, les données d'interaction dans une application de
recommandation peuvent être représentées par un graphe bipartite entre les nœuds d'utilisateur
et d'élément, les interactions observées étant représentées par les nœuds d'élément [17].
L'avantage de formuler la recommandation comme une tâche sur des graphes devient
particulièrement évident lorsqu'on incorpore des informations externes structurées, par
exemple, la relation sociale entre les utilisateurs.
De cette façon, l'apprentissage des graphes fournit une perspective unifiée pour
modéliser les abondantes données hétérogènes dans les systèmes de recommandation [17].
Un exemple de système de recommandation basé sur les GNN est l'utilisation d'un
réseau convolutif de graphes (GCN), Graph Convolutional Networks (GCNs) : qui sont basés
sur l'idée des réseaux neuronaux convolutifs et sont utilisés pour extraire des caractéristiques
du graphe. L'idée principale des GCN est d'agréger les caractéristiques des nœuds voisins d'un
nœud et de les utiliser pour mettre à jour la représentation du nœud. Cela permet au GCN
d'apprendre des représentations des nœuds qui capturent la structure du graphe.

14
Par exemple pour modéliser les interactions entre les articles et les utilisateurs sur une
plate-forme de médias sociaux. Le GCN peut apprendre à prédire les éléments avec lesquels
un utilisateur est susceptible d'interagir ensuite en fonction de son comportement passé, comme
les éléments qu'il a aimés, partagés ou commentés [18].

Les limites de cette approche :

Des études récentes montrent que le GNN peut être facilement trompé par une petite
perturbation de l'entrée, c'est-à-dire que les performances du GNN seront grandement réduites
si la structure du graphe contient du bruit. Dans les scénarios de recommandation du monde
réel, il est courant que les relations entre les nœuds ne soient pas toujours fiables. Par exemple,
les utilisateurs peuvent cliquer accidentellement sur les éléments, et une partie des relations
sociales ne peut pas être capturée [17]. En outre, ces dernières années ont vu une augmentation
des efforts de recherche sur les biais de recommandation pour atteindre l'équité. Par exemple,
la performance de la recommandation pour les utilisateurs de différents groupes
démographiques devrait être proche, et chaque élément devrait avoir une probabilité égale
d'exposition. Avec la généralisation des GNN, il y a un risque que les GNN prennent des
décisions discriminatoires [17].

1.5 Systèmes de recommandation basés sur des auto-encodeurs :


Les auto-encodeurs (AE) sont des réseaux neuronaux non supervisés pour
l'apprentissage de représentations de caractéristiques dans le but de réduire la dimensionnalité,
la compression des données ou le dé-bruitage des données. Ils se composent généralement de
deux parties, l'encodeur, qui compresse les données en entrée (dans ce cas les caractéristiques
des éléments et utilisateurs), et le décodeur, qui reconstruit la sortie de l’encodeur de façon à ce
qu’elle soit la plus identique possible à l’entrée d’origine. Ce processus permet à l’auto-
encodeur d’apprendre à construire un vecteur de caractéristique (d’un article ou d’un utilisateur)
le plus représentatif possible [19].

Les approches proposées :

Les auto-encodeurs peuvent capturer les goûts des utilisateurs, les caractéristiques des articles
et la dynamique récente des préférences des utilisateurs et des changements potentiels d'intérêt
dans le temps à partir de données séquentielles [20].
Les encodeurs automatiques (AE) peuvent être utilisés dans les systèmes de recommandation
séquentielle de plusieurs manières différentes :
1- Architecture Seq2Seq : Un modèle de séquence à séquence (Seq2Seq) peut être utilisé pour
construire des systèmes de recommandation séquentielle. Le modèle Seq2Seq est composé d'un
réseau encodeur et d'un réseau décodeur. Le réseau encodeur fait correspondre la séquence
d'éléments d'entrée à une représentation cachée, et le réseau décodeur génère l'élément suivant
de la séquence.
Dans le contexte des systèmes de recommandation séquentielle, le modèle Seq2Seq peut
être entraîné sur un ensemble de données d'interactions utilisateur-élément, comme les
évaluations ou les vues. Le réseau encodeur apprend à encoder la séquence d'éléments avec
lesquels un utilisateur a interagi dans une représentation cachée, qui capture les préférences et
le contexte de l'utilisateur. Le réseau décodeur apprend à décoder la représentation cachée et à
générer l'élément suivant de la séquence [21].

15
2- Variation de l'encodeur automatique (VAE) : Les VAE sont des modèles génératifs, ce qui
signifie qu'ils peuvent apprendre la distribution sous-jacente des données et générer de
nouveaux échantillons de données qui sont similaires à l'entrée. Cela les rend utiles pour des
tâches telles que la synthèse d'images, la détection d'anomalies et les systèmes de
recommandation.
Les VAE peuvent être appliqués à un large éventail de types de données et
d'architectures, notamment les images, le texte, l'audio et les données séquentielles. Ils peuvent
être utilisés avec une variété d'architectures comme les CNN, les RNN et autres.
Les VAE peuvent gérer les données manquantes, ce qui les rend utiles pour les systèmes
de recommandation où les interactions des utilisateurs sont rares.
Dans le contexte des systèmes de recommandation séquentielle, les VAE sont utilisés
pour modéliser la séquence d'éléments avec lesquels un utilisateur a interagi et générer de
nouveaux éléments qui sont identiques aux éléments avec lesquels l'utilisateur a interagi dans
le passé [22].

1.6 Modèles d'attention :


Les modèles d'attention reposent sur l'idée qu'un modèle prête attention à une partie
spécifique lors du traitement d'une énorme quantité d'informations. L'attention neuronale a
connu un succès remarquable dans une variété d'applications d'apprentissage automatique,
particulièrement la modélisation du langage, le sous-titrage d'images et la classification de
textes. Les modèles d'attention sont couramment employés dans les SRS pour mettre l'accent
sur les interactions réellement pertinentes et importantes dans une séquence, tout en minimisant
celles qui ne sont pas pertinentes pour l'interaction suivante. Ils sont largement incorporés dans
les réseaux peu profonds et les RNN pour traiter les séquences d'interaction avec du bruit [1].
Les mécanismes d'attention ont été largement appliqués à la recommandation
séquentielle et sont capables d'identifier des éléments plus "pertinents" pour un utilisateur
compte tenu de son expérience historique. Nous classons ces modèles en fonction du
mécanisme d'attention déployé, en effet, il existe plusieurs types notamment les mécanismes
d'attention vanille et l’auto-attention.

1.6.1 Les mécanismes d'attention vanille :

Le mécanisme d'attention vanille est le type d’attention le plus basique et peut être
utilisé dans les systèmes de recommandation séquentielle pour évaluer l'importance de
différents éléments dans les interactions historiques d'un utilisateur lors de la formulation de
recommandations. L'idée de base est d'apprendre à pondérer différents éléments en fonction de
leur pertinence pour la tâche de faire des recommandations.
Par exemple, un mécanisme d'attention de type vanille peut être utilisé pour évaluer
l'importance de différents éléments dans la séquence d'interactions d'un utilisateur, tels que son
historique d'achat, son historique de recherche et son historique de consultation. Le mécanisme
d'attention peut apprendre à attribuer des poids plus élevés aux éléments qui sont plus
susceptibles d'être pertinents pour les intérêts actuels de l'utilisateur, et des poids plus faibles
aux éléments qui sont moins susceptibles d'être pertinents [2].

1.6.2 Self-attention :

Les mécanismes d'auto-attention permettent au modèle de se concentrer sur n'importe


quel élément de l'entrée, en comparant chaque élément à tous les autres éléments de la séquence.

16
Cela permet aux mécanismes d'auto-attention de peser tous les éléments d'une séquence en
parallèle, au lieu de le faire de manière séquentielle.
L’architecture la plus célèbre qui utilise les mécanismes d’auto-attention est appelée
Transformer, elle a été présentée dans [23] par des chercheurs de Google.
L'architecture d'un transformateur se compose d'un encodeur et d'un décodeur.
L'encodeur génère un vecteur d’attention pour chaque élément de la séquence d'entrée, et le
décodeur génère la séquence de sortie à partir de la séquence de sortie de l’encodeur et de sa
propre entrée. L'encodeur et le décodeur sont composés de plusieurs couches de réseaux
neuronaux à auto-attention et à action directe.
Le mécanisme d'auto-attention des transformateurs est mis en œuvre à l'aide d'une
attention multi-têtes, où plusieurs têtes d'attention sont utilisées pour pondérer différentes
parties de l'entrée. Cela permet au modèle de capturer différents types de relations entre les
éléments d'entrée. Le mécanisme d'attention est également formé en parallèle, ce qui permet au
modèle de traiter l'entrée en parallèle et d'améliorer l'efficacité du calcul.

Figure 1.8 : Architecture d’un Transformer [23].

1.6.3 L'attention par produit scalaire :

L'attention par produit scalaire (Scaled dot-product attention) est un type de mécanisme
d'attention utilisé dans les architectures de réseaux neuronaux, plus particulièrement dans
l'architecture de transformation. Il est utilisé pour pondérer différentes parties de l'entrée en
fonction de leur pertinence pour la tâche à accomplir [23].
Le mécanisme d'attention calcule un ensemble de poids d'attention, qui représentent
l'importance de chaque élément de l'entrée par rapport à la tâche. Les poids d'attention sont
calculés en prenant le produit scalaire d'un vecteur de requête, d'un vecteur clé et d'un vecteur
de valeur pour chaque élément de l'entrée. Le produit scalaire est ensuite mis à l'échelle par la

17
racine carrée de la dimension du vecteur clé pour éviter qu'il ne devienne trop grand, ce qui
pourrait rendre le modèle instable pendant la formation.
Le mécanisme d'attention calcule un ensemble de poids d'attention pour chaque élément
de l'entrée, puis une somme pondérée du vecteur de valeur est effectuée, où les poids d'attention
sont utilisés comme poids dans la somme. Le résultat est une nouvelle représentation de l'entrée
qui est une somme pondérée de l'entrée originale, où les poids sont déterminés par la pertinence
de chaque élément pour la tâche.

Figure 1.9 : Attention par produit scalaire [23].


La fonction « scaled dot-product attention » est définie comme suit :
𝑄𝐾 𝑇
𝐴𝑡𝑡𝑒𝑛𝑡𝑖𝑜𝑛(𝑄, 𝐾, 𝑉) = 𝑠𝑜𝑓𝑡𝑚𝑎𝑥 ( ).𝑉
√𝑑
Où 𝑄 représente les requêtes, 𝐾 les clés et 𝑉 les valeurs (chaque ligne représente un élément).
Intuitivement, la couche d'attention calcule une somme pondérée de toutes les valeurs, où le
poids entre la requête i et la valeur j est lié à l'interaction entre la requête 𝑖 et la clé 𝑗. Le
facteur d'échelle √𝑑 permet d'éviter des valeurs trop grandes du produit interne, surtout
lorsque la dimensionnalité est élevée, ce qui pourrait rendre le modèle instable pendant la
formation. Beaucoup de modèles de recommandation séquentiels utilisent les transformer, tels
que BERT4Rec et SASRec, qui seront utilisés par la suite dans l’implémentation de notre
solution.

1.7 Métriques d’évaluation


Nous trouvons deux grandes classes de métriques1 pour l’évaluation des SR :
1.7.1 Les métriques basées sur les valeurs
C'est-à-dire pour la prédiction de notes, elles comprennent RMSE, MAE, AUC et LogLoss,
mesurant la différence de prédiction entre les valeurs réelles et prédites (l’erreur).
1.7.2 Les métriques basées sur le classement

1
https://recbole.io/docs/user_guide/train_eval_intro.html

18
Utilisées pour la recommandation des meilleurs k éléments, elles comprennent les métriques
les plus courantes liées au classement, telles que Recall, Precision, NDCG et MRR qui mesurent
la performance de classement des listes de recommandation générées par un algorithme.
Il est courant d'introduire les différentes mesures dans le contexte d'un problème de
classification binaire dichotomique, où les étiquettes sont, par convention, + et - et les
prédictions sont résumées dans un tableau de contingence à quatre cellules.
Ce tableau de contingence peut être exprimé à l'aide du nombre de fois où chaque étiquette
prédite est associée à chaque classe réelle, en termes bruts, ou peut être exprimée en termes
relatifs.
Tableau I : Les notations systématiques et traditionnelles dans un tableau de contingence
binaire.

Population totale :
Conditions prédites

P+N
Positif (PP) Négatif (PN)

Vrai positif (VP), hit ou Faux Négatifs (FN), erreur


Conditions réelles

Positif (P) succès. type II (sous-estimation)

Faux positif (FP), erreur du Vrai Négatif (VN), rejet


Négatif (N) type I (fausse alerte ou correct.
surestimation).

● Rappel (ou Recall) :


Le rappel ou la sensibilité [43] (comme on l'appelle en psychologie) est la proportion de cas
réellement positifs qui sont correctement prédits comme positifs. Cela mesure la couverture des
cas concrètement positifs par la règle "P" (positif prédit). Sa caractéristique désirable est qu'elle
reflète combien de cas pertinents sont détectés par la condition réelle “P”. Un rappel plus élevé
indique une couverture plus large des éléments pertinents.
𝑉𝑃
𝑅𝑎𝑝𝑝𝑒𝑙 =
𝑉𝑃 + 𝐹𝑁
● Précision :

Précision ou Confiance [43] (en anglais Confidence) désigne la proportion de cas prédits
comme positifs qui sont réellement positifs. C'est ce sur quoi se concentrent l'apprentissage
automatique, la fouille de données et la recherche d'informations. On peut cependant l'appeler
de manière analogue “Précision des Vrais Positifs”, étant une mesure de l'exactitude des positifs
prédits par rapport au taux de découverte des vrais positifs. Une précision plus élevée indique
une proportion plus élevée d'éléments pertinents dans les recommandations.

19
𝑉𝑃
𝑃𝑟é𝑐𝑖𝑠𝑖𝑜𝑛 =
𝑉𝑃 + 𝐹𝑃
● F-score :

Le score F ou la mesure F est une mesure de l'exactitude d'un test [43]. Il est calculé à partir de
la précision et du rappel du test, où la précision est le nombre de vrais positifs divisé par le
nombre de tous les résultats positifs, y compris ceux qui ne sont pas correctement identifiés, et
le rappel est le nombre de vrais positifs divisé par le nombre de tous les échantillons qui auraient
dû être identifiés comme positifs. La précision est également connue sous le nom de valeur
prédictive positive, et le rappel est également connu sous le nom de sensibilité dans la
classification binaire diagnostique. Le score F1 est la moyenne harmonique de la précision et
du rappel. Il représente donc symétriquement à la fois la précision et le rappel dans une seule
métrique.
𝑃𝑟é𝑐𝑖𝑠𝑖𝑜𝑛 × 𝑅𝑒𝑐𝑎𝑙𝑙
𝐹 − 𝑆𝑐𝑜𝑟𝑒 = 2 ×
𝑃𝑟é𝑐𝑖𝑠𝑖𝑜𝑛 + 𝑅𝑒𝑐𝑎𝑙𝑙
● MRR :
Le MRR (Mean Reciprocal Rank) signifie la moyenne du classement (rank) réciproque par
utilisateur, c.-à-d. Sur une liste de k éléments ordonnés par pertinence pour chaque utilisateur,
RR(u) est la somme de pertinence/classement des items qui constitue la liste des k
recommandations pour l’usager en question. Ensuite, on calcule la moyenne des RR(u) afin
d’arriver à MRR [44]. Une valeur plus élevée de MRR indique que les éléments pertinents sont
classés plus haut, ce qui témoigne d'une meilleure performance.

𝒓𝒆𝒍𝒆𝒗𝒂𝒏𝒄𝒆𝒊
𝑹𝑹(𝒖) = ∑
𝒓𝒂𝒏𝒌𝒊
𝒊≤𝒌
|𝑼|
𝟏
𝑴𝑹𝑹 = ∑ 𝑹𝑹(𝒖)
|𝑼|
𝒖=𝟏

● NDGC :

NDCG mesure la qualité de la liste de classement en tenant compte à la fois de la pertinence


des éléments recommandés et de leur position dans la liste. Il attribue des scores plus élevés
aux éléments pertinents classés plus haut dans la liste. Une valeur de NDCG plus élevée indique
une meilleure qualité de classement des éléments recommandés, voir [48] pour plus de détails
sur les éléments qui construisent cette métrique.

1.8 Conclusion
Comme nous l'avons discuté, les techniques d'apprentissage profond ont grandement
favorisé les études sur la recommandation séquentielle, mais elles sont également
accompagnées de certains défis. Ainsi, nous résumons les problématiques suivantes qui peuvent
être considérées comme des orientations futures pour les systèmes de recommandation
séquentielle basés sur l'apprentissage profond [2] :

20
1. Évaluations rigoureuses et exhaustives entre différents modèles :
Notre étude peut être considérée comme une investigation horizontale entre les modèles
de référence, ce qui a conduit à l'apparition de nombreuses variantes. Par exemple, de
nombreuses variantes de GRU4Rec considèrent GRU4Rec comme modèle de référence, mais
il y a peu de comparaisons entre ces variantes. Dans ce cas, il est difficile de juger lequel est
meilleur dans un scénario d'application spécifique. De plus, d'autres modèles compétitifs
pourraient aussi être pris en compte, par exemple NextItNet (modèle basé sur CNN) et NARM
(modèle basé sur l'attention). Il existe un consensus croissant selon lequel des structures
d'apprentissage profond complexes ne peuvent pas toujours garantir des systèmes de
recommandation meilleurs et plus robustes. De plus, une question cruciale attire de plus en plus
l'attention dans le domaine des systèmes de recommandation : il existe peu de références
efficaces pour l'évaluation, en particulier dans la recommandation séquentielle. Ainsi, des
études de référence pour des évaluations rigoureuses et exhaustives devraient être rapidement
mises à l'ordre du jour de la recherche [2].
2. Systèmes de recommandation séquentielle explicables :
Comme cela a été souligné, la plupart des modèles basés sur l'apprentissage profond
manquent d'explicabilité et sont considérés comme des boîtes noires pour les praticiens et les
utilisateurs des plateformes. Ainsi, la conception de systèmes de recommandation séquentielle
explicables est d'une grande importance. D'une part, sans comprendre les raisons derrière les
prédictions, les utilisateurs hésiteront à faire confiance à une prédiction individuelle et agir en
conséquence [2].
3. Vers des modèles de recommandation séquentielle robustes :
Il est évident qu'un modèle unique ne peut pas garantir des performances cohérentes
dans différents scénarios d'application, car les distributions des données varient. En d'autres
termes, un modèle peut être relativement fragile et vulnérable aux perturbations adverses sur
les échantillons de données (par exemple, des données bruitées ou des attaques intentionnelles
sur le profil de l'utilisateur) [2].
4. Surmonter les défis du démarrage à froid et de la parcimonie des données :
Le démarrage à froid et la rareté des données sont des défis de longue date pour les
systèmes de recommandation, y compris la recommandation séquentielle. La plupart des
algorithmes de recommandation séquentielle existants que nous avons précédemment discutés
ignorent ces deux problèmes, car leur mise en œuvre efficace repose sur des exigences
relativement strictes concernant les données séquentielles (par exemple, l'élimination des
séquences plus courtes qu'un seuil minimal) [2]. Cependant, des travaux plus récents sur cette
question ont donné des résultats intéressants, l'utilisation de méta-apprenants a montré la
possibilité d'adapter plus rapidement les SRS aux séquences des utilisateurs et à leur contexte,
ils peuvent également être facilement intégrés dans n'importe quelle architecture donnée [46].

21
Chapitre II : Étude de l’existant
2.1 Introduction :
Ce chapitre portera sur l’organisme d’accueil qui est Legal Doctrine. Une start-up
spécialisée dans la LegalTech, il s’agit d’une technologie qui devient de plus en plus populaire
dans le domaine de la législation. Dans un premier temps, nous allons présenter l’organisme en
question, ensuite on parlera de la LegalTech qui est son secteur d’activités. Nous mettrons
l’accent sur la présence de LD dans le domaine de la LegalTech et la façon dont elle a pu
atteindre une activité lucrative en facilitant l’accès aux fonds juridiques. L’objectif de cette
étude est de faire un bilan sur les différents aspects qui construisent son système actuel. Nous
allons recenser les points cruciaux qui vont faire objet de la transformation menée par la
réalisation de notre projet de fin d’études.

2.2 L’organisme d’accueil :


Cette section concerne la description de Legal Doctrine ainsi que ses missions et son domaine
d’activité.

2.2.1 Présentation de l’organisme :

Legal Doctrine est une start-up algérienne qui collecte et met en ligne des législations,
réglementations et décisions de justice. Ses activités dépassent le territoire algérien et s'étendent
à certains pays africains (Maroc, Côte d'ivoire...). La Legal Doctrine est installée en Algérie
depuis février 2018.
Afin de faciliter l'accès au fonds juridique, elle dispose des outils puissants basés sur
l'IA pour analyser et récupérer ces textes. Son système comporte un moteur de recherche qui
permet l'exploitation des différents documents assisté par un système de veille juridique
automatisé.
Legal Doctrine a été récompensée pour ses innovations en recevant, deux fois
consécutives, le prix de Best African LegalTech Start-up en 2018 à Zurich, en 2019 à Tunis,
elle est classée parmi les 50 entreprises les plus innovantes de l’année 2020 selon la revue CIO
Mag2.
Leur mission est d’assurer la transparence et l’accessibilité du droit en Afrique pour les
entreprises et les administrations. Leur équipe d’experts mène cette mission dans le strict
respect des valeurs qui caractérisent l’exercice du droit et l’esprit des professions juridiques.

2.2.2 Service d’accueil :

Il est impératif que toute organisation possède une structure qui dicte le rôle et la
contribution de chaque partie interne ainsi que sa hiérarchie, et Legal Doctrine n’est pas une
exception. L’organigramme représenté dans la figure 2.1 décrit au mieux les différents services
et les fonctions au sein de l’organisme :

2
https://cio-mag.com/algerie-legal-doctrine-faciliter-lacces-aux-donnees-juridiques-en-afrique/

22
Figure 2.1 : L’organigramme de Legal Doctrine
Legal Doctrine a connu une croissance en personnel et en fonctions, elle comporte plusieurs
services dont ont peut citer le service commercial, celui responsable de la veille juridique et le
service de communication, leur service technique est réparti sur deux grandes équipe, une qui
travaille sur le développement et la maintenance de la plateforme ainsi que sa sécurité. La
deuxième se charge de l'ingénierie des données et la mise en place des solutions basées sur
l’apprentissage automatique et l’intelligence artificielle.
● Cellule ML Engineering :
Pendant ces derniers mois, nous avons eu la chance d’effectuer notre stage au sein de
l’équipe technique de LD, elle s’occupe du développement et la maintenance de la plateforme.
Plus spécifiquement, nous avons travaillé avec l’équipe data qui est chargée de la conception et
le déploiement des solutions basées sur l’apprentissage et le data engineering, y compris la
recherche et le développement. En effet, notre travail sera orienté dans le domaine de la R&D.

2.2.3 Secteur d’activité :

LD, étant propriétaire de la plateforme legal-doctrine.com, est bien évidemment active


dans le domaine appelé « LegalTech ». Elle est en plein essor et les métiers du droit,
traditionnellement conservateurs, sont sur le point de vivre une mutation profonde. Les besoins
des justiciables en termes d’aides et de soutiens juridiques ont bien évolué au cours de ces
dernières années. L’émergence des nouvelles technologies est en partie responsable de ces
changements. Régler les problématiques courantes du secteur juridique sans l’intervention de
professionnels du droit est la nouvelle tendance. La Legal Tech présente plusieurs avantages
pour les professionnels3 :

3
https://legaldoctrine.medium.com/fusionner-legaltech-et-fintech-pour-franchir-le-dernier-kilom%C3%A8tre-
de-la-bancarisation-en-afrique-e3c7e3769fdf

23
● Alléger la charge de travail des professionnels
Le traitement automatisé permet de bénéficier d’une technologie supplétive destinée à alléger
la charge de travail des professionnels (avocats) en déléguant au maximum : la facturation, le
recouvrement, la rédaction d’actes, les informations clients ou le travail collaboratif.
● Trouver de nouveaux clients
Il est aujourd’hui impossible de se passer des technologies associées au marketing pour gagner
en visibilité. Les plateformes B2B offrent un tremplin incomparable aux professionnels qui
peuvent ainsi bénéficier d’un flux de visiteurs important, remplir leur carnet de contacts et
renforcer leur présence sur la toile. Ce système de mise en relation est également appelé de la
« prévente ».
● Fidéliser la clientèle
La clientèle des avocats est souvent difficile à fidéliser puisqu’il faut rassurer les clients en
fournissant des conseils juridiques de qualité ainsi que des documents régulièrement mis à jour.
Dans les faits, il s’agit de conforter le client dans son choix d’avoir fait appel à vos services en
se construisant une e-réputation. Faire valoir son domaine d’expertise par une présence
régulière sur les réseaux sociaux et médias est donc la stratégie à adopter.
● Gagner du temps
Le temps de traitement des demandes des justiciables varie en fonction de la nature de la
demande, mais aussi de la fréquentation du professionnel. Les technologies permettent de
réduire les heures de travail. L’enjeu de la LegalTech en 2018 est de pouvoir étendre l’usage
de la technologie à d’autres tâches inhérentes aux métiers juridiques.
● Réduire les coûts
Le fait de passer par une consultation à distance permet de mieux maîtriser les coûts. Les
professionnels peuvent en effet adopter une nouvelle façon de travailler et gérer leur planning
comme ils le souhaitent, ce qui leur permet de devenir plus performants. De même, la
dématérialisation permet de créer des supports plus fiables que le papier et de bénéficier de
récentes technologies de stockage de données comme le big data qui résout les problèmes liés
au rangement et classement des archives physiques.
● Être compétitif
Les technologies au service du droit permettent de marquer des points sur la concurrence en
améliorant ses relations clients. La mise à disposition d’outil de comparaison, d’outil de
facturation en ligne accessible aux clients, d’outil d’évaluation (note de satisfaction et avis des
clients) ou de blockchain (renforcer la sécurité des transmissions de données juridiques
confidentielles) sont quelques exemples des applications possibles.

2.2.4 Les textes juridiques :

Notre projet vise à mettre en place un SR. Ce dernier manipule des textes juridiques. Certains
d’entre eux ont une force législative ou juridique plus forte que d’autres. Il en résulte qu’en cas
de contradiction entre deux textes de loi, le plus fort sera applicable et pris en considération.
Ces textes se résument, du plus fort au moins fort, dans [46] :
• La constitution : La Constitution représente le recueil sacré de chaque État. Elle est
considérée comme son identité regroupant son système, religion, langue, pouvoirs, etc. Ainsi,

24
ces textes dits constitutionnels sont nécessairement consacrés dans ce recueil. Pour rappel, la
constitution est le recueil des principes fondamentaux de l’État algérien.
• Accords, conventions et traités internationaux : Ce sont les conventions, traités ou accords
internationaux signés entre le Gouvernement algérien et un état tiers. Ceux-là sont
obligatoirement soumis et conformes aux règles constitutionnelles. Auquel cas, ils seraient
frappés d’inconstitutionnalité.
• Les lois organiques : Les lois organiques sont promulguées dans les domaines prévus par la
Constitution. Ces lois visent à compléter la constitution. Elles interviennent pour régir des
matières sensibles tel que le processus d’élection du président de la République. Ainsi, du fait
que la Constitution prévoit les matières dans lesquelles les lois organiques doivent avoir effet,
elles ont une valeur dite infra constitutionnelle (En dessous de la Constitution) mais supra
législative (au-dessous des autres types de lois).
• Les lois ordinaires : Les lois ordinaires sont celles qui font l’objet d’une proposition émanant
du Parlement ou d’un projet émanant du Gouvernement (Premier ministre). Ainsi, dans la
première hypothèse, on parlera de « proposition de loi », dans la seconde « un projet de loi ».
• Les ordonnances : Les ordonnances sont des actes émanant du Gouvernement portant sur
une matière ou domaine relevant de la compétence du législateur (parlement). Afin qu’elles
soient adoptées, le Gouvernement les soumet au Parlement pour autorisation. Dès lors qu’elles
sont adoptées (ratifiées), les ordonnances ont la même valeur et force que les lois ordinaires.
• Les actes réglementaires : Les actes réglementaires constituent tous les actes à l’origine du
pouvoir exécutif (le Gouvernement). Ces actes sont communément appelés « décrets » exécutifs
et présidentiels. Dans un principe de séparation des pouvoirs, ces décrets portent
nécessairement sur des matières non réservées au pouvoir législatif (Parlement). Ils consistent
de manière générale à mettre en exécution des dispositions législatives, autrement-dit, les lois.
• Jurisprudence : Dans la résolution des litiges, les juridictions doivent interpréter une loi en
vue d’apporter une solution à l’affaire litigieuse. Cette solution ou même décision, présentée
sous forme d’acte, est une jurisprudence. Pour distinguer entre les actes émanant des
juridictions, il existe une terminologie propre à chacune :
- Le tribunal rend des jugements.
- La Cour d’appel et la Cour suprême rendent toutes deux des « Arrêts ».
• Notes, circulaires, avis, arrêtés et instructions : Derniers textes de loi ayant la plus faible
force dans la hiérarchie des normes. Ils émanent des administrations et des ministères et ont une
portée des plus importantes dans les activités de l’entreprise. Ces textes viennent apporter
davantage de précisions que le texte de loi a ignorées.
• Normes : Documents établis par consensus et approuvés par un organisme reconnu, qui
fournit, pour des usages communs et répétés, des règles, des lignes directrices ou des
caractéristiques, pour des activités ou leurs résultats garantissant un niveau d'ordre optimal
dans un contexte donné.

25
2.3 Description du système actuel :
Pour avoir une meilleure compréhension du contexte de notre PFE, une étude globale
de l’architecture doit être conduite. Elle va aborder les différentes couches, les composantes
associées à chaque partie et le fonctionnement de l’existant pour régler le problème de
recommandation au sein de l’activité de LD. Le système actuel ne dispose pas d’un système de
recommandation. Cependant, ceci a fait l’objet d’un PFE effectué par deux (02) étudiantes en
2021, le projet de mettre en place ce travail réalisé est planifié, mais il est encore en phase de
test et évaluation. Par conséquent, nous allons considérer leur solution comme étant
implémentée, elle servira comme une base pour recenser les anomalies et les améliorations
possibles sur l’architecture actuelle.

2.3.1 La couche métier :

D’abord, nous allons traiter la partie métier qui concerne tout processus contribuant à la
recommandation ou le filtrage d’information sur la plateforme. Nous constatons les opérations
suivantes :
a. Filtrage avec préférences
C’est la seule composante du système actuel qui offre un filtre concret du contenu
disponible sur la plateforme. Un usager peut définir la liste de ses préférences sur plusieurs
niveaux, tels que la thématique des textes, les secteurs, les organismes etc. Lors de la
formulation d’une requête utilisateur, le système va exploiter cette fonctionnalité de préférences
afin de filtrer les résultats de la requête. La figure 2.2 illustre le processus décrit sous forme
d’une séquence continue. Par contre, nous précisons que les deux parties du processus sont
indépendantes.

Figure 2.2 : Processus de choix des préférences


b. Système de veille juridique
À chaque fois qu’un nouveau texte est publié sur la plateforme, le système de veille est signalé,
qui à son tour notifie les utilisateurs de cette publication. Cette fonctionnalité est assistée par le
filtrage des préférences afin de décider si un texte correspond à l’ensemble des intérêts pour un
utilisateur donné. La figure 2.3 représente le processus de notification.

26
Figure 2.3 : Processus de la veille juridique sur la plateforme legaldoctrine.com
c. Recommandation avec FC :
Il s’agit d’une des approches de recommandation proposée par nos camarades dans leur PFE en
2021 [46]. Le principe est d'analyser les interactions entre utilisateurs et les textes à l’aide d’un
modèle de filtrage collaboratif classique basé sur l’apprentissage profond, plus précisément,
c’est le modèle NCF. Le schéma dans la figure 2.4 représente le sous-système de filtrage
collaboratif conçu dans le travail mentionné auparavant.

Figure 2.4 : Sous-système de recommandation avec le filtrage collaboratif [46]

27
● Anomalies :
-
Le filtrage par préférences est une forme de recommandation qui n’est pas adaptée au
suivi de l’évolution dynamique des préférences utilisateurs.
- Un utilisateur n’est pas conscient du contenu représenté par chaque libellé de filtre ou
de préférence.
- L’approche NCF est parfois incapable classer un nouvel utilisateur dans une certaine
communauté.
- La plateforme ne dispose pas d’une fonctionnalité pour exprimer le feedback explicite,
il est possible de faire des commentaires. Par contre, il n’y a pas d’analyse au-dessus et
la fonctionnalité d’attribuer des notes n’est pas disponible. Ce qui rend l’utilisation d’un
filtrage collaboratif obsolète.
● Causes :
-
Le filtrage par préférences utilise une représentation statique des profils comme on a vu
précédemment dans le chapitre de synthèse.
- Le NCF reste un type du FC, même s’il incorpore une architecture de neurones, il
souffre des mêmes problèmes qu’un SR classique.
- Selon Steve Jobs4, les gens ne savent pas ce qu'ils veulent jusqu'à ce que vous le leur
montriez. Néanmoins, le filtrage par préférences fonctionne sous l’hypothèse que
l’utilisateur est conscient de tout le contenu disponible et sa classification.
- Les filtres représentent une façon de la recommandation basée sur les règles, donc un
document est exclusivement autorisé ou rejeté.
● Conséquences :
- Les filtres peuvent omettre des documents qui sont susceptibles d’être intéressants pour
un juriste.
- La parcimonie des données et l’insuffisance d’informations sur le feedback explicite
vont impacter la performance du NCF considérablement.

2.3.2 La couche applicative :

❖ Accueil - moteur de recherche :


Il s’agit de sa plateforme « legal-doctrine.com », où chaque utilisateur peut accéder à son propre
espace sous forme d’un abonnement annuel. La fonctionnalité principale est un moteur de
recherche sur une quantité énorme de textes juridiques. La figure 2.5 représente la page
d’accueil lorsqu'on ouvre son espace personnel sur la plateforme.

4
Steve Jobs : Cofondateur, ex-directeur général et ex-président du conseil d'administration de l'entreprise
multinationale américaine Apple Inc.

28
Figure 2.5 : Page d’accueil de la plateforme legal-doctrine.com
❖ Actualités :
Une section est réservée pour la recommandation des tendances de recherche, ce sont les
documents avec le plus grand nombre de recherches effectuées. La recherche avancée permet
de rajouter des filtres sur les métadonnées des textes, un ou plusieurs filtres peuvent être
appliqués sur la même classe des métadonnées (voir la figure 2.6).

Figure 2.6 : La page d’actualités


❖ Filtres et préférences
Initialement, ce sont les textes publiés récemment qui sont affichés. On remarque que la
plateforme supporte des versions multilingues de chaque document. Il est possible d’appliquer
ces filtres d'une manière persistante dans le profil utilisateur.

29
Figure 2.7 : La page des filtres et les préférences
❖ Notifications
Pour assurer la fonctionnalité de veille juridique dont on a parlé dans la première couche du
système. L’équipe de développement a mis en place un système de notifications qui est
déclenché à chaque fois qu’un nouvel article est publié (voir la figure 2.8), l’usager aura le
choix de les recevoir par mail et/ou sur l’application mobile qui est disponible sur Play Store.

Figure 2.8 : le système de notification de la plateforme

30
Le site web offre d’autres fonctionnalités, notamment un espace de discussion pour les membres
qui appartiennent à la même organisation, cette information est renseignée par l’utilisateur lui-
même. Il y a aussi un système d’alertes comme on le fait dans les bibliothèques digitales (par
ex. la ACM Digital Library).
● Anomalies
- Nous trouvons que la partie “tendances recherches” n’apporte aucune pertinence pour
les utilisateurs surtout avec la diversité des domaines et les secteurs.
- Le choix des préférences n’est pas adéquat du côté ergonomique, nous constatons que
la majorité des utilisateurs n’auront pas le temps pour lire les dizaines de secteurs
disponibles par exemple.
- La fonctionnalité de VJ n’est pas optimisée pour correspondre aux actions récentes de
l’usager.
- Il n’y a pas un moyen d’obtenir un feedback explicite auprès des utilisateurs (note,
commentaires).
● Causes
- Les tendances de recherche sont les articles les plus consultés sur la plateforme, cette
liste peut être complètement occupée par la partie la plus active des utilisateurs ayant
les mêmes intérêts.
- Le système de notifications alerte les utilisateurs à chaque publication d’un nouveau
document.
● Conséquences
- Un utilisateur qui n’appartient pas au secteur qui domine la section “tendances
recherche” n’aura aucune valeur tirée. Au contraire, ceci sera considéré comme un bruit.
- Le sous-système de veille juridique produit une redondance d’information, cela
deviendra une nuisance à un certain moment.
2.3.3 La couche infrastructure
La couche applicative de LD est fonctionnelle sur un serveur web hébergé AWS (Amazon web
service) comme illustré dans la figure 2.9 :

31
Figure 2.9 : l’infrastructure de la plateforme LD
Nous recensons les composantes suivantes :
❖ Load Balancer :
L’architecture est dotée d’un équilibreur de charge (ou Load Balancer) qui prévient toute
surcharge du backend, ceci est fait en créant autant d’instances que nécessaire pour répondre
simultanément à plusieurs requêtes utilisateurs.
❖ Composante Redis :
C’est un outil open source mis à disposition pour l’accès rapide aux informations qui ont été
extraits récemment de la base de données documentaire MongoDB.
❖ Elasticsearch :
Le backend comporte globalement deux services, le premier est le Elasticsearch, un
moteur de recherche puissant sur les textes avec une interface HTTP. Il répond à des requêtes
du type JSON, en effet, les résultats seront des documents mis sous le même format.
❖ Service MLaaS :
Le deuxième est MLaaS (ou Machine Learning as a service), mis à disposition par
Amazon, il s’agit des modèles d’apprentissage polyvalents dans le but de réduire les coûts en
ressources. Il permet également de récupérer et traiter les textes avec des algorithmes de l’IA,
à l’aide du S3 (Amazon Simple Storage Service) pour le stockage et le contrôle d’accès sur une
quantité énorme de données.
2.4 Solutions envisagées :
Nous rappelons que l’objectif de notre projet est de concevoir et mettre en place un système de
recommandation séquentiel. Cependant, ceci ne veut pas dire que nous voulons remplacer le
travail réalisé dans le PFE du 2021. Les solutions que nous proposons peuvent être perçues
comme des alternatives qui n’imposent pas une exclusivité d’usage. Afin de traiter les

32
différentes anomalies détectées au sein du système, nous avons considéré les alternatives
suivantes :

2.4.1 Solution 1 : L’adaptation d’un SRS existant.

Après avoir pris en compte les circonstances de la cellule data de LD, cette alternative
ne devrait pas nécessiter d'organiser et de mobiliser toute une équipe pour y travailler. Mais à
la fin, cela répondra au besoin d'avoir un système de recommandation dont les utilisateurs
pourront bénéficier.
Principe :
Cette solution peut servir comme une première étape pour satisfaire le besoin d’avoir
un système de recommandation séquentiel pour les utilisateurs de la plateforme LD. La
recherche sur les SRS a produit pas mal de travaux qui sont accessibles pour l’usage public.
Ces modèles séquentiels suivent une approche similaire à celle du filtrage collaboratif classique.
L’architecture de base considère toutes les interactions comme étant identiques (ayant la même
importance) et elle est dénuée du contexte, c-à-d ce sont des solutions standardisées et leur
utilisation dans une plateforme de diffusion des films ou dans une BDD documentaire sera faite
de la même manière. En effet, il suffit juste d'adapter ces modèles aux données de l’entreprise
afin de pouvoir générer des recommandations.
Ils analysent toutes les séquences d’interactions générées par les usagers pour trouver
les tendances dans les transitions entre les textes consultés. Ensuite, en se basant sur ce que le
modèle a appris, nous sommes capables de proposer une liste des prochains items qui sont
susceptibles d’être intéressants pour un utilisateur donné.
Avantages :
● Les modèles de recommandations séquentiels sont gratuitement accessibles sous forme
de bibliothèques open source.
● Ces bibliothèques sont toujours maintenues et mises à jour.
● Ces modèles sont dans un format standard facile à adapter à n’importe quel type de
contenu.
Limitations possibles :
● La plateforme ne dispose pas d’un module de feedback explicite, en effet, nous
proposons de le mettre en place.
● La qualité des recommandations dépend fortement des données fournies, c-à-d une
parcimonie ou insuffisance des données va poser une difficulté dans l'identification des
tendances.
● La modification de la structure peut s'avérer très difficile : elle dépend de la complexité
des modules et leurs interconnexions. Cependant, si on arrive à le faire, ça peut conduire
à la création d'une architecture entièrement nouvelle, ce qui est contraire au principe
d’utiliser une solution existante.

2.4.2 Solution 2 : La mise en place d’un nouveau SRS.

Principe :
Cette méthode offre la possibilité d'utiliser des données contextuelles telles que le genre
de texte, les domaines d'intérêt et les informations sur l'utilisateur pour effectuer des prédictions

33
adaptées au contexte. Cela implique que le modèle peut prendre en compte d'autres éléments
que les simples interactions entre l'utilisateur et l'article, ce qui permet une analyse plus
approfondie des données. De plus, cette approche est capable de traiter à la fois les interactions
implicites et explicites entre les utilisateurs et les objets.
Nous parlons de créer un système de recommandation séquentielle complet à partir de
zéro, ce qui serait une solution plus sophistiquée qui prendrait en compte le contexte de
l'activité de l'entreprise. Il serait destiné à donner des suggestions de textes juridiques aux
utilisateurs qui sont censés être des spécialistes du droit.
Avantages de l'approche :
● Capture des relations complexes :
L'utilisation de transformateurs permet au modèle de capturer des relations complexes
entre les caractéristiques, ce qui lui permet de capturer efficacement les dépendances et les
interactions à long terme. Il est donc bien adapté aux systèmes de recommandation, où les
relations entre les utilisateurs, les éléments et leurs attributs peuvent être complexes et non
linéaires.
● Traitement des données séquentielles :
Les transformateurs sont particulièrement aptes à traiter les données séquentielles, ce
qui est essentiel pour les systèmes de recommandation. Ils peuvent modéliser efficacement la
dynamique temporelle et capturer des modèles séquentiels dans le comportement des
utilisateurs, ce qui permet d'obtenir des recommandations plus précises et plus personnalisées.
● Traitement de diverses caractéristiques d'entrée :
Les transformateurs peuvent gérer un large éventail de caractéristiques d'entrée,
notamment des variables catégorielles, des attributs numériques et des données séquentielles.
Cette flexibilité permet au modèle d'intégrer différents types d'informations, tels que les genres
d’article, les caractéristiques démographiques des utilisateurs ou les schémas temporels des
interactions entre l'utilisateur et l'article, ce qui le rend plus robuste et adaptable à différents
scénarios de recommandation.
● Intégration d'un contexte supplémentaire :
Les transformateurs peuvent facilement intégrer des informations contextuelles
supplémentaires susceptibles d'améliorer le processus de recommandation. Par exemple,
l'intégration d'informations temporelles (par exemple, l'heure de la journée ou la saison) ou de
facteurs contextuels (par exemple, la localisation de l'utilisateur ou son activité actuelle) peut
améliorer la pertinence et la personnalisation des recommandations.
Limites de l'approche :
● Besoins importants en mémoire :
Les transformateurs peuvent avoir besoin de beaucoup de mémoire en raison de leur
mécanisme d'auto-attention, qui nécessite de stocker les poids d'attention pour tous les éléments
d'entrée. Cela peut s'avérer difficile lorsqu'il s'agit d'ensembles de données à grande échelle ou
de ressources informatiques limitées.
● Complexité de l'apprentissage :
L'apprentissage des transformateurs peut être coûteux en temps et en ressources, en
particulier pour les architectures profondes et complexes. Un réglage approfondi des hyper
paramètres et des expérimentations peuvent être nécessaires pour obtenir des performances
optimales.

34
● Disparité des données :
Les systèmes de recommandation souffrent souvent de problèmes de disparité des
données, lorsque certains utilisateurs ou éléments ont des interactions limitées ou inexistantes.
Les transformateurs peuvent avoir du mal à apprendre efficacement à partir de données éparses,
ce qui entraîne des difficultés pour générer des recommandations précises pour les utilisateurs
ou les éléments disposant d'informations limitées.

2.4.3 Solution 3 : L’amélioration du système des mots-clés.

Il s’agit d’une partie de la solution proposée par les étudiants de l’ESI en 2021. Le
modèle de filtrage collaboratif qu’elles ont conçu est censé être alimenté par un système de
mots-clés. Nous trouvons l’idée d’utiliser les mots-clés dans la présence d’un contenu purement
textuel très efficace et très puissante, elle va certainement enrichir les caractéristiques des
documents ce qui rend chacun d’eux unique. Cependant, nous trouvons que cette efficacité peut
aller plus loin avec l’incorporation du concept de la séquentialité.

2.5 Solutions retenues :


Avant de passer aux solutions qu’on avait choisi de concevoir et d’implémenter, nous allons
d’abord expliquer les critères qui ont influencé notre choix, ils sont comme suit :
● La disponibilité :
Il s’agit de la disponibilité de plusieurs aspects, tels que les références et les ressources qui
permettent d’explorer des solutions similaires. Dans le cas de la troisième solution, il se trouve
que l’accès au travail fait en 2021, plus spécifiquement au code, était impossible. Ce qui a rendu
cette solution peu probable. Par contre, si on prend la première solution, nous avons découvert
que les travaux les plus courants sur les SRS sont accessibles et prêts à être utilisés. De plus,
même si les versions originales ne sont plus à jour, il existe plusieurs bibliothèques open source
qui s’occupent de leur maintenance.
● La faisabilité :
Ce critère est lié plus au temps accordé pour la réalisation de notre PFE, nous avons considéré
l'éventualité de “reconstruire” la solution basée sur les mots-clés afin de l’améliorer. Cependant,
et après avoir consulté l’avis professionnel de l’équipe ML, ceci n’est pas faisable dans
quelques mois et nous pourrons arriver à des impasses, ceci sera une grande perte de temps. La
construction d’un modèle à partir du zéro semblait plus faisable, comme c’est une solution
basée sur l’apprentissage automatique, on pourrait commencer par une architecture simple,
ensuite, nous essayons d’enrichir et d’améliorer celle-là. Pour ce qui est de l'adaptation des SRS
existants, les bibliothèques consultées ont montré une simplicité d’usage avec des
documentations au-dessus, qui facilitent ce processus. En effet, nous avons choisi de retenir les
solutions suivantes :
❖ Solution 1 : L’adaptation d’un SRS existant
❖ Solution 2 : La mise en place d’un nouveau SRS.
Nous souhaitons atteindre la possibilité de coexister les deux solutions. De plus, la première
peut devenir une référence pour savoir où se situe notre propre modèle par rapport aux
architectures de base en termes de performance.

35
2.6 Revue des objectifs :
Les objectifs de notre projet restent inchangés, néanmoins nous allons vous les rappeler :
✔ Réaliser une synthèse sur les différentes techniques de recommandation.
✔ Améliorer l’expérience utilisateur par rapport à l’aspect ergonome.
✔ Offrir un système de recommandation qui prend en compte la séquentialité des actions
des utilisateurs.
✔ Déployer la solution sur les micro services de la plateforme.
Au cours de la conception et de la réalisation de ce projet, nous pourrions suggérer quelques
ajustements aux fonctionnalités existantes si nous jugeons qu'ils sont complémentaires à notre
architecture, par exemple, la solution des SRS existants peut largement bénéficier d’une
fonctionnalité qui permet à un utilisateur d’exprimer son appréciation explicitement avec une
note.

2.7 Conclusion
Dans cette étude de l'existant, nous avons passé en revue les différentes couches du
système, à savoir la couche métier, la couche applicative et la couche infrastructure. Notre
objectif était d'identifier les problèmes existants qui entravent l'efficacité et la performance du
système. Au cours de cette analyse approfondie, nous avons relevé plusieurs défis et lacunes
qui nécessitent une attention particulière. Ces problèmes ont un impact significatif sur la qualité
des opérations et peuvent entraver la croissance et le développement futurs du système.
Dans le chapitre suivant, nous nous concentrerons sur la conception des solutions
retenues, en tenant compte des meilleures pratiques et des technologies actuelles. Elle sera
guidée par les enseignements tirés de l'étude de l'existant, dans le but ultime d'améliorer les
performances globales du système et de fournir une expérience utilisateur optimale. Nous
visons à fournir une architecture améliorée qui répondra aux exigences fonctionnelles et non
fonctionnelles du système, tout en assurant une évolutivité, une fiabilité et une facilité de
maintenance accrues.

36
Chapitre III : Conception
3.1 Introduction
Dans ce chapitre, nous présentons les éléments nécessaires pour la conception de nos
solutions proposées, tout en exploitant ce qui a été appris à travers l’analyse de l’existant. Nous
commencerons par les spécifications du nouveau système, ensuite, nous passerons à
l’élaboration du diagramme des classes qui définit au mieux les bordures du système cible.
Cette partie sera renforcée par une section qui contient toutes les informations sur les données
exploitées pour l’implémentation de notre modèle de recommandation. Enfin, nous allons
exposer deux solutions, l’approche suivie, ainsi que les avantages et les critiques qui seront
soulignés pour chacune.

3.2 Expression des besoins


Au cours du chapitre précédent, nous avons défini le périmètre de ce projet, ce qui inclut
la description du système existant et ses limitations. Dans cette section, nous allons donner une
idée sur le travail qui doit être fait, c.-à-d. Les spécifications fonctionnelles et non fonctionnelles
de notre modèle de recommandation.

3.2.1 Les spécifications fonctionnelles

Il s’agit des fonctionnalités attendues du nouveau système lorsqu’il est testé et déployé,
indépendamment de son architecture et la façon de son implémentation. Les spécifications
principales sont les suivantes :
1. Le système doit fournir des recommandations pour un utilisateur à l’ouverture de
son espace LD.
2. Le système doit assurer la pertinence des résultats de recherches effectuées par un
utilisateur.
3. Le système doit être capable d’intervenir dans le système de veille juridique pour
décider si le nouveau texte est pertinent ou pas pour tel utilisateur.
4. Le système doit suivre les actions d’un utilisateur et faire des recommandations au
cours de la session, selon les articles consultés dans la même session.
5. Le système doit analyser l’ensemble des interactions entre les utilisateurs de la
plateforme et les textes juridiques.

6. Le système doit être un modèle de recommandation séquentielle.

3.2.2 Les spécifications non fonctionnelles

Maintenant que nous avons établi l’ensemble des fonctionnalités de notre système, il est
temps de se familiariser avec les contraintes imposées sur le développement de nos solutions :

1. Le système doit être développé avec le langage Python.

2. Le système doit adopter une architecture d’apprentissage.

37
Nous rappelons que notre travail est principalement orienté vers la recherche et le
développement, en effet, nous sommes peu restreints par les contraintes (fonctionnelles et non
fonctionnelles). La finalité de notre projet est de trouver des SRS qui sont les plus adaptés aux
données et aux besoins de LD. L’approche que nous avons suivie au cours de ces derniers
mois était basée plus sur l’essai et l’erreur.

3.3 Diagramme de classes


Il est important de connaître les parties intervenantes dans notre système vu qu’elles
sont impactées par les transformations que le système va subir suite au travail fourni. Une
meilleure façon de visualiser ces parties sur ce niveau abstrait est l’élaboration d’un diagramme
de classes. Le diagramme illustré par la figure 3.1 décrit la manière d’interactions entre les
acteurs et celles des acteurs avec le système :

38
Figure 3.1 : Diagramme de classes

39
Il s’agit d’une description abstraite des entités présentes dans le système. Notre projet
va porter plus sur la mise en place d’un nouveau composant qui fera une interface entre les
utilisateurs et les textes, c’est la recommandation. Toute classe représentée dans le diagramme
peut servir comme une information contextuelle capable d’enrichir notre solution. L’interface
de recommandation aura une interaction directe avec les utilisateurs, comme elle peut être
exploitée par d’autres fonctionnalités existantes. Nous recensons les éléments suivants :
❖ Pays : La présence de cette entité est titulaire, c.-à-d. Elle est là pour tracer les bordures
entre les différents pays, comme chacun possède sa propre constitution et ses propres lois
organiques.
❖ Organisme : Similairement au pays, l’appartenance d’un document à un organisme donne
une idée générale sur le secteur ou le thème concerné.
❖ Secteur : Il existe plusieurs secteurs tels que le commerce, la finance, l’agriculture etc.
Ceci a donné naissance à la nécessité de regrouper les articles selon ces domaines pour
qu’on puisse les cibler facilement par les spécialistes.
❖ Thématique : Cette entité donne plus de précision dans un secteur sur le problème traité.
❖ Type de document : Un document juridique peut prendre plusieurs formats selon son type,
il y a ceux qui possèdent un format standard (titre, date, contenu …) et d’autres qui sont
encore répartis sur plusieurs articles.
❖ Utilisateur : C’est l’acteur principal dans le système, tous les utilisateurs sont représentés
par un seul profil. L'échange consiste à acheter un abonnement et en retour, obtenir un
accès à la base de données des fonds juridiques.
❖ L’interface “IConsultDoc” : C’est la fonctionnalité principale du système, actuellement,
elle est le seul lien qui lie les utilisateurs avec les textes juridiques. Elle offre la possibilité
d’effectuer des recherches.
❖ L’interface “IRecommendDoc” : Elle représente le point focal de notre projet, c’est une
fonction support qui va assister l’interface principale de la recherche documentaire.
Néanmoins, elle pourra interagir directement avec l’utilisateur, ce point sera détaillé plus
dans les cas d’utilisation.

3.4 Exploration des données :


Cette partie sera dédiée à l’étude de l’information circulant dans la plateforme de Legal
Doctrine. C’est un aperçu sur la manière de collecter et de stocker des données opérationnelles.
Ensuite, une analyse statistique sera faite sur ces dernières pour mieux comprendre le contexte
du projet.

3.4.1 Collecte et stockage des données :

La plateforme LD contient des millions de textes du droit national et international, de


différents domaines, avec des milliers d’utilisateurs. Les données proviennent de plusieurs
sources telles que la plateforme elle-même, les algorithmes de veille automatique pour la
collecte des textes juridiques et bientôt l’école supérieure des avocats. Son infrastructure est
dotée d’une base de données NoSQL MongoDB qui facilite la collecte des données structurées
et non structurées.
Afin de réaliser notre PFE, nous avons eu accès à une bonne portion des données
d’interactions entre les utilisateurs et les textes durant la période début 2020 et fin 2022. Elle
contient un ensemble de 3972 utilisateurs et 27238 documents.

40
3.4.2 Visualisation et fouilles des données :

Dans ce qui suit, nous allons explorer la variété des textes présents dans la portion
fournie par l’équipe data. Cette étape permettra de découvrir la diversité statistique des
informations et les possibilités de les exploiter plus tard dans nos solutions.
● Les textes par pays :
L’échantillon comporte des textes appartenant à plusieurs pays, bien sûr avec le nombre des
textes algériens qui dépasse largement le reste des nations, comme montré dans la figure 3.2.

Figure 3.2 : La répartition des textes par pays sur la plateforme


La codification des pays est comme suit :
CI : Côte d'Ivoire, CM : Cameroun, DZ : Algérie, INT : International, MA : Maroc
SN : Sénégal, TN : Tunisie.
● Les textes par organisme :

41
Dans l’échantillon qui nous a été fourni, il y a 396 organismes appartenant à la variété des pays
présentée au-dessus, nous avons choisi de représenter ceux qui ont les plus grands nombres de
textes sur la plateforme (figure 3.3).

Figure 3.3 : La répartition des textes juridiques par organismes


● Les secteurs :
Les secteurs peuvent être perçus comme un autre axe capable de définir les centres d'intérêts
pour les utilisateurs de la plateforme. Avec plus de 30 différents secteurs, ils nous donneront
une grande opportunité pour intégrer la personnalisation des recommandations fournies par
notre solution plus tard. Nous trouvons parfois des textes qui tombent sous plusieurs secteurs à
la fois (voir la figure 3.4).

42
Figure 3.4 : Les différents secteurs des textes législatifs
● Les sous-secteurs :
Afin d’assurer une meilleure précision pour ce qui concerne les domaines visés par ces
documents juridiques, les secteurs sont encore répartis sur plusieurs sous-secteurs, nous
choisissons de montrer les sous-secteurs qui ont une grande présence sur l’espace de LD :

Figure 3.5 : Représentation partiale des textes selon les sous-secteurs


● Les intéractions :

43
Ce sont les informations et les données qui seront le coeur de notre solution, grâce aux efforts
de l’équipe du développement et le data engineering, la plateforme permet de capturer une
variété des feedbacks implicites fournis par les utilisateurs, il existe quatre (04) types
d’interactions :
❖ Lire : Au moment où un utilisateur clique sur un document pour le consulter, le
système enregistre cette action dans une table ou toutes les lectures sont stockées, ces
informations sont les suivantes :
“_id” : l’identifiant de l’interaction.
“user” : l’identifiant de l’utilisateur.
“text” : l'identifiant du texte consulté (ou lu).
“createdAt” l’instant de création de l’interaction.
❖ Ajouter aux favoris (ou Bookmark) : Cette fonctionnalité donne plus d’informations
sur les préférences de l’usager par rapport à la lecture, elle est plus proche d’un
feedback explicite, néanmoins, elle reste une interaction implicite, les mêmes
informations que dans une interaction de lecture sont enregistrées cette fois sous la
table appelée “Bookmarks”.
❖ Partager : Parfois, l’utilisateur peut trouver un document intéressant pour lui et pour
sa communauté ou l’organisme auquel il appartient, c’est pour ça que LD offre la
possibilité de partager un texte juridique. Au moment de l’interaction, les données
suivantes sont enregistrées dans la table appropriée :
“_id” : l’identifiant de l’interaction.
“user” : l’identifiant de l’utilisateur.
“text” : l'identifiant du texte à partager.
“createdAt” l’instant de création de l’interaction.
“platform” : la plateforme utilisée pour ce partage (par exemple mail, Facebook,
etc.).
❖ Copier : Dans le cas où un utilisateur est intéressé seulement par une partie d’un texte
donné, nous sommes capables de déterminer cette partie, la table “copies” est
composée des colonnes suivantes :
“_id” : l’identifiant de l’interaction.
“user” : l’identifiant de l’utilisateur.
“text” : l'identifiant du texte qui contient la partie copiée.
“createdAt” l’instant de création de l’interaction.
“content” : le contenu textuel de la partie copiée.

44
Le diagramme circulaire dans la figure 3.6 représente la répartition des textes selon le type
d’interaction.

Figure 3.6 : Diagramme circulaire représentant la portion de chaque type d’interaction

On remarque que la majorité des interactions sont des lectures (environ 80%), ce qui peut
poser un défi si on souhaite juger si tel article était intéressant pour tel utilisateur. Pour une
meilleure compréhension de la distribution des données, nous introduisons le “box plot”
suivant :

45
Figure 3.7 : Box plot (boîte à moustaches) des nombres d’interactions par utilisateur
Le schéma a été réduit pour ne pas perdre de l’espace. On note une grande disparité entre les
différents points qui représentent les utilisateurs. Ce qui est devenu très apparent après avoir
calculé les statistiques suivantes :
- Moyennement, chaque utilisateur a eu 63 interactions.
- L’écart type est de 310.
- Il y a 874 utilisateurs qui ont eu une (01) seule interaction.
- Le plus grand nombre d’interactions est de 11 024 pour l’utilisateur ayant l’identifiant
2963.
- Il y a 3237 utilisateurs qui ont eu moins de 50 interactions avec les textes pendant la
période “Début 2020 - Fin 2022”.
Par contre, il faut se rappeler que nous avons eu seulement une portion des données. Certes,
ceci peut impacter largement la performance de la solution, cependant, les données complètes
peuvent montrer une disparité inférieure et donc elles vont améliorer les résultats lorsque les
modèles sont concrètement déployés.

46
3.5 Architecture globale :
Grâce à l’astuce d’hybridation des modèles classiques, il est possible de faire coexister
les deux solutions retenues. Une première manière peut être l’utilisation de plusieurs SR en
mode “compétitif” comme il est montré dans la figure 3.8, où on passe la même information
en entrée de façon parallélisée sur les modèles et à la fin, nous allons choisir les résultats qui
portent les meilleurs scores de pertinence.

Figure 3.8 : L’implémentation de plusieurs SR en mode compétitif


Un autre manière est le traitement séquentiel de l’information pour altérer et améliorer
les scores de pertinence. Par exemple, nous sommes capables de filtrer une grande partie de
l’information initiale à l’aide d’un modèle basé sur le contenu et puis nous utilisons un SR
séquentiel pour repérer les articles les plus intéressants parmi les résultats du filtre (voir la
figure 3.9)

Figure 3.9 : L’implémentation de plusieurs SR en mode coopératif.

3.5.1 Solution 1 : L'adaptation des SRS existants

On rappelle du principe de cette solution, elle est basée sur l’usage d’un ou plusieurs modèles
séquentiels qui existent déjà sous forme de bibliothèques, ils adoptent une approche similaire à
celle du filtrage collaboratif classique. L'architecture de base considère que toutes les
interactions ont la même importance. Ces modèles analysent les séquences d'interactions
générées par les utilisateurs afin de détecter les tendances dans les transitions entre les textes
consultés. En se basant sur ces apprentissages, le modèle est en mesure de proposer une liste
des prochains éléments susceptibles d'intéresser un utilisateur spécifique. La figure 3.10 illustre
cette approche de manière optimale :

47
Figure 3.10 : Le traitement des séquences d’items [47]
Dans l’espace de recommandation, les données d’interaction pour un usager est définie par la
transition entre les textes 𝒗𝒊 . Cette séquence est souvent découpée en plusieurs séquences selon
les contraintes imposées par l’architecture d’un modèle choisi. Le découpage reflète le
problème du traitement des longues séquences comme on a discuté dans le premier chapitre.
Les modèles seront entraînés pour faire des prédictions sur le prochain texte dans une séquence
utilisateur. Généralement, les bibliothèques proposent une variété des SRS, en effet, nous
aurons besoin de mettre en place un processus de sélection.
Processus de sélection d’un modèle :
Afin de choisir un modèle adéquat, nous allons suivre un processus itératif. Comme montre la
figure 3.11 ci-dessous :

Figure 3.11 : Processus de choix pour les modèles existants

48
Après la fin d’exécution, nous allons sortir avec le modèle le plus approprié pour la
recommandation sur la plateforme, ainsi que la configuration qui a permis l'obtention de ces
résultats.

3.5.2 Solution 2 : Le développement d’un SRS à partir du zéro

L'approche attribue différents poids aux différentes actions. Cela signifie que certaines
actions de l'utilisateur peuvent avoir plus d'importance ou de pertinence pour prédire les
évaluations des articles. En attribuant des poids appropriés, le modèle peut donner la priorité et
mettre l'accent sur les actions qui ont une plus grande influence sur les prédictions, ce qui
permet d'obtenir des recommandations plus précises et plus personnalisées. La figure 3.12
illustre la façon dont une séquence d’interaction est analysée pour cette solution :

Figure 3.12 : La séquence d’interaction pour l’utilisateur avec l’identifiant “3214”


Agrégation des interactions :
Un autre point important est la possibilité d’agréger, dans une mesure, les données des
séquences à long terme avant de faire l’apprentissage (voir la figure 3.13).

49
Figure 3.13 : L’agrégation d’une séquence d’interaction pour un seul utilisateur.
Pour un document ‘D’ donné, nous allons considérer seulement l’instant de l’interaction la plus
récente d’un usager U avec cet objet. Ceci permet de capturer l’importance du document en
termes de récence, en utilisant la somme des poids de toutes les actions sur le même texte, nous
pourrons garder son importance sur le long terme (au cours de tout l’historique de l’utilisateur
‘U’). La fonction d’agrégation ressemble à la suivante :
𝑦 = 𝑙𝑜𝑔2 (𝑎. 𝑤1 +𝑏. 𝑤2 + 𝑐. 𝑤3 + 𝑑. 𝑤2 + 1)
Où ‘a’, ‘b’, ‘c’ et ‘d’ sont les nombres d’interaction du type ‘Lecture’,’Partage’, ‘Copier’ et
‘Bookmark’ respectivement. La fonction 𝑙𝑜𝑔2 est utilisée pour effectuer un lissage des
données, surtout avec la présence de plusieurs points aberrants qui impactent la qualité des
données.

3.5.3 Mise à jour des données

C’est la phase du rappel (en anglais recall), elle est mutuelle entre toutes les solutions
implémentées, il s’agit de l’opération de mise à jour des SR lors de l’arrivée des nouvelles
données d’interaction. L’opération doit être régulièrement exécutée (programmée chaque 1 ou
2 mois), le but est d’adapter la solution aux informations les plus récentes dans l’historique
d’interaction pour assurer que les recommandations restent pertinentes et à jour (voir la figure
3.14).

50
Figure 3.14 : le processus de mise à jour des modèles

On doit noter que l’apprentissage ici peut suivre le même processus itératif décrit dans la
sous-section 3.5.2.2 sur le choix des modèles, nous pouvons essayer plusieurs configurations
pour les mêmes modèles implémentés, la décision sera de remplacer les configurations (voire
remplacer tout un modèle) ou de garder l’état précédent de la solution.

3.5.4 Cas d’utilisation

Dans cette section, nous explorerons en détail les cas d'utilisation des solutions
proposées, mettant en avant les différents endroits où nos solutions peuvent intervenir, les
éléments qui déclenchent chaque cas, ainsi que l’enchaînement des actions à suivre pour
atteindre les fonctionnalités attendues avec succès.
● Cas d’utilisation communs
Les CU suivants sont communs entre les deux solutions :

CU : RecommanderArticlesInitiaux

ID : 1

Description : Recommander une liste de textes intéressants à l’ouverture de l’espace LD.

Acteur primaire : Utilisateur

Acteur secondaire : Système

Préconditions :

Enchaînement principal :
1. Le CU démarre lorsque l’utilisateur ouvre son espace sur la plateforme.
2. Le système récupère le profil de l’utilisateur.
3. Le système produit une liste de recommandations selon les préférences et les
interactions de cet utilisateur.

51
4. Le système affiche cette liste sur la page d’accueil.

Postconditions : Liste de recommandations générée.

Enchaînement alternatif :

CU : RecommanderResultatsRecherche

ID : 2

Description : Recommander une liste de résultats à l’introduction d’une requête.

Acteur primaire : Utilisateur

Acteur secondaire : Système

Préconditions :

Enchaînement principal :
1. Le CU démarre lorsque l’utilisateur introduit une requête.
2. Le système traite la requête.
3. Le système applique un filtre initial selon les paramètres spécifiés.
4. Le système effectue un calcul de score de pertinence sur les articles potentiels.
5. Le système choisit les résultats avec les meilleurs scores.
6. Le système affiche ces résultat

Postconditions : Requête traitée.

Enchaînement alternatif :

CU : RecommanderLirePlus

ID : 3

Description : Recommander plus de textes lors de la consultation d’un document.

Acteur primaire : Utilisateur

Acteur secondaire : Système

Préconditions :

Enchaînement principal :
1. Le CU débute lorsque l’utilisateur clique sur un texte pour le consulter.
2. Le système construit une liste de recommandations selon le profil de l’utilisateur, et
ce qu’il a appris sur les transitions entre textes.

52
3. Le système affiche cette liste dans une section sous le nom “Lire plus”.

Postconditions :

Enchaînement alternatif :

● Cas d’utilisation de la solution 2 :


Lorsqu’un nouveau texte est publié par un organisme dans le journal officiel où autre part, le
système de veille juridique intégré dans le backend de la plateforme récupère le contenu de ce
document ainsi que ses métadonnées. À ce moment-là, le système ne possède pas encore les
données d’interactions des utilisateurs avec ce texte. Les modèles de la solution 1 sont
incapables de déterminer s’il est pertinent ou pas pour X ou Y. D’où vient la nécessité d’avoir
le modèle décrit dans la deuxième solution, qui est conçue principalement pour l’analyse du
contexte, il pourra avoir une idée à travers l’exploration des métadonnées, en effet, il pourra
prédire son score de pertinence. L’enchaînement des étapes dans cette situation est détaillé dans
le CU suivant :

CU : RecommanderNotification

ID : 4

Description : Filtrer les notifications du système de veille.

Acteur primaire : Système

Acteur secondaire :

Préconditions :

Enchaînement principal :
1. Le CU démarre avec la publication d’un nouveau texte sur la plateforme.
2. Le système construit la liste des utilisateurs qui seront notifiés en correspondant les
métadonnées du textes avec les profils.
3. Le système de recommandation calcule le score de pertinence de ce texte pour les
utilisateurs de la liste.
4. Le système filtre cette liste selon un seuil appliqué sur le score obtenu pour chaque
utilisateur.
5. Le système envoie la notification aux utilisateurs de la liste finale

Postconditions :

Enchaînement alternatif :

Pour mieux expliquer le séquencement des actions dans chacun des CU, nous allons les
organiser selon des processus illustrés par des diagrammes de séquences.
Recommandation sur la page d’accueil

53
Après l’authentification d’un utilisateur et l’ouverture de son espace, le module de
recommandation, contenant les modèles et leurs “DataLoaders”, reçoit l’identifiant de
l’utilisateur. Ensuite, en se basant sur ce qu’il a appris des données historiques, il va générer
des recommandations en utilisant les différents modèles. Pour finalement comparer les scores
des listes générées, dans ce cas, nous présentons dans la figure 3.15 le fonctionnement du
module en mode compétitif décrit auparavant.

Figure 3.14 : diagramme de séquence de la recommandation sur la page d’accueil


Recommandation des résultats pour une recherche effectuée
Le diagramme de séquence ci-dessous (voir la figure 3.15) représente une façon d’inclure les
SR dans le filtrage des résultats d’une recherche. D’abord, la requête est traitée normalement

54
par le moteur de recherche qui applique un filtre en correspondance avec les mots-clés
constituant cette requête. Par la suite, le module de recommandation intervient pour filtrer la
liste des résultats avec ses différents modèles. Cette fois-ci nous choisissons de combiner les
efforts des deux solutions pour retourner une liste qui contient les meilleurs résultats des deux
SRS (mode coopératif).

Figure 3.15 : diagramme de séquence de la recommandation des résultats pour la recherche

55
Recommandation à la consultation d’un document
Lorsqu’un utilisateur clique sur un texte juridique pour le consulter, son identifiant et celui du
texte seront envoyés au module de recommandation (figure 3.16). Les modèles vont construire
des listes qui seront comparées (ou fusionnées), ensuite, nous allons filtrer la liste finale, afin
d’arriver à des éléments ayant des caractéristiques semblables avec le document affiché
(secteur, sous-secteur, thématique, etc.).
Si la liste finale est vide, les deux solutions vont donner des recommandations générales comme
elle le font pour la page d’accueil.

Figure 3.16 : diagramme de séquence de la recommandation des résultats pour la recherche

56
Système de VJ amélioré
Comme nous avons discuté à propos du CU numéro 04, seule la solution 2 et capable de traiter
ce cas, nous parlons encore du problème de démarrage à froid. Avec sa spécificité par rapport
aux modèles séquentiels qui utilisent le FC. Nous trouvons que ce type de situations justifie au
plus la nécessité de sa mise en place (voir la figure 3.17).

Figure 3.16 : diagramme de séquence représentant le nouveau système de VJ

57
3.6 Conclusion
Le chapitre de conception a fourni une vue détaillée des solutions retenues pour
répondre aux besoins identifiés. Nous avons décrit en profondeur le diagramme des classes, qui
représente la structure et les relations entre les différentes entités du système. De plus, nous
avons analysé les cas d'utilisation pour comprendre comment les acteurs interagissent avec le
système et quelles fonctionnalités seront disponibles pour eux.
L'approche de conception adoptée met l'accent sur l'efficacité, la modularité et la
maintenabilité du système. Les solutions proposées sont basées sur des principes éprouvés et
des bonnes pratiques de développement logiciel. Nous avons également pris en compte les
contraintes techniques et les ressources disponibles pour garantir la faisabilité de la mise en
œuvre.
En conclusion, le chapitre de conception a jeté les bases solides nécessaires à la
réalisation du système. Les solutions retenues sont le résultat d'une analyse approfondie des
besoins et des contraintes, et elles sont conçues pour répondre de manière optimale aux attentes
des utilisateurs. Avec la mise en œuvre à venir, nous serons en mesure de concrétiser ces
solutions et de créer un système performant et fiable.

58
Chapitre IV : Réalisation
4.1 Introduction
Dans ce chapitre de réalisation, nous entrons dans la phase concrète de mise en œuvre
de la solution que nous avons conçue précédemment. Nous commencerons par présenter
l'environnement de travail dans lequel la solution sera déployée, en mettant en évidence les
composants et les technologies qui y sont impliqués. Cela nous permettra d'avoir une vision
globale de l'infrastructure sur laquelle reposera notre système. Ensuite, nous plongerons dans
les détails des architectures des solutions retenues, en expliquant minutieusement chaque choix
effectué. Nous justifierons nos décisions en nous appuyant sur des critères tels que la
performance, la scalabilité, la sécurité et la facilité de maintenance. Il est essentiel de
comprendre les raisons derrière chaque décision afin d'assurer la cohérence et la pertinence de
la mise en œuvre.
Une fois les architectures décrites, nous passerons aux tests et aux évaluations. Nous
exposerons la méthodologie utilisée pour vérifier la fonctionnalité et la fiabilité de la solution,
en mettant en évidence les scénarios de test, les résultats obtenus et les ajustements éventuels
effectués.

4.2 Outils d’implémentation


4.2.1 Environnement

● Pytorch
Un framework open source d'apprentissage automatique qui accélère le passage du prototypage
de recherche au déploiement en production. Il s'agit d'un écosystème riche d'outils et de
bibliothèques qui l'étendent et soutiennent le développement dans des domaines tels que la
vision par ordinateur, le traitement du langage naturel et bien d'autres. Plus important encore,
il bénéficie d'une bonne prise en charge sur les principales plateformes cloud, offrant un
développement sans friction et une mise à l'échelle facile.
● Tensorflow
La plateforme TensorFlow vous aide à mettre en œuvre les meilleures pratiques en matière
d'automatisation des données, de suivi des modèles, de surveillance des performances et de ré-
entraînement des modèles. TFX fournit des cadres logiciels et des outils pour des déploiements
MLOps complets, détectant les problèmes à mesure que vos données et vos modèles évoluent
dans le temps.
● Jupyter Notebook
Le Jupyter Notebook est l'application web d'origine pour créer et partager des documents
informatiques. Il offre une expérience simple et rationalisée axée sur les documents. Nous
pouvons dire que c’est un des IDE les plus courants pour le développement des modèles
d’apprentissage pour sa facilité d’usage.
● VSCode
Visual Studio Code est un éditeur de code source léger, mais puissant qui s'exécute sur votre
ordinateur de bureau et est disponible pour Windows, macOS et Linux. Il dispose d'une prise
en charge intégrée pour JavaScript, TypeScript et Node.js, et possède un écosystème riche en
extensions pour d'autres langages et environnements d'exécution (comme C++, C#, Java,
Python, PHP, Go, .NET).

59
● Google Colab
Colaboratory (ou "Colab" abrégé) est un outil d'analyse de données et d'apprentissage
automatique qui vous permet de combiner du code Python exécutable, du texte enrichi ainsi
que des graphiques, des images, du HTML, du LaTeX et plus encore dans un seul document
stocké sur Google Drive. Il se connecte à des environnements d'exécution puissants de la
plateforme Google Cloud et vous permet de partager facilement votre travail et de collaborer
avec d'autres personnes.

4.2.2 Exploration et prétraitement

● Tableau
Tableau est une plateforme d'analyse visuelle qui transforme notre façon d'utiliser les données
pour résoudre des problèmes, permettant aux individus et aux organisations de tirer le meilleur
parti de leurs données.
● Pandas
Pandas est une bibliothèque open-source pour la manipulation et l'analyse de données en
Python. Elle offre des structures de données flexibles et performantes, telles que les
DataFrames, qui permettent de traiter aisément les données tabulaires. Pandas offre également
de nombreuses fonctionnalités pour nettoyer, filtrer, fusionner et analyser les données, en
faisant un outil puissant pour l'analyse de données.
● Matplotlib
Matplotlib est une bibliothèque de visualisation en Python qui permet de créer des graphiques
et des visualisations de données de manière simple et efficace. Elle offre une grande variété de
types de graphiques. Elle permet ainsi de personnaliser les graphiques en ajustant les couleurs,
les légendes, les axes et d'autres aspects visuels.

4.2.3 Évaluation

● Weights & Biases


W&B est un outil d'expérimentation et de suivi des modèles d'apprentissage automatique
(Machine Learning). Il permet aux chercheurs, aux ingénieurs et aux scientifiques des données
de collaborer, de visualiser et de gérer facilement leurs expériences de modélisation. Weights
& Biases offre des fonctionnalités telles que le suivi des métriques, l'enregistrement des
versions des modèles, la visualisation des résultats et la comparaison des performances. Cet
outil facilite la compréhension et l'itération sur les modèles, aidant ainsi à améliorer les
performances et à accélérer le développement des modèles d'apprentissage automatique.

4.3 Implémentation des modèles existants


Cette partie concerne la première solution décrite dans le chapitre de conception sur l’utilisation
des solutions existantes. Plus précisément, nous présentons la bibliothèque que nous avons
utilisée ainsi que les étapes et les détails de son implémentation.

4.3.1 Bibliothèque RecBole

Afin de pallier les problèmes de développement des SR, certains auteurs ont lancé un
projet visant à fournir un cadre unifié pour le développement d'algorithmes de recommandation.
Nous avons mis en place une bibliothèque de systèmes de recommandation en open source,

60
appelée RecBole [47]. Basé sur cette bibliothèque, leur objectif était d'améliorer la
reproductibilité des modèles existants et de faciliter le processus de développement de
nouveaux algorithmes. Notre travail est également utile pour standardiser le protocole
d'évaluation des algorithmes de recommandation. En effet, un nombre considérable de
bibliothèques de systèmes de recommandation ont été publiées au cours de la dernière décennie.
Ces travaux ont considérablement fait progresser les systèmes de recommandation en open
source. De nombreuses bibliothèques ont continué à s'améliorer en ajoutant de fonctionnalités.
Les auteurs ont examiné en détail ces bibliothèques et ont intégré largement leurs mérites dans
RecBole.

● Justification du choix

Tableau II : Une comparaison entre la bibliothèque RecBole et ses antécédents [47].

Nous remarquons que RecBole comporte plus de modèles ce qui offre plus de choix et donc
une flexibilité, elle supporte des modèles basés sur l’apprentissage profond, avec un réglage
automatique des paramètres (Parameter Tuning) dont on verra son importance plus tard dans ce
chapitre.

4.3.2 Architecture de la bibliothèque

La bibliothèque RecBole présente les caractéristiques et capacités suivantes :


● Un cadre de recommandation unifié basé sur PyTorch, permettant la comparaison et le
développement facile d'algorithmes de recommandation.
● Des structures de données générales et extensibles pour une implémentation simplifiée
des algorithmes.
● Un large éventail de modèles et de jeux de données de référence pour tester et comparer
les algorithmes de recommandation.
● Une exécution efficace accélérée par GPU grâce à des techniques d'optimisation
spécifiques.

61
● Des protocoles d'évaluation étendus et standardisés pour évaluer les performances des
modèles.
La figure représente l’architecture globale de la bibliothèque :

Figure 4.1 : Architecture globale de RecBole [47]


La partie inférieure est le module de configuration, qui aide les utilisateurs à mettre en
place l'environnement expérimental (par exemple, les hyperparamètres et les détails
d'exécution). Les modules de données, de modèles et d'évaluation sont construits sur le module
de configuration, formant le code principal de notre bibliothèque. Le module d'exécution est
responsable de l'exécution et de l'évaluation du modèle en fonction des paramètres spécifiques
de l'environnement. Toutes les fonctions auxiliaires sont regroupées dans le module d'utilitaires,
comprenant notamment l'optimisation automatique des paramètres, le journal et les mesures
d'évaluation. Dans la suite, nous présentons brièvement les conceptions des trois modules
principaux, et des informations supplémentaires peuvent être trouvées dans l’annexe ou dans la
documentation officielle de la bibliothèque.

4.3.3 Configuration de la bibliothèque

Comme il est indiqué dans la figure 4.1. La configuration des modèles peut être
effectuée selon trois (03) modalités [47] :
❖ Les fichiers de configuration :
Les fichiers de configuration doivent être organisés dans le format yaml. Les utilisateurs doivent
écrire leurs paramètres conformément aux règles définies par yaml, et les fichiers de
configuration finaux sont traités par le module de configuration pour compléter les paramètres.
Pour commencer, nous écrivons les paramètres dans les fichiers yaml (par exemple,
example.yaml). Ensuite, les fichiers yaml sont transmis au module de configuration pour
finaliser les paramètres. Il est possible de passer plusieurs fichiers de configuration à la fois.
❖ Les dictionnaires de paramètres :
Le dictionnaire de paramètres est réalisé par la structure de données "dict" en Python, où la clé
est le nom du paramètre et la valeur est la valeur du paramètre. Les utilisateurs peuvent écrire
leurs paramètres dans un dictionnaire et le transmettre au module de configuration.
❖ Les lignes de commande :
Nous pouvons également attribuer des paramètres en fonction de la ligne de commande. Les
paramètres de la ligne de commande peuvent être lus à partir du module de configuration.

62
● Priorité :
RecBole prend en charge la combinaison de trois types de configurations de paramètres. La
priorité des méthodes de configuration est la suivante : Ligne de commande > Dictionnaires de
paramètres > Fichiers de configuration > Paramètres par défaut.
Selon la documentation officielle, nous constatons que tous les paramètres de configuration
sont répartis en cinq parties : paramètres d'environnement, paramètres de données, paramètres
de modèle, paramètres d'entraînement et paramètres d'évaluation.

4.3.4 Préparation des données

Dans cette sous-section, nous allons expliquer le flux de données ainsi que les formats exigés
par la bibliothèque afin d’assurer le succès de l’exécution. Nous exposons les étapes suivies et
les outils utilisés pour réaliser cette tâche.
❖ Flux des données :
Pour garantir l'extensibilité et la ré-utilisabilité, le module de données conçoit un flux de
données qui transforme les données brutes en entrée du modèle. Le flux de données global peut
être décrit comme suit :

Figure 4.2 : le flux des données pour la bibliothèque RecBole.


L'implémentation de la classe Dataset est principalement basée sur la structure de données
principale « pandas.DataFrame » de la bibliothèque Pandas, et l'implémentation de la classe
DataLoader est basée sur une structure de données interne générale appelée Interaction.
❖ Types de données :
Nous identifions les différents fichiers par leurs suffixes. En résumant les modèles et
jeux de données de recommandation existants, nous concluons avec quatre types de données de
base, à savoir "token" (représentant des entiers ou des chaînes de caractères), "token sequence",
"float" et "float sequence". Les "token" et les "token sequence" sont utilisés pour représenter
des caractéristiques discrètes telles que des identifiants ou des catégories, tandis que les "float"
et les "float sequence" sont utilisés pour représenter des caractéristiques continues, comme le
prix. Les fichiers atomiques prennent en charge les représentations de caractéristiques éparses,
de sorte que l'espace occupé par les fichiers atomiques peut être largement réduit.
Prochainement, nous présenterons la description détaillée de chaque fichier atomique.
❖ Fichiers atomiques :
• L’extension « .inter » désigne un fichier obligatoire utilisé dans toutes les tâches de
recommandation. Chaque ligne est composée de l'identifiant de l'utilisateur (token), de
l'identifiant de l'élément (token), de la note utilisateur-élément (float, optionnel), de la date et
heure (float, optionnel) et du texte de l'avis (séquence de tokens, optionnel). Les différents
champs sont séparés par des virgules.
• Le fichier « .user » est un fichier de profil utilisateur.
• Le fichier « .item » est un fichier de caractéristiques des éléments (dans ce cas les textes).

63
• Le fichier « .kg » est un fichier de graphe de connaissances utilisé pour la recommandation
basée sur les connaissances.
• Le fichier « .link » est également utilisé pour la recommandation basée sur les connaissances.
• Le fichier « .net » est un fichier de réseau social utilisé pour la recommandation sociale.
Une description détaillée des différents fichiers atomiques sera fournie en annexe.
Tableau III : Les exigences de chaque type de recommandation en fichiers atomiques [47].

Tâche Fichiers obligatoires

Recommandation Générale .INTER

Recommandation basée sur le contexte .INTER, .USER, .ITEM

Recommandation basée sur la connaissance .INTER, .KG, .LINK

Recommandation séquentielle .INTER

Recommandation sociale .INTER, .NET

❖ Conversion des données brutes :


Maintenant que nous avons établi les nécessités en données pour un modèle de recommandation
séquentiel, nous allons voir comment se fait le passage des données brutes (fichiers .csv) vers
un fichier d’interactions « exemple.inter ». Nous commençons par un prétraitement qui sert à
transformer les quatre (04) fichiers historiques fournis par l’équipe LD vers un seul dataset
global (voir la figure).

Figure 4.3 : Prétraitement et conversion des données pour la bibliothèque RecBole


Ensuite, nous allons supprimer les colonnes qui ne seront pas utilisées (identifiants des
interactions, plateforme pour les partages et contenu pour les interactions de type “copier”).
Nous effectuerons un tri par “timestamp” qui est le concept de base pour la tâche de
recommandation séquentielle. D’après la documentation officielle, les données d’interactions
seront regroupées par utilisateur avant d’effectuer l’apprentissage. Enfin, nous allons écrire les
données dans un fichier “fullds.csv”.
Nous obtenons les données brutes qui seront remises au format « .inter » à l’aide des outils de
conversion mis à disposition par les développeurs de la bibliothèque. Ces derniers sont

64
disponibles sur GitHub, il s’agit de créer une classe sous “extended_datasets” qui hérite de la
classe “BaseDataset”. D’abord on définit les champs et leurs types (token, float, token sequence
ou float sequence), ensuite se fait l’écriture du fichier final.

4.3.5 Apprentissage

❖ La tâche d’apprentissage :
RecBole prend en charge plusieurs stratégies d'entraînement. Pour les modèles de filtrage
collaboratif basés sur CPU traditionnels, l'entraînement sans gradient est naturellement
appliqué. Pour les modèles neuronaux les plus courants, la descente de gradient automatique
est bien équipée et définie comme stratégie d'entraînement par défaut. De plus, une stratégie
d'entraînement en deux étapes est prévue pour les modèles basés sur la préformation. De plus,
les utilisateurs ayant besoin d'une stratégie d'entraînement inhabituelle peuvent personnaliser le
Trainer.
Si on parle des stratégies d’apprentissage utilisées par défaut dans cette bibliothèque,
nous trouvons deux qui sont décidées selon le type de perte (loss) choisi par l’utilisateur (voir
la figure).

Figure 4.4 : Les stratégies d’apprentissage par défaut dans RecBole


- Cross-Entropy (CE) :
Appelée aussi “LogLoss”, la perte de cross-entropy mesure la performance d'un modèle
de classification dont la sortie est une valeur de probabilité entre 0 et 1. La perte de cross-
entropy augmente à mesure que la probabilité prédite s'éloigne de l'étiquette réelle. C’est ce
qu’on va utiliser dans notre cas vu que l’objectif est de calculer la probabilité qu’un texte soit
pertinent (positif) pour un utilisateur.
- Classement Bayésien Personnalisé (BPR) :

65
C’est une perte de classement personnalisée par paire dérivée de l'estimateur postérieur
maximal. Elle est largement utilisée dans de nombreux modèles de recommandation existants.
Les données d'entraînement de BPR comprennent à la fois des paires positives et négatives
(valeurs manquantes). Elle suppose que l'utilisateur préfère l'élément positif à tous les autres
éléments non observés.
❖ L'échantillonnage :
C’est la technique pour choisir les données qui seront utilisées pour l’apprentissage et
l’évaluation, nous trouvons deux modalités qui sont supportées par RecBole :
- La première est en utilisant les notes explicites attribuées par les usagers aux textes
consultés, si la note dépasse un seuil choisi (choisi de façon arbitraire), le texte sera
libellé positif, sinon il sera négatif. Ceci n’est pas faisable comme nous ne disposons
pas de cette information. En effet, on opte pour le deuxième choix.
- L'échantillonnage négatif, ou "negative sampling" en anglais, fait référence à une
technique utilisée dans l'entraînement des modèles de recommandation (voir la figure
n°), en particulier dans les approches de filtrage collaboratif. Dans cette technique, des
exemples négatifs sont échantillonnés ou sélectionnés de manière aléatoire pour créer
un ensemble de données d'entraînement en plus des exemples positifs. L'objectif de
l'échantillonnage négatif est d'équilibrer les données d'entraînement en incluant des
exemples d'éléments qui ne sont pas pertinents ou non préférés par les utilisateurs. En
incluant des exemples négatifs, le modèle apprend à différencier les instances positives
et négatives, améliorant ainsi sa capacité à faire des recommandations précises.

Figure 4.5 : Illustration des deux techniques d’échantillonnage


❖ Le réglage automatique (PT) :
Dans le cas idéal, et pour un modèle choisi, la bibliothèque RecBole offre la possibilité de faire
un réglage (parameter tuning) automatique. L’apprentissage sera effectué de manière itérative
jusqu’à ce qu’on détermine les paramètres qui produisent les meilleurs résultats du modèle en
question.

66
Tableau IV : Les paramètres pouvant être impactés par le réglage automatique pour le modèle
BERT4Rec.

Paramètre Signification Valeurs possibles

learning_rate Le taux d’apprentissage {0.01, 0.005, 0.001,


0.0005, 0.0001}
- valeur par défaut :
0.001

attn_dropout_probability C’est un type de dropout utilisé {0.2, 0.5}.


dans les architectures basées sur - valeur par défaut : 0.5
l'attention, où des éléments sont
supprimés de manière aléatoire de
la fonction softmax dans
l'équation d'attention.

hidden_dropout_probabili La probabilité d'entraîner un nœud {0.2, 0.5}.


ty donné dans une couche, où 1 ne - valeur par défaut : 0.5
signifie aucun dropout et 0 ne
signifie aucune sortie de la
couche.

n_head Le nombre de têtes dans une 1 ou 2.


couche d’attention multi-têtes - valeur par défaut : 2

n_layer Le nombre de couches transformer 1 ou 2


dans le modèle - valeur par défaut : 2

stopping_step C’est un nombre d’itérations, au - valeur par défaut : 10


bout duquel l’apprentissage aura
un arrêt précoce s’il n’y a plus
d’amélioration de la métrique de
validation.

67
4.4 Réalisation d’un nouveau modèle
4.4.1 Architecture :

Notre approche vise à prédire les évaluations des textes non lus par l'utilisateur en se basant sur
ses interactions passées. Cela permet de recommander les textes les mieux notés à l'utilisateur,
en tenant compte de ses préférences antérieures.
L'architecture du modèle est basée sur les transformateurs, qui ont montré un succès
remarquable dans les tâches de traitement du langage naturel. L'architecture se compose de
couches d'intégration (embedding layers) pour transformer les variables catégorielles, de
couches LSTM pour capturer la séquentialité des données, de mécanismes d'auto attention pour
capturer les relations entre les caractéristiques, de couches de rétroaction (feed_forward layers)
pour la transformation des caractéristiques et d'une couche de sortie pour générer des
recommandations de films. Cette conception permet au modèle de capturer et d'évaluer
efficacement l'importance des différentes caractéristiques, améliorant ainsi sa capacité à fournir
des recommandations précises.

4.4.2 Justification du choix :

Le mécanisme d'auto-attention de Transformer permet au modèle de capturer les


dépendances à long terme et les relations contextuelles dans les données d'évaluation des films,
ce qui lui permet d'apprendre efficacement des modèles complexes et les préférences des
utilisateurs.
En outre, l'utilisation d'encastrements dans le modèle permet de représenter les films et
les utilisateurs dans un espace vectoriel continu, en capturant leurs caractéristiques latentes.
Cela permet au modèle de bien se généraliser à des textes et des utilisateurs inédits. En outre,
le modèle intègre un encodage positionnel pour préserver l'ordre séquentiel de l'entrée, ce qui
garantit que le modèle peut différencier différentes positions et capturer la dynamique
temporelle des interactions entre l'utilisateur et l'article.
Les couches LSTM peuvent compléter le mécanisme d'auto-attention du transformateur
en fournissant un niveau supplémentaire d'informations contextuelles et en capturant les
dépendances à long terme dans les séquences d'entrée.
En outre, l'inclusion de couches LSTM peut fournir une capacité inhérente à traiter des
séquences de longueur variable. Ceci est particulièrement utile dans les systèmes de
recommandation où les utilisateurs peuvent avoir des historiques d'interaction de longueurs
variables. Les couches LSTM peuvent traiter de manière adaptative des séquences de longueurs
différentes, ce qui permet au modèle d'utiliser efficacement toutes les informations disponibles
pour formuler des recommandations.

4.4.3 Prétraitement des données :

Les données implicites des utilisateurs se résument dans les textes lus, les textes marqués
comme favoris ainsi que ceux qui sont copiés (événements). Afin de pouvoir travailler avec ces
données et les transformer en données numériques, nous avons attribué à chaque événement un
poids selon son importance comme suit :
● Événement 1 : lire un texte = 1.0.
● Événement 2 : enregistrer un texte en favoris = 2.0.
● Événement 3 : partager un texte = 3.0.
● Événement 4 : copier un texte = 4.0.

68
Nous faisons après la somme des poids affectés pour chaque couple article-utilisateur.
Le total est utilisé comme une sorte de rating (évaluation) exprimé par l’utilisateur à un texte
donné. Ensuite, on applique une fonction mathématique pour transformer les valeurs de cette
nouvelle colonne de manière à mettre l'accent sur les petites différences et à réduire l'impact
des valeurs extrêmes. Cela peut aider à obtenir une représentation plus lisse des préférences de
l'utilisateur sans normaliser explicitement les données dans une fourchette spécifique. Les
données sont ensuite regroupées par utilisateur et ordonnées par timestamp.
Tableau V : Aperçu des données d’interaction après le prétraitement :

_id user text timestamp action

140501 4763 7323 2022-03-06 13:18:37.871 1.0

140490 4763 17255 2022-03-07 14:18:02.793 1.0

140496 4763 28389 2022-03-07 14:19:50.942 1.0

140494 4763 24913 2022-03-07 14:25:48.469 1.0

Le but de notre système de recommandation est de prédire les évaluations des textes non lus
par un utilisateur. Ces prédictions sont basées sur les interactions précédentes de l'utilisateur
avec d'autres textes. En se basant sur ces prédictions, nous pouvons recommander les textes
ayant les meilleures évaluations anticipées à l'utilisateur, en tenant compte de ses préférences
passées.

4.4.4 Création des séquences :

Les données encodées sont organisées en séquences de textes fixes. Cela permet au
modèle de prendre en compte l'ordre et la structure temporelle des interactions utilisateur-texte.
Pour chaque séquence, on récupère le dernier élément en tant qu’élément à prédire. La
modélisation des données en entrée est basée sur l'analyse des séries temporelles pour capturer
la dépendance séquentielle entre les différentes étapes temporelles, ce qui signifie que nous
divisons les données (Les séquences des IDs des articles et les séquences d’actions) en un
ensemble de séquences d'une longueur fixe.
Tableau VI : le Dataframe après la création des séquences :

user_id sequence_text_ids sequence_actions

0 1000 39731, 24252, 29813, 18846 1.0, 1.0, 1.0, 1.0

1 1001 34225,24540,13627,15454 1.0, 1.0, 1.0, 1.0

2 1001 13627, 15454, 7941, 16541 1.0, 1.0, 3.0, 1.0

3 1001 7941,16541, 27948, 20498 1.0, 1.0, 1.0, 2.0

69
4.4.5 Encodage des données :

Les textes et les utilisateurs sont encodés pour les représenter sous forme numérique. Les textes
sont convertis en vecteurs de “embeddings”. Les “embeddings”, ou représentations vectorielles,
sont une technique utilisée en apprentissage automatique pour convertir des données non
structurées en une forme numérique plus compréhensible par les algorithmes.
Les embeddings capturent les informations sémantiques et les relations entre les données, telles
que des mots, des phrases ou des entités, et les encodent sous forme de vecteurs de nombres
réels. Chaque dimension de ces vecteurs représente une caractéristique ou une propriété
spécifique des données. Les embeddings permettent de représenter les données de manière plus
compacte et signifiante.

Dans notre cas, les caractéristiques de l'utilisateur sont combinées en un seul vecteur
d'intégration, capturant les caractéristiques de l'utilisateur.

Les caractéristiques textuelles sont représentées à l'aide d'un embedding dédié, ce qui permet
de capturer les informations sémantiques des données textuelles. De plus, les positions des
éléments dans la séquence sont aussi encodées, ce qui permet de prendre en compte l'ordre des
données textuelles. Les actions séquentielles sont ensuite incorporées en multipliant la somme
des textes séquentiels encodés avec leur position respective par les actions correspondantes, ce
qui permet de tenir compte de l'importance des actions dans la prédiction. Le résultat de cette
opération est l’entrée du modèle qu’on présentera dans l’étape suivante.

4.4.6 Construction du modèle :

Le modèle utilise l'architecture des transformateurs, avec des couches d'intégration, des LSTM,
des mécanismes d'auto-attention, des couches de rétroaction et une couche de sortie. Cela lui
permet de capturer les caractéristiques importantes, d'apprendre les relations et de générer des
recommandations précises. Les différentes couches se présentent comme suit :
a. Couches LSTM :
Les LSTM (Long Short-Term Memory) sont des couches de réseaux de neurones récurrents
spécifiques qui sont conçus pour capturer les dépendances à long terme dans les données
séquentielles. Le modèle comprend plusieurs couches LSTM pour capturer les modèles
séquentiels dans les données d'entrée, qui sont définies à l’aide des paramètres décrits dans le
tableau suivant :
Tableau VII : Les différents paramètres de la couche LSTM

Nom du paramètre Désignation

num_lstm_layers C’est le nombre de couches LSTM à utiliser

lstm_units Les unités d’une couche LSTM donnée

lstm_dropout C’est le taux d'abandon ou d'exclusion.

b. Couche d'attention multi-têtes :

70
La couche d'attention multi-têtes est une composante clé de l'architecture du modèle.
Elle permet au modèle de capturer les relations entre les différentes caractéristiques de manière
plus fine et précise. L'idée principale derrière la couche d'attention multi-têtes est d'exécuter
l'opération d'attention plusieurs fois en parallèle, chacune avec une tête d'attention distincte.
Chaque tête d'attention se concentre sur différentes parties de l'information en utilisant
des poids d'attention spécifiques. Ensuite, les sorties de toutes les têtes d'attention sont
combinées pour former une représentation globale qui intègre les informations de chaque tête.
Cette approche multi-têtes permet au modèle d'apprendre des relations complexes et
non linéaires entre les caractéristiques, en capturant des dépendances à différentes échelles et
niveaux d'abstraction. En utilisant plusieurs têtes d'attention, le modèle peut mieux représenter
la structure des données et extraire des informations significatives pour la prédiction finale. Le
nombre de têtes d'attention est spécifié par le paramètre “num_heads”.
c. Bloc de transformation :
Ce bloc consiste en plusieurs opérations visant à améliorer les caractéristiques du
transformateur. Il comporte les étapes suivantes :
1. Dropout :
Le dropout est une technique de régularisation utilisée pour prévenir le sur-apprentissage dans
un réseau neuronal. Pendant l'entraînement, le dropout désactive aléatoirement un pourcentage
des neurones dans la couche précédente à chaque itération. Cela signifie que certains neurones
ne participent pas à la propagation avant ni à la rétro-propagation du gradient, ce qui introduit
du bruit dans le réseau. En désactivant aléatoirement les neurones, le dropout encourage le
réseau à apprendre des représentations plus robustes et généralisées, et réduit ainsi la
dépendance à des caractéristiques spécifiques de l'ensemble de données d'entraînement. Dans
le code donné, le dropout est appliqué après la couche d'attention et après la couche dense pour
régulariser les sorties avant de les passer à la couche suivante.
2. La couche “Add” :
Les caractéristiques du transformateur et la sortie de la couche d'attention. Cela permet de
combiner les informations extraites à partir des deux sources et de les fusionner en une seule
représentation.
3. Normalisation de couche :
La normalisation de couche (ou Layer Normalization) est une opération qui normalise les
valeurs de chaque dimension de l'entrée. Elle permet de réduire les dépendances entre les
caractéristiques et d'améliorer la stabilité et la vitesse de convergence de l'apprentissage. La
normalisation de couche est appliquée après l'ajout des caractéristiques du transformateur et de
la sortie de la couche d'attention, ainsi qu'après l'ajout des caractéristiques du transformateur et
de la sortie de la couche dense. Cela garantit que les valeurs des caractéristiques sont adaptées
à la même échelle et facilite l'apprentissage en réduisant les effets indésirables de grandes
variations de valeurs entre les caractéristiques.
4. LeakyReLU :
LeakyReLU (ou Rectified Linear Unit avec fuite) est une fonction d'activation utilisée dans les
réseaux de neurones. Elle est similaire à la fonction d'activation ReLU, mais elle résout un
problème potentiel associé aux valeurs négatives.
La fonction LeakyReLU introduit une légère pente positive pour les valeurs positives et une
légère pente négative pour les valeurs négatives. Cela signifie que pour les entrées positives, la
fonction “LeakyReLU” se comporte de la même manière que ReLU en maintenant la valeur

71
inchangée. Cependant, pour les entrées négatives, la fonction “LeakyReLU” attribue une petite
valeur négative proportionnelle à l'entrée, au lieu de la fixer à zéro.
En utilisant la fonction LeakyReLU, le modèle peut capturer des relations non linéaires plus
complexes entre les caractéristiques, améliorant ainsi sa capacité à représenter et à apprendre
des motifs dans les données. Cela peut conduire à une meilleure performance du modèle dans
des tâches telles que la classification, la régression ou la recommandation.
5. Couche d'aplatissement :
Cette couche convertit la forme du tenseur en un vecteur unidimensionnel, ce qui permet la
compatibilité avec les couches entièrement connectées, également appelées couches denses,
nécessitant une entrée sous forme d'un vecteur unidimensionnel.
d. Concaténation des autres caractéristiques :
Les caractéristiques des utilisateurs sont concaténées avec les caractéristiques textuelles
à l'aide de la couche “concatenate()”. Cette étape permet au modèle d'incorporer des
caractéristiques non temporelles dans le processus de prédiction.
e. Couches entièrement connectées :
Les couches entièrement connectées, aussi connues sous le nom de couches dense, sont
des composantes essentielles dans de nombreux modèles de réseaux de neurones.
Elles sont utilisées pour apprendre des représentations et des motifs complexes à partir
des caractéristiques extraites précédemment. Le nombre d'unités dans ces couches est déterminé
par le paramètre "hidden_units", qui contrôle la dimensionnalité de l'espace de représentation
interne du modèle.
Après chaque couche entièrement connectée, deux techniques de régularisation sont
appliquées pour améliorer les performances du modèle et prévenir le sur-apprentissage.
La première technique est la normalisation par lots (batch normalization), qui ajuste et
normalise les activations de chaque couche en se basant sur les statistiques des mini-lots de
données. Cela permet de réduire les effets indésirables de l'instabilité de la distribution des
activations, favorisant ainsi la stabilité et la convergence du modèle.
Ensuite, une fonction d'activation (LeakyReLU) est appliquée. Enfin, un dropout est
appliqué. En combinant ces différentes techniques (normalisation par lots, activation ReLU
avec fuite et dropout), les couches entièrement connectées permettent au modèle d'apprendre
des représentations complexes et non linéaires à partir des caractéristiques extraites, tout en
contrôlant le sur-apprentissage et en privilégiant une meilleure généralisation.
f. Couche de sortie :
La dernière couche est une couche dense avec une seule unité, l'objectif principal de
cette couche est de calculer une valeur numérique qui représente la sortie prédite du modèle.
Cette valeur représente la prédiction du rating d’un utilisateur pour un texte donné.

4.4.7 Réglage des paramètres (Fine Tuning) :

Afin d'optimiser le modèle et de choisir les paramètres qui conduisent à des prédictions plus
précises, il est important d'explorer différentes combinaisons d'hyper paramètres et de trouver
celles qui donnent les meilleurs résultats en termes d'erreur absolue moyenne.

72
L'erreur absolue moyenne (Mean Absolute Error, MAE) est une mesure d'évaluation qui
quantifie la différence moyenne absolue entre les valeurs prédites et les valeurs réelles d'un
modèle. Elle est utilisée pour évaluer la précision d'un modèle de régression ou de prévision.
Le MAE est un indicateur simple et facile à interpréter, car il représente directement la
magnitude moyenne des erreurs. Une valeur de MAE plus faible indique une meilleure
précision du modèle, puisque cela signifie que les prédictions sont en moyenne plus proches
des valeurs réelles. Le MAE est également peu sensible aux valeurs aberrantes que d'autres
métriques, parce qu'il ne tient pas compte des écarts au carré.
Pour réaliser le fine-tuning, on effectue une recherche aléatoire d'hyper paramètres pour trouver
les meilleures combinaisons de paramètres.
Les paramètres à évaluer sont les suivants :
Tableau VIII : les différents paramètres intervenant dans le fine-tuning du modèle (solution 2).

Paramètre Signification Valeurs possibles

learning_rate Le taux d’apprentissage { 0.001, 0.01, 0.1 }


- valeur par défaut :
0.01

lstm_units Le nombre de neurones dans chaque couche { 64, 128, 256 }


LSTM. - valeur par défaut :
64

n_head Le nombre de tête dans une couche d’attention {3, 5, 8 }


multi-têtes - valeur par défaut : 3

num_lstm_layers Le nombre de couches LSTM dans le modèle {2, 3, 4 }


- valeur par défaut : 2

L’opération se répète ‘n’ fois, où pour chaque itération, des hyper paramètres sont choisis au
hasard. Ensuite, un modèle est créé en utilisant les hyper paramètres actuels et entraîné sur les
données d'entraînement.
Une fois le modèle entraîné, il est évalué sur les données de test pour calculer le “MAE”. Si le
“MAE” obtenu est meilleur que le meilleur “MAE” précédent, les meilleurs scores et les
meilleurs paramètres sont mis à jour. Après n itérations, le modèle final est créé en utilisant ces
meilleurs paramètres pour être utilisé ultérieurement.

73
4.4.8 Apprentissage :

L'étape d'apprentissage du modèle est cruciale pour améliorer ses performances et lui
permettre de faire des prédictions plus précises. Pendant cette phase, le modèle ajuste les
vecteurs d'intégration en fonction de son objectif d'optimisation et des erreurs de prédiction
qu'il commet.
L'idée principale est que, à mesure que le modèle apprend à partir des données
d'entraînement, les vecteurs d'intégration sont progressivement adaptés pour capturer les
relations significatives et les similitudes entre les utilisateurs et les articles. Par exemple, si deux
utilisateurs ont des préférences similaires en termes d'articles, il est probable que leurs vecteurs
d'intégration correspondants soient plus proches dans l'espace d'intégration. L'objectif
d'optimisation du modèle est de minimiser une fonction de perte spécifique, dans notre cas, c'est
l'erreur quadratique moyenne.
L'erreur quadratique moyenne (MSE - Mean Squared Error) est une mesure couramment
utilisée pour évaluer la performance d'un modèle de prédiction, y compris dans le contexte des
recommandations. Elle quantifie la différence moyenne au carré entre les valeurs prédites par
le modèle et les vraies valeurs associées aux exemples d'entraînement. Pour calculer le MSE,
on prend la différence entre chaque valeur prédite et la valeur exacte correspondante, puis on
élève cette différence au carré. Ensuite, on fait la moyenne de toutes ces différences au carré
pour obtenir le MSE.
Le MSE a l'avantage de pénaliser davantage les erreurs importantes. En élevant les différences
au carré, les erreurs plus grandes ont un impact proportionnellement plus important sur le score
final. Cela signifie que le modèle est plus sensible aux erreurs importantes, ce qui peut être
souhaitable dans certaines tâches de prédiction.

4.5 Tests et évaluations

C'est la partie la plus importante de ce chapitre, où nous pouvons voir comment nos solutions
se comportent sur des données opérationnelles concrètes de l'entreprise. Nous avons effectué
ces évaluations sur Google Colab, qui mit à disposition les ressources suivantes (avec un quota
d’usage) :
- RAM système : elle est de 12 Go.
- RAM GPU : elle est de 15 Go, le GPU sert à accélérer considérablement le processus
d’apprentissage.
- Disque : 78 Go d’espace.

4.5.1 Résultats des modèles RecBole

Dû à l’insuffisance des ressources mises à disposition par Google Colab, nous n’avons pas pu
atteindre le cas idéal du réglage automatique. Néanmoins, nous étions capables de mener une
évaluation de certains modèles proposés par RecBole, où nous étudions l'effet des paramètres
divers. Pour ce qui est des architectures, nous avons opté pour les modèles suivants :
● BERT4Rec : C’est un modèle qui utilise le mécanisme d’attention, basé sur BERT
utilisé dans le domaine du NLP [42]. Il vise à réaliser une tâche nommée “Cloze” où
nous masquons des éléments d’une séquence et on essaie de les prédire à travers
l’analyse bidirectionnelle du contexte (ou la séquence).

74
● SASRec : Un autre modèle basé sur l’attention, ceci est unidirectionnel, c-à-d il essaie
de capturer les dépendances d’une séquence dans un seul sens [40].
● TransRec : Il est basé sur la modélisation de toutes les séquences générées par les
utilisateurs dans un espace de transitions, le passage d’un item vers un autre donnera
lieu aux nouvelles branches que chaque usager a choisi de parcourir.
● GRU4Rec : C’est une version améliorée des systèmes séquentiels basés sur les RNN
(voir le premier chapitre pour plus de détails) [2].
Pour les paramètres, nous avons gardé les valeurs par défaut, sauf pour ce qui suit :
“eval_batch_size” : c’est la taille des blocs lors de l’évaluation, dû aux problèmes de mémoire
rencontrés avec le modèle TransRec, nous avons opté pour la valeur 512 au lieu de 4096 pour
alléger l’usage de la mémoire GPU.
Prochainement, nous allons exposer l’effet de changer les deux paramètres suivants :
“topk” : désigne la longueur de la liste des recommandations (textes) prédites.
“learning_rate” : le taux d’apprentissage.
“log_wandb” : Autoriser le suivi de l’apprentissage avec l’outil “Weights & Biases”, il
nécessite une clé API qui est gratuite, il permet de visualiser la perte est les métriques avec
chaque itération.
NB : Le dataset est toujours découpé aléatoirement en trois (03) parties, 80% pour
l’apprentissage, 10% test et la 10% restante pour la validation.

● LR = 0.001 et Topk = 10 :
Tableau IX : Résultats du Fine Tuning des modèles RecBole avec LR = 0.001 et topk = 10

Modèle Recall@10 MRR@10 NDGC@10 Précision@10 F-score

BERT4Rec 0.1776 0.0955 0.1147 0.1778 0.1777

SASRec 0.3342 0.1962 0.2287 0.0334 0.060731

TransRec 0.2508 0.125 0.1545 0.0251 0.045633

GRU4Rec 0.2959 0.1703 0.1999 0.0296 0.053817

Les valeurs soulignées indiquent la métrique de validation utilisée pour faire l’arrêt prématuré
de l’apprentissage, ce paramètre sert à éviter le sur-apprentissage au cas où le modèle n’a pas
pu améliorer la métrique de validation au bout d’un certain nombre d’itérations. Tandis que les
valeurs en gras représentent les meilleures valeurs obtenues. La figure 4.6 illustre au mieux les

75
résultats des modèles côte à côte.

Figure 4.6 : Visualisation des résultats du test 1 (lr = 0.001, k=10)


Nous remarquons que SASRec a donné les meilleures valeurs pour le recall@10, ce qui indique
qu’il a pu identifier correctement plus d’éléments parmi tous les textes qui sont pertinents, les
métriques mrr@10 et ndgc@10 sont des indicateurs d’une bonne performance vu que les textes
pertinents ont été bien placés dans la liste de recommandations. Cependant, il a eu une mauvaise
précision, ceci a conduit vers l’obtention d’un F-score baissé. D’autre part, BERT4Rec était
capable de garder l’équilibre entre rappel et précision comme montré par son F-score, nous
trouvons que c’est très important d’avoir cet équilibre.
● LR = 0.001 et Topk = 15 :
Tableau X : Résultats du Fine Tuning des modèles RecBole avec LR = 0.001 et topk = 15

Modèle Recall@15 MRR@15 NDGC@15 Précision@15 F-score

BERT4Rec 0.2075 0.0945 0.1198 0.0138 0.025879

SASRec 0.39 0.2006 0.2434 0.026 0,0488

TransRec 0.3369 0.1845 0.2186 0.0225 0,0422

GRU4Rec 0.3414 0.174 0.212 0.0228 0,0427

Cette fois-ci, nous étudions l’effet d’étendre la liste des recommandations retournées. Puisque
les métriques utilisées sont basées sur le classement, le changement du paramètre k a influencé
les calculs des scores et des différentes fractions. Nous présentons le diagramme à barres dans
la figure 4.7 pour comprendre au mieux ces changements.

76
Figure 4.7 : Visualisation des résultats du test 1 (lr = 0.001, k=10)
On remarque une augmentation dans la capacité des modèles à avoir des “hits” dans les listes
recommandées (identification des textes pertinents avec succès), avec SASRec qui est toujours
le meilleur, par contre, ils ont eu des difficultés lors de la construction des listes, vu que les
valeurs de précision sont inférieures à 5%, on rappelle que la précision est la fraction des
éléments pertinents sur l’ensemble des documents récupérés.
● LR = 0.01 et Topk = 15 :
Tableau XI : Résultats du Fine Tuning des modèles RecBole avec LR = 0.01 et topk = 15

Modèle Recall@15 MRR@15 NDGC@15 Précision@15 F-score

BERT4Rec 0.1812 0.082 0.1043 0.0121 0,0227

SASRec 0.3806 0.1936 0.2357 0.0254 0,047622

TransRec 0.3329 0.1858 0.2187 0.222 0,266368

GRU4Rec 0.3664 0.1846 0.2259 0.0244 0,0458

Pour notre dernier test, nous avons choisi un plus grand taux d’apprentissage (0.01>0.001),
nous exprimons les résultats des différentes métriques à travers la figure 4.8.

77
Figure 4.8 : Visualisation des résultats du test 1 (lr = 0.001, k=10)
L’augmentation du taux d’apprentissage a amélioré la performance globale des modèles. Le
modèle SASRec a maintenu son avance pour le rappel, son MRR et son NDGC, néanmoins,
nous attirons l’attention vers TransRec, qui a montré la meilleure précision (22%) sur les trois
tests, ainsi que son F-Score qui est de 26.6%.

4.5.2 Résultats du SRS développé (from scratch)

Pour évaluer notre modèle, on le compare par rapport au modèle de référence. Un modèle de
référence, dans le contexte des systèmes de recommandation, est un modèle de base ou une
approche de référence utilisée pour comparer les performances d'autres modèles plus avancés
ou innovants. Il s'agit généralement d'un modèle simple et couramment utilisé qui fournit des
recommandations basées sur des règles ou des techniques basiques. Dans notre cas, on calcule
la note moyenne des données d'apprentissage et prédit la même note moyenne pour toutes les
instances de l'ensemble de données de test comme suit :
mean_rating = np.mean(y_train)

Ensuite, on fait la comparaison à l’aide de la métrique MAE.


Tableau XII : Résultat de notre modèle en comparaison avec un modèle de référence.

Modèle MAE

Modèle de référence 0.5690

SRS développé 0.4169

78
On observe un MAE plus faible pour notre modèle, ce qui indique qu’il est capable de fournir
des prédictions plus proches des évaluations réelles. Ainsi, en utilisant le MAE, nous pouvons
quantifier l'amélioration de notre modèle par rapport au modèle de référence et démontrer son
efficacité dans la génération de recommandations plus précises et pertinentes pour les
utilisateurs.

4.6 Conclusion
Le chapitre de réalisation a été consacré à présenter en détails les outils, l'environnement
et l'implémentation des solutions développées. Nous avons commencé par décrire les différents
outils utilisés, notamment la bibliothèque RecBole, et expliqué les étapes nécessaires pour
mettre en place nos solutions. Nous avons fourni une description complète du modèle que nous
avons développé à partir de zéro, en détaillant chacune de ses couches et en expliquant leur
fonctionnement. Nous avons également réalisé des tests en variant les paramètres du modèle et
effectué une évaluation approfondie en utilisant une variété de métriques.
Cette méthodologie nous a permis d'obtenir des résultats significatifs et de mieux
comprendre les performances de notre modèle. En conclusion, ce chapitre de réalisation nous a
permis de concrétiser nos idées et de mettre en place des solutions efficaces, tout en fournissant
une évaluation approfondie de leur performance. Ces résultats sont prometteurs et ouvrent la
voie à de futures améliorations et optimisations.

79
Conclusion générale
Dans le but d'améliorer la fidélisation de ses utilisateurs abonnés, Legal Doctrine, une
legaltech algérienne, a pris la décision stratégique d'explorer les préférences de ses utilisateurs
en exploitant les vastes quantités de données collectées. L'objectif était de créer un système de
recommandation séquentiel. Ceci doit être capable de modéliser les séquences d’interaction
générées par les utilisateurs, ensuite en analysant ces dernières, il doit proposer des suggestions
pertinentes de textes juridiques et de mots-clés. Pour atteindre cet objectif, nous avons entrepris
une analyse approfondie, une conception détaillée et une réalisation concrète d'un modèle de
recommandation séquentiel dédié aux utilisateurs de la plateforme.
Le problème initial identifié par Legal Doctrine était que les utilisateurs de la plateforme
existante devaient effectuer de multiples recherches pour trouver le contenu souhaité. Grâce au
SR que nous avons développé, nous sommes en mesure d'effectuer une recherche textuelle pour
l'utilisateur, lui fournissant ainsi des recommandations correspondant à ses préférences en
temps réel, tout en gardant le système conscient des tendances individuelles d’une manière
régulière. Pour parvenir à cela, nous avons travaillé en trois phases principales :
La première phase a consisté en une recherche approfondie sur le domaine des systèmes
de recommandation et de synthétiser les travaux réalisés sur les différentes pistes de recherche.
Cela nous a permis d'étudier les différentes approches, traditionnelles et séquentielles, de
recommandation, leur classification et les méthodologies d'évaluation associées. Les résultats
de cette phase ont été synthétisés dans l’état de l’art qui constitue la première partie de ce
rapport.
Dans la deuxième phase, nous avons exploré plusieurs alternatives pour la mise en place
d'un système de recommandation. Nous avons commencé par comprendre l'existant en étudiant
les travaux antérieurs, notamment un projet réalisé en 2021. Nous avons également recueilli les
besoins spécifiques, et approfondi notre compréhension des données à notre disposition, que
nous avons préalablement traitées et nettoyées. Au cours de cette phase, nous avons extrait les
différents facteurs permettant de décrire les préférences d'un utilisateur.
Enfin, la troisième et dernière phase était dédiée au développement des solutions
retenues. Ces solutions ont été rigoureusement testées selon une méthodologie d'évaluation
précise, en utilisant différents scénarios de tests et en évaluant les performances à l'aide de
diverses métriques.
Perspectives :
Certes, nous avons atteint la satisfaction de l’équipe ML de l’entreprise avec le travail que nous
avons réalisé, cependant, le plus important est d’atteindre la satisfaction de ses clients qui sont
les utilisateurs. Compte tenu des délais impartis, nous n'avons pas pu tester nos solutions sur le
niveau opérationnel, par contre, nous avons fourni les éléments nécessaires (approches et code).
De plus, elles restent perfectibles et par conséquent, des améliorations seront nécessaires,
notamment dans :
1. L'utilisation des SRS existants : Si jamais un système de notes est mis en place sur la
plateforme LD, nous pourrons certainement obtenir de meilleurs scores pour les textes
recommandés. Lorsqu’on parle de la bibliothèque RecBole spécifiquement, elle offre
un certain degré de personnalisation des modèles. Cette possibilité reste à explorer et
elle est susceptible de produire de meilleurs résultats, les futures mises à jour de la
bibliothèque peuvent donner naissance à l’exploitation des caractéristiques des textes
juridiques. Ceci est déjà fait pour d'autres types de recommandations dans la même
bibliothèque, mais elle est encore faible dans la recommandation séquentielle.

80
2. Le SRS développé from scratch :
- Il est possible, à l’aide des modèles du NLP, d’incorporer la représentation d’un
document ou de son sommaire avec des vecteurs numériques ou des mot-clés.
Ensuite, ces représentations dans l’historique d’interactions peuvent être
projetées sur l’ensemble des documents pour altérer positivement les scores de
pertinence.
- Ce changement est motivé par la disponibilité des données sur les documents et
les parties de documents copiées par les utilisateurs. Ce qui fait 25% de données
qui restent inexploitées.
- Nous avons décrit une architecture flexible permettant d’utiliser les informations
contextuelles sur les textes, mais, nous avons étudié seulement l’effet du
feedback implicite. Les autres caractéristiques telles que les secteurs, les
thématiques, etc. seront un outil puissant.
- Cette solution supporte l’utilisation des “user features” ou les caractéristiques
des utilisateurs, dans un autre scénario, ça peut être l’âge ou la localisation
géographique. Dans notre cas, comme la plateforme offre des espaces de
discussion privés aux membres appartenant à la même organisation. Nous
imaginons qu’il sera possible d’obtenir une idée générale sur le secteur d’activité
d’une entreprise donnée. Ce qui représente un axe d’orientation pour les intérêts
de ses membres.
Bilan personnel :
Ce projet de fin d'études au sein de la LD a été une expérience valorisante et encourageante à
la fois sur le plan professionnel et personnel. Nous avons développé le projet depuis l'état de
l'art jusqu'à la solution finale, en passant par toutes les étapes nécessaires. Cette expérience nous
a permis de consolider nos compétences théoriques et techniques dans des domaines tels que
l'apprentissage automatique et la science des données. De plus, nous avons eu l'opportunité
d'appliquer les concepts acquis lors de notre formation à l'École Nationale Supérieure
d'Informatique (ESI ex-INI). Sur le plan personnel, ce projet a renforcé notre esprit d'analyse,
de synthèse et de critique. Nous avons développé nos compétences individuelles et avons tiré
des leçons précieuses de cette expérience.

81
Références bibliographiques
[1] Wang, S., Hu, L., Wang, Y., Cao, L., Sheng, Q. Z., & Orgun, M. A. (2019). Sequential
Recommender Systems: Challenges, Progress and Prospects. ArXiv (Cornell University).
https://doi.org/10.24963/ijcai.2019/883
[2] Fang, H., Zhang, D., Shu, Y., & Guo, G. (2019). Deep Learning for Sequential
Recommendation: Algorithms, Influential Factors, and Evaluations, ACM Transactions on
Information Systems, http://export.arxiv.org/pdf/1905.01997
[3] Mahfuz, F. (2021). Markov Chains And Their Applications (theses), University of Texas
at Tyler.
[4] Shani, G., Heckerman, D., & Brafman, R. I. (2005). An MDP-Based Recommender
System. Journal of Machine Learning Research, 6(43), 1265–1295.
[5] Mlika, F., & Karoui, W. (2020). Proposed Model to Intelligent Recommendation System
based on Markov Chains and Grouping of Genres. Procedia Computer Science, 176, 868–
877.
[6] Koren, Y., Bell, R., & Volinsky, C. (2009). Matrix Factorization Techniques for
Recommender Systems. IEEE Computer, 42(8), 30–37
[7] Rendle, S., Freudenthaler, C., & Schmidt-Thieme, L. (2010). Factorizing personalized
Markov chains for next-basket recommendation. The Web Conference.
[8] He, R., & McAuley, J. (2016). Fusing Similarity Models with Markov Chains for Sparse
Sequential Recommendation. International Conference on Data Mining.
[9] Yang, Y., Jang, H., & Kim, B. (2020). A Hybrid Recommender System for Sequential
Recommendation: Combining Similarity Models With Markov Chains. IEEE Access, 8,
190136–190146.
[10] Taghipour, N., Kardan, A. A., & Ghidary, S. S. (2007). Usage-based web
recommendations. Conference on Recommender Systems.
[11] Gupta, G., & Katarya, R. (2021). Research on Understanding the Effect of Deep
Learning on User Preferences. Arabian Journal for Science and Engineering, 46(4), 3247–
3286.
[12] Rath, A., & Sahu, S. R.(2020) Recurrent Neural Networks for Recommender Systems,
Computational Intelligence and Machine Learning Vol-1 Issue-1, PP.31-36
[13] Quadrana, M., Karatzoglou, A., Hidasi, B., & Cremonesi, P. (2017). Personalizing
Session-based Recommendations with Hierarchical Recurrent Neural Networks, RecSys’17,
Como, Italy.
[14] Alzubaidi, L., Zhang, J., Humaidi, A. J., Al-Dujaili, A. Q., Duan, Y., Al-Shamma, O.,
Santamaría, J. V. G., Fadhel, M. A., Al-Amidie, M., & Farhan, L. (2021). Review of deep
learning: concepts, CNN architectures, challenges, applications, future directions. Journal of
Big Data, 8(1).
[15] Yang, D., Zhang, J., Wang, S., & Zhang, X. (2019). A Time-Aware CNN-Based
Personalized Recommender System. Complexity, 2019, 1–11.
[16] Zhou, J., Cui, G., Hu, S., Zhang, Z., Yang, C., Liu, Z., Wang, L., Li, C., & Sun, M.
(2020). Graph neural networks: A review of methods and applications. AI Open, 1, 57–81.
[17] Wu, S., Zhang, W., Sun, F., & Cui, B. (2022). Graph Neural Networks in Recommender
Systems: A Survey. ACM Computing Surveys, 55(5), 1–37.

82
[18] Ying, R., He, R., Chen, K., Eksombatchai, P., Hamilton, W. L., & Leskovec, J. (2018).
Graph Convolutional Neural Networks for Web-Scale Recommender Systems. Stanford
University.
[19] Bank, D., Koenigstein,N., & Giryes,R. (2021) Autoencoders. School of Electrical
Engineering, Tel Aviv University.
[20] Li,T., Ma,Y., Xu,J., Stenger,B., Liu,C., & Hirate,Y. (2018). Deep Heterogeneous
Autoencoders for Collaborative Filtering. Rakuten Institute of Technology, Nanyang
Technological University.
[21] Zhao, P., Shui, T., Zhang, Y., Xiao, K., & Bian, K. (2020). Adversarial Oracular Seq2seq
Learning for Sequential Recommendation. International Joint Conference on Artificial
Intelligence.
[22] Sachdeva, N., Manco, G., Ritacco, E., & Pudi, V. (2019). Sequential Variational
Autoencoders for Collaborative Filtering. Web Search and Data Mining.
[23] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L.,
& Polosukhin, I. (2017). Attention is All you Need. Neural Information Processing Systems,
30, 5998–6008.
[24] Adomavicius, G., & Tuzhilin, A. (2005). Toward the next generation of recommender
systems: a survey of the state-of-the-art and possible extensions. IEEE Transactions on
Knowledge and Data Engineering, 17(6), 734–749.
[25] Ricci, F., Rokach, L., & Shapira, B. (2015). Recommender Systems Handbook. Springer.
[26] Dadouchi, C.,& Agard,B. (2017). État de l’art sur les systèmes de recommandation. CIGI
2017: 12ème édition du Congrès International de Génie Industriel
[27] Rich, E. (1979). User modeling via stereotypes. Cognitive science 3.4, p. 329-354.
[28] Goldberg, D. (1992) Using collaborative filtering to weave an information tapestry”.
Communications of the ACM 35.12, p. 61-70.
[29] Resnick, P., Iakovou, N., Sushak, M., & al. (1994). Grouplens: An Open Architecture
For Collaborative Filtering Of Netnews. Proceedings of the Computer Supported Cooperative
Work Conference, ACM Press, New York, pp. 175-186
[30] Shardanand, U., & Maes, P. (1995). Social Information Filtering: Algorithms for
Automating "Word of Mouth". CHI ‘95 Mosaic of Creativity, p. 210-217
[31] Hill, W., Stead, L., & Furnas, G. (1995). Recommending And Evaluating Choices In A
Virtual Community Of Use. CHI ‘95 Proceedings.
[32] Marko, B.,& Yoav, S. (1997). Fab: content-based, collaborative recommendation.
Commun. ACM 40, 3 , p. 66–72.
[33] Rocca, B. (2021). Introduction to recommender systems . [Pub. Officielle]. Medium.
https://towardsdatascience.com/introduction-to-recommender-systems-6c66cf15ada
[34] Jannach, D., Zanker, M., Felfernig, A.,& Friedrich, G. (2010) Recommender Systems:
An Introduction. Cambridge University Press, New York, NY, USA, 1st edition.
[35] Schafer, J.B., Konstan, J.A., Riedl, J. (2001). E-commerce recommendation applications.
Data Mining and Knowledge Discovery 5(1/2), pp. 115–153.

83
[36] He, L., Zhang, J., Zhuo, L., Shen, L. (2008) Construction of user preference profile in a
personalized image retrieval. Neural Networks and Signal Processing, 2008 International
Conference.
[37] M. Claypool, A. Gokhale, T. Miranda, P. Murnikov, D. Netes, and M. Sartin,
“Combining Content-Based and Collaborative Filters in an Online Newspaper,” Proc. ACM
SIGIR ’99 Workshop Recommender Systems: Algorithms and Evaluation, Aug. 1999.
[38] Breese,J.S., Heckerman,D.,& Kadie,C. (1998). Empirical Analysis of Predictive
Algorithms for Collaborative Filtering, Proc. 14th Conf. Uncertainty in Artificial Intelligence.
[39] Good,N., Schafer,J.B., Konstan,J.A., Borchers,A., Sarwar,B., Herlocker, J.L,& Riedl, J.
(1999). Combining Collaborative Filtering with Personal Agents for Better
Recommendations, Proc. Conf. Am. Assoc. Artificial Intelligence (AAAI-99), pp. 439-446.
[40] Kang, W. C., & McAuley, J. (2018, November). Self-attentive sequential
recommendation. In 2018 IEEE international conference on data mining (ICDM) (pp. 197-
206). IEEE.
[41] Yakhchi, S., Beheshti, A., Ghafari, S. M., Orgun, M. A., & Liu, G. (2020). Towards a
Deep Attention-Based Sequential Recommender System. IEEE Access, 8, 178073–178084.
[42] Sun, F., Liu, J., Wu, J., Pei, C., Lin, X., Ou, W., & Jiang, P. (2019). BERT4Rec:
Sequential Recommendation with Bidirectional Encoder Representations from Transformer.
ArXiv (Cornell University).
[43] Powers, D. (2007). Evaluation: From Precision, Recall and F-Factor to ROC,
Informedness, Markedness & Correlation. Technical Report SIE-07-001 - School of
Informatics and Engineering , Australia.
[44] Longo, C. (2018) Evaluation Metrics for Recommender Systems. Towards Data Science
(publication officielle). https://towardsdatascience.com/evaluation-metrics-for-recommender-
systems-df56c6611093
[45] Zheng, Y., Liu, S., Li, Z., & Wu, S. (2021). Cold-start Sequential Recommendation via
Meta Learner. Proceedings of the 35th AAAI Conference on Artificial Intelligence, 4706–
4713. https://doi.org/10.1609/aaai.v35i5.16601
[46] Doumer. A.,& Haidour, A. (2021). Conception et réalisation d’un système de
recommandations : Application à la plateforme legal-doctrine.com. Projet de fin d’études
(PFE).
[47] Zhao, W. X., Mu, S., Hou, Y., Lin, Z., Chen, Y., Pan, X., Li, K., Lu, Y., Wang, H., Tian,
C., Min, Y., Feng, Z., Fan, X., Chen, X., Wang, P., Ji, W., Li, Y., Wang, X., & Wen, J.
(2021). RecBole: Towards a Unified, Comprehensive and Efficient Framework for
Recommendation Algorithms. https://doi.org/10.1145/3459637.3482016
[48] Järvelin, K., & Kekäläinen, J. (2002). Cumulated gain-based evaluation of IR
techniques. ACM Transactions on Information Systems, 20(4), 422–446.
https://doi.org/10.1145/582415.582418

84
Document Annexe

85
1. Gestion du projet
● Méthodologie de gestion
Pour la réalisation de notre projet, nous avons suivi une méthodologie de gestion agile (appelée
aussi ‘Scrum’). Où on se réunit régulièrement lors de réunions hebdomadaires appelées
"sprints" ou "itérations".
L'objectif de chaque sprint est de définir les tâches à accomplir dans un laps de temps
spécifique, généralement une à deux semaines. Au début de chaque sprint, l'équipe se réunit
lors d'une réunion de planification pour déterminer les objectifs spécifiques du sprint et
décomposer le travail en tâches réalisables.
Cette méthode de travail nous a donnés une flexibilité, nous nous sommes adaptés au
changement dynamique des priorités et des objectifs.
● Roadmap
C’est un document qui nous a été fourni par notre promoteur M. Hachani, chef de département
technique, ainsi que M. Khouas qui représente l’équipe ML. Ce document a servi à tracer les
grandes lignes du PFE et du travail attendu. Il contenait des indications sur par où commencer.
Planning prévisionnel :

Figure a.1 : Planning prévisionnel du PFE

Conseils sur ce qu'il faut rechercher en premier lieu :


● Systèmes de recommandation (général) : Basés sur le contenu, Collaboratifs, Hybrides,
Séquentiels.
● Modèles séquentiels : Réseaux de neurones classiques à propagation avant, RNN /
LSTM et GRU.
● Encodeurs/Décodeurs : Mécanismes d'attention, Auto-attention, Transformers.
● Comprendre quelques architectures classiques de transformers telles que BERT, GPT
et BART.
Modèles et recherches précédentes :
● Wang, Shoujin, et al. "Sequential recommender systems: challenges, progress and
prospects." arXiv preprint arXiv:2001.04830 (2019).
● Sun, Fei, et al. "BERT4Rec: Sequential recommendation with bidirectional encoder
representations from transformer." Proceedings of the 28th ACM international
conference on information and knowledge management. 2019.
● Liens vers des ressources de recherche: https://paperswithcode.com/task/sequential-
recommendation
Outils et technologies à utiliser :
● Python, Git (VSC)

86
● PyTorch (Framework d'apprentissage profond)
● DVC (Contrôle de version pour les données et les modèles)
Outils à utiliser pour la thèse (recommandation) :
● LaTeX (Overleaf), Zotero
Ressources :
● Article sur les systèmes de recommandation séquentiels :
https://analyticsindiamag.com/a-beginners-guide-to-sequential-recommendation-
systems/#:~:text=Generally%2C%20a%20sequential%20recommendation%20system,
rank%20the%20top%20candidate%20items
● Article sur le démarrage rapide avec la recommandation séquentielle :
https://medium.com/mlearning-ai/quick-start-with-sequential-recommendation-
990501358440
Thèses précédentes sur les systèmes de recommandation :
● Vous pouvez vous en inspirer, mais essayez de ne pas vous concentrer trop sur leur
méthodologie, surtout dans les parties évaluations et conception : lien vers la thèse
(PDF).
Phases du projet et organisation :
Le projet comprend 3 phases (y compris l'écriture de la thèse) :
● Synthèse
● Phase de recherche, qui comprend :
○ Exploration et analyse des données
○ Recherche de l'état de l'art sur le problème (recommandation et algorithmes
séquentiels)
○ Entraînement et évaluation de différentes approches
○ Comparaison de la solution développée avec les solutions existantes
○ Test de différentes hypothèses pouvant améliorer les prédictions
● Phase de livraison (MLOPS), qui comprend :
○ Intégration du modèle dans un microservice
○ Déploiement du modèle (et du microservice)
○ Rédaction de pipelines pour automatiser :
■ La collecte et le prétraitement des données
■ L'entraînement et les tests du modèle
■ Le déploiement
● Espace Drive
Nous nous sommes bien organisés pendant ces mois de travail continu grâce à un espace drive
qui contient les éléments suivants :

87
Figure a.2 : Espace Drive principal
Le dossier “data” contient les fichiers “.csv” des données historiques utilisées pour le
développement de nos solutions. Tandis que le dossier “Rapports” contient les livrables fournis.

Figure a.3 : Contenu du dossier “Rapports”

88
2. Informations supplémentaires sur RecBole
● Fichiers atomiques :
Comme promis, nous présentons une description plus détaillée sur les fichiers atomiques :
• L’extension « .inter » désigne un fichier obligatoire utilisé dans toutes les tâches de
recommandation. Chaque ligne est composée de l'identifiant de l'utilisateur (token), de
l'identifiant de l'élément (token), de la note utilisateur-élément (float, optionnel), de la date et
heure (float, optionnel) et du texte de l'avis (séquence de tokens, optionnel). Les différents
champs sont séparés par des virgules.
• Le fichier « .user » est un fichier de profil utilisateur, qui comprend les caractéristiques
catégorielles ou continues des utilisateurs. Chaque ligne est formatée comme suit : identifiant
de l'utilisateur (token), caractéristique (token ou float), caractéristique (token ou float), ...,
caractéristique (token ou float).
• Le fichier « .item » est un fichier de caractéristiques des éléments, qui décrit les
caractéristiques des éléments, et le format est le suivant : identifiant de l'élément (token),
caractéristique (token ou float), caractéristique (token ou float), ..., caractéristique (token ou
float). Les fichiers .user et .item sont utilisés pour la recommandation contextuelle.
• Le fichier « .kg » est un fichier de graphe de connaissances utilisé pour la recommandation
basée sur les connaissances. Chaque ligne correspond à un triplet ⟨entité tête, entité cible,
relation⟩, et le format est le suivant : identifiant de l'entité tête (token), identifiant de l'entité
cible (token), identifiant de la relation (token).
• Le fichier « .link » est également utilisé pour la recommandation basée sur les connaissances.
Il enregistre la correspondance entre les éléments du système de recommandation et les entités
du graphe de connaissances. Le format du fichier est le suivant : identifiant de l'élément (token),
identifiant de l'entité (token), ce qui indique la correspondance entre l'élément et l'entité.
• Le fichier « .net » est un fichier de réseau social utilisé pour la recommandation sociale. Le
format est le suivant : identifiant de l'utilisateur source (token), identifiant de l'utilisateur cible
(token), poids (float, optionnel).
● Paramètres d’environnement :
gpu_id (str) : L'identifiant du ou des périphériques GPU disponibles. La valeur par défaut est
0.
worker (int) : Le nombre de travailleurs traitant les données. La valeur par défaut est 0.
seed (int) : Graine aléatoire. La valeur par défaut est 2020.
state (str) : Niveau de journalisation. La valeur par défaut est 'INFO'. Plage possible : ['INFO',
'DEBUG', 'WARNING', 'ERROR', 'CRITICAL'].
encoding (str) : Encodage à utiliser pour la lecture des fichiers atomiques. La valeur par défaut
est 'utf-8'. Les encodages disponibles peuvent être trouvés ici.
reproducibility (bool) : Si elle est mise à ‘True’, l'outil utilisera des algorithmes de convolution
déterministes, ce qui rendra le résultat reproductible. Sinon, l'outil effectuera des tests sur
plusieurs algorithmes de convolution et sélectionnera le plus rapide, ce qui rendra le résultat
non reproductible mais pourra accélérer l'entraînement du modèle dans certains cas. La valeur
par défaut est ‘True’.
data_path (str) : Le chemin du jeu de données d'entrée. La valeur par défaut est 'dataset/'.

89
checkpoint_dir (str) : Le chemin pour enregistrer le fichier de point de contrôle. La valeur par
défaut est 'saved/'.
show_progress (bool) : Afficher ou non la barre de progression des itérations d'entraînement
et d'évaluation. La valeur par défaut est ‘True’.
save_dataset (bool) : Enregistrer ou non le jeu de données filtré. S’il est mis à ‘True’,
enregistrer le jeu de données filtré, sinon il ne sera pas enregistré. La valeur par défaut est
‘False’.
dataset_save_path (str) : Le chemin du jeu de données enregistré. L'outil essaiera de charger
le jeu de données à partir de ce chemin. S'il est égal à None, l'outil essaiera de charger le jeu de
données à partir de {checkpoint_dir}/{dataset}-{dataset_class_name}.pth. Si la
configuration du jeu de données enregistré n'est pas égale à la configuration actuelle, l'outil crée
le jeu de données à partir de zéro. La valeur par défaut est ‘None’.
save_dataloaders (bool) : Enregistrer ou non les dataloaders fractionnés. Si c’est ‘True’,
enregistrer les dataloaders fractionnés, sinon ils ne seront pas enregistrés. La valeur par défaut
est ‘False’.
dataloaders_save_path (str) : Le chemin des dataloaders enregistrés. L'outil essaiera de
charger les dataloaders à partir de ce chemin. S'il est égal à None, l'outil essaiera de charger les
dataloaders à partir de {checkpoint_dir}/{dataset}-for-{model}-dataloader.pth. Si la
configuration des dataloaders enregistrés n'est pas égale à la configuration actuelle, l'outil crée
les dataloaders à partir de zéro. La valeur par défaut est None.
log_wandb (bool) : Utiliser ou non Weights & Biases (W&B). S’il est égal à ‘True’, on utilise
W&B pour visualiser les configurations et les métriques des différentes expériences, sinon il ne
sera pas utilisé. La valeur par défaut est ‘False’.
wandb_project (str) : Le projet dans lequel mener les expériences avec W&B. La valeur par
défaut est 'RecBole'.
shuffle (bool) : Mélanger ou non les données d'entraînement avant chaque itération. La valeur
par défaut est True.
● Paramètres d’apprentissage :
epochs (int) : Le nombre d'itérations d'entraînement. La valeur par défaut est 300.
train_batch_size (int) : La taille du lot d'entraînement. La valeur par défaut est 2048.
learner (str) : Le nom de l'optimiseur utilisé. La valeur par défaut est 'adam'. Plage possible :
['adam', 'sgd', 'adagrad', 'rmsprop', 'sparse_adam'].
learning_rate (float) : Taux d'apprentissage. La valeur par défaut est 0.001.
train_neg_sample_args (dict) : Ce paramètre comprend 4 clés : distribution, sample_num,
dynamic et candidate_num.
- distribution (str) : Détermine la distribution des éléments négatifs dans les pools
d'échantillonnage. Nous prenons actuellement en charge deux types de distribution :
['uniform', 'popularity']. uniform signifie sélectionner uniformément des éléments
négatifs, tandis que popularity signifie sélectionner des éléments négatifs en fonction de
leur popularité (Counter(item) dans le fichier .inter). La valeur par défaut est uniform.
- sample_num (int) : Détermine le nombre d'échantillons négatifs que nous prévoyons
de prendre. La valeur par défaut est 1.

90
- dynamic (bool) : Détermine si nous adoptons un échantillonnage négatif dynamique.
La valeur par défaut est False.
- candidate_num (int) : Détermine le nombre d'éléments négatifs candidats lors de
l'échantillonnage négatif dynamique. La valeur par défaut est 0.
eval_step (int) : Le nombre d'itération d'entraînement avant une évaluation sur l'ensemble de
validation. Si la valeur est inférieure à 1, le modèle ne sera pas évalué sur l'ensemble de
validation. La valeur par défaut est 1.
stopping_step (int) : Le seuil pour l'arrêt précoce basé sur la validation. La valeur par défaut
est 10.
clip_grad_norm (dict) : Les arguments de clip_grad_norm_ qui permettent de limiter la norme
du gradient du modèle. La valeur par défaut est None.
loss_decimal_place (int) : Le nombre de décimales pour la perte d'entraînement. La valeur par
défaut est 4.
weight_decay (float) : La pénalité de régularisation L2 (weight decay) utilisée pour
l'optimiseur. La valeur par défaut est 0.0.
require_pow (bool) : L'indicateur détermine si l'opération de puissance est effectuée en
fonction de la norme dans EmbLoss. La valeur par défaut est False.
enable_amp (bool) : Le paramètre détermine si l'on utilise l'entraînement avec précision mixte.
La valeur par défaut est False.
enable_scaler (bool) : Le paramètre détermine si l'on utilise le GradScaler, souvent utilisé avec
l'entraînement à précision mixte pour éviter le débordement de précision du gradient. La valeur
par défaut est False.
● Paramètres d’évaluation :
eval_args (dict) : Ce paramètre comprend 4 clés : group_by, order, split et mode, qui contrôlent
respectivement la stratégie de regroupement des données, la stratégie de tri des données, la
stratégie de découpage des données et le mode d'évaluation pour l'évaluation du modèle.
- group_by (str) : détermine comment nous regroupons les données dans .inter. Nous
prenons actuellement en charge deux types de stratégies de regroupement : ['user',
'none']. Si la valeur de group_by est user, les données seront regroupées par la colonne
USER_ID FIELD et divisées dans la dimension utilisateur. Si la valeur est nulle, les
données ne seront pas regroupées. La valeur par défaut est utilisée.
- order (str) : détermine comment nous trions les données dans .inter. Nous prenons
actuellement en charge deux types de stratégies de tri : ['RO', 'TO'], qui désignent le tri
aléatoire et le tri temporel. Pour ‘RO’, nous mélangeons les données, puis les divisons
dans cet ordre. Pour ‘TO’, nous trions les données en fonction de la colonne
TIME_FIELD par ordre croissant, puis les divisons dans cet ordre. La valeur par défaut
est ‘RO’.
- split (dict) : détermine comment nous divisons les données dans .inter. Nous prenons
actuellement en charge deux types de stratégies de découpage : ['RS', 'LS'], qui
désignent le découpage basé sur le ratio et le découpage leave-one-out. Si la clé de split
est ‘RS’, vous devez définir le ratio de découpage comme [0.8, 0.1, 0.1], [7, 2, 1] ou [8,
0, 2], ce qui représente respectivement le ratio de l'ensemble d'entraînement, de
l'ensemble de validation et de l'ensemble de test. Si la clé de split est ‘LS’, nous prenons
actuellement en charge trois modes LS : ['valid_and_test', 'valid_only', 'test_only'] et

91
vous devez choisir un mode comme valeur de LS. La valeur par défaut de split est {'RS':
[0.8, 0.1, 0.1]}.
- mode (str): détermine la plage de données sur laquelle nous évaluons le modèle. Nous
prenons en charge quatre types de modes d'évaluation : ['full', 'unixxx', 'popxxx',
'labeled'].
repeatable (bool) : Indique si l'évaluation du résultat doit être effectuée avec une scène de
recommandation reproductible. Notez que cela est désactivé pour les modèles séquentiels, car
la recommandation est déjà reproductible. Pour les autres modèles, la valeur par défaut est
False.
metrics (list or str) : Métriques d'évaluation. La valeur par défaut est ['Recall', 'MRR', 'NDCG',
'Hit', 'Precision'].

92

Vous aimerez peut-être aussi