Année universitaire 2019-2020
Mémoire présenté à
La Faculté des Sciences Dhar El Mahraz Fès
Pour l’obtention du Diplôme de Master
Web Intelligence et Science des Données (WISD)
Master en double diplomation avec l’Université Sorbonne Paris Nord
Spécialité : Informatique
Intitulé :
Chatbot sur COVID-19 avec l’arabe dialectal
Intitulé du Stage/PFE
Présenté par : AKKA Othman
Encadré par : PhD. SATORI Hassan et Mr. ZEDDARI Abderrazzak
Soutenu le 14/07/2020, devant le jury :
- Mohamed Adnane MAHRAZ Professeur à la Faculté des Sciences Dhar El Mahraz Fès
- My Abdelouahed SABRI Professeur à la Faculté des Sciences Dhar El Mahraz Fès
- Hassan SATORI Professeur à la Faculté des Sciences Dhar El Mahraz Fès
- Ali YAHYAOUY Professeur à la Faculté des Sciences Dhar El Mahraz Fès
2
Remerciement
C’est avec un grand plaisir que je réserve ces lignes en gage d’obligeance et de gratitude à tous ceux dont j’ai
sollicité l’aide et la collaboration durant ce projet.
Mon dévouement et mon reconnaissance s’adressent à mon encadrant pédagogique Mr. SATORI Hassan
professeur à la Faculté des sciences de Fès pour sa disponibilité, son orientation avisée, ainsi que les précieux conseils
qu’il n’a cessé de me prodiguer et qui ont fort contribué à l’accomplissement de ce travail.
Remerciements spéciaux à tout le corps professoral de la Faculté des Sciences de Fès particulièrement celui
du département Informatique qui ont su m’inculquer des connaissances pluridisciplinaires, piliers de toutes nos
imminentes occupations professionnelles.
Je tente fermement à remercier l’ensemble du personnel De Axilog : Cadres et employés, notamment Mr.
ZEDDARI Abderrazzak le fondateur de Axilog, pour l’intérêt particulier qu’ils ont porté à ce travail et le temps
qu’ils m’ont octroyé. Ainsi à toutes les personnes que j’ai omis de citer et qui, par leur courtoisie et leur soutien, ont
accepté généreusement de m’orienter.
Je voudrais également exprimer mon ample gratitude envers les membres de jury qui ont bien voulu me donner
l’honneur d’évaluer et d’apprécier ce travail ainsi que pour leur transparence et leurs efforts à garantir les meilleures
conditions lors de la soutenance.
3
Dédicaces
Je dédie ce travail et ma profonde gratitude et reconnaissance,
A mes chers parents, qui ont constitué la première école de mon existence.
Sans eux je n’y serais jamais arrivé. Merci pour tous leurs sacrifices, leur amour et leur soutien moral
tout au long de ma vie.
A mes sœurs et mes frères que j’aime tant, qui n’ont cessé de m’encourager je vous souhaite une
vie pleine de bonheur et de succès et d’amour.
Que ce travail soit l’accomplissement de vos vœux tant allégués, et le fruit de votre soutien infaillible.
A toute ma famille,
Merci d’être toujours là pour moi.
4
Sommaire
Remerciement................................................................................................................................................................................. 2
Dédicaces........................................................................................................................................................................................ 3
Sommaire........................................................................................................................................................................................ 4
Liste de figures ............................................................................................................................................................................... 7
Résumé ........................................................................................................................................................................................... 9
Abstract ........................................................................................................................................................................................ 10
Introduction générale.................................................................................................................................................................... 11
Liste des abréviations ................................................................................................................................................................... 13
Chapitre I : Organisme d’accueil et Contexte général.................................................................................................................. 14
Introduction .............................................................................................................................................................................. 14
1. Organisme d’accueil......................................................................................................................................................... 14
1.1 Présentation de Axilog.............................................................................................................................................. 14
2. Cadre général du projet..................................................................................................................................................... 14
2.1 Etude d’existant........................................................................................................................................................ 14
2.1.1 DakiBot............................................................................................................................................................. 15
2.1.2 arabot................................................................................................................................................................ 15
2.1.3 Dial Technologies :........................................................................................................................................... 15
2.2 Planning du Projet .................................................................................................................................................... 16
2.2.1 Organigramme de projet................................................................................................................................... 16
2.2.2 Diagramme de Gantt provisionnel.................................................................................................................... 17
2.2.3 Diagramme de Gantt Réel ................................................................................................................................ 18
2.3 Cahier des charges.................................................................................................................................................... 19
Conclusion................................................................................................................................................................................ 19
Chapitre II : Etat de l’art............................................................................................................................................................... 20
Introduction .............................................................................................................................................................................. 20
1. Natural Language Processing – NLP................................................................................................................................ 20
1.1 Définition :................................................................................................................................................................ 20
2. Data Mining...................................................................................................................................................................... 20
2.1 Définition :................................................................................................................................................................ 20
2.2 Classification ............................................................................................................................................................ 21
3. Machine Learning............................................................................................................................................................. 22
5
3.1 Définition :................................................................................................................................................................ 22
4. Deep learning.................................................................................................................................................................... 23
4.1 Définition :................................................................................................................................................................ 23
4.2 Les applications du Deep Learning .......................................................................................................................... 23
4.3 Le réseau neuronal.................................................................................................................................................... 25
4.3.1 Définition :........................................................................................................................................................ 25
4.3.2 Neurone biologique : ........................................................................................................................................ 25
4.3.3 Neurone artificiel :............................................................................................................................................ 26
4.4 Les fonctions d’activation : ...................................................................................................................................... 26
4.5 Différents types de réseaux de neurones dans le Deep Learning ............................................................................. 28
4.5.1 Artificial Neural Networks (ANN)................................................................................................................... 28
4.5.1.1 Avantages du réseau de neurones artificiels (ANN)..................................................................................... 30
4.5.2 Convolution Neural Network (CNN) ............................................................................................................... 30
4.5.2.1 Avantages du réseau neuronal à convolution (CNN) ................................................................................... 30
4.5.3 Recurrent Neural Networks (RNN).................................................................................................................. 32
4.5.3.1 Avantages du réseau neuronal récurrent (RNN) :......................................................................................... 32
4.5.3.2 RNN Encoder/Decoder architecture (Seq2Seq) ........................................................................................... 34
4.5.3.3 Attention Mechanism ................................................................................................................................... 35
4.5.3.4 Architecture de transformateur..................................................................................................................... 35
5. Chatbots............................................................................................................................................................................ 37
5.1 Définition :................................................................................................................................................................ 37
5.2 Une petite histoire sur les Chatbots :........................................................................................................................ 38
5.3 Analyse et présentation de quelques Chatbots : ....................................................................................................... 39
5.4 Elaboration d’un Chatbot : ....................................................................................................................................... 40
5.5 Les types de chatbot : ............................................................................................................................................... 41
5.6 Le flux de travail de Chatbot :.................................................................................................................................. 42
5.7 Architecture générale de système............................................................................................................................. 43
Conclusion................................................................................................................................................................................ 44
Chapitre III : Préparation du Data Set .......................................................................................................................................... 45
Introduction .............................................................................................................................................................................. 45
1. Data set............................................................................................................................................................................. 45
1.1 Généralité ................................................................................................................................................................. 45
1.2 Qualité/ Quantité....................................................................................................................................................... 45
1.3 Collection des données ............................................................................................................................................. 45
6
1.4 Structure d’un jeu de données................................................................................................................................... 46
1.5 L'importance du prétraitement avec NLP................................................................................................................. 46
1.6 Les étapes du pré-traitement..................................................................................................................................... 47
1.6.1 Contexte............................................................................................................................................................ 47
1.6.2 Tokenisation du texte........................................................................................................................................ 49
1.6.3 La stemmatisation............................................................................................................................................. 49
1.6.4 Retrait des stopwords........................................................................................................................................ 51
Conclusion................................................................................................................................................................................ 52
Chapitre IV : Réalisation d’un chatbot......................................................................................................................................... 53
Introduction .............................................................................................................................................................................. 53
1. Solution proposée............................................................................................................................................................. 53
2. Technologies utilisées....................................................................................................................................................... 54
2.1 Langage de programmation (Python)....................................................................................................................... 54
2.2 Les bibliothèques...................................................................................................................................................... 55
3. L’implémentation ............................................................................................................................................................. 59
3.1 Importation des packages ......................................................................................................................................... 59
3.2 Pré-traitement des données....................................................................................................................................... 59
3.2.1 Lecture des données des fichiers ...................................................................................................................... 59
3.2.2 Préparation des données pour le modèle Seq2Seq ........................................................................................... 59
3.3 Vectorisation............................................................................................................................................................. 61
3.3.1 Word Embedding.............................................................................................................................................. 61
3.4 Création du modèle................................................................................................................................................... 62
3.5 La formation (Training)............................................................................................................................................ 62
3.6 Définition de modèles d'inférence ............................................................................................................................ 64
3.7 Parler avec notre chatbot(prédit) .............................................................................................................................. 65
Conclusion................................................................................................................................................................................ 66
Conclusion générale ..................................................................................................................................................................... 67
BIBLIOGRAPHIE & WEBOGHRAPHIE .................................................................................................................................. 69
7
Liste de figures
Figure I-1 : logo de l'entreprise Axilog.......................................................................................................................................... 14
Figure I-2: logo de l'entreprise Daki ............................................................................................................................................. 15
Figure I-3: logo de l'entreprise arabot.......................................................................................................................................... 15
Figure I-4: logo de l'entreprise Dial Technologies ........................................................................................................................ 16
Figure I-5 : Organigramme de projet............................................................................................................................................ 17
Figure I-6 : Tableau des taches provisionnelles............................................................................................................................ 17
Figure I-7 : Diagramme de Gantt Provisionnel ............................................................................................................................. 18
Figure I-8 : Tableaux des taches réelles........................................................................................................................................ 18
Figure I-9 : Diagramme de Gantt réel........................................................................................................................................... 19
Figure II-1 : Processus de Data Mining ......................................................................................................................................... 21
Figure II-2 : Structure d'un neurone biologique........................................................................................................................... 25
Figure II-3 : Structure d'un neurone artificiel............................................................................................................................... 26
Figure II-4 : Représentation graphique de la fonction Sigmoïde.................................................................................................. 27
Figure II-5 : Représentation graphique de la fonction Relu. ........................................................................................................ 27
Figure II-6 : Structure d'un perceptron......................................................................................................................................... 28
Figure II-7 : Le fonctionnement XOR (séparable non linéaire)..................................................................................................... 29
Figure II-8 : Structure d'un perceptron multicouche.................................................................................................................... 29
Figure II-9 : résultat de Sortie de convolution.............................................................................................................................. 30
Figure II-10 : CNN - Classification d'images.................................................................................................................................. 31
Figure II-11 : image....................................................................................................................................................................... 31
Figure II-12 : Image convolutante avec un filtre........................................................................................................................... 32
Figure II-13 : Schéma d'un réseau neuronal récurrent................................................................................................................. 32
Figure II-14 : Modèle Many2Many Seq2Seq ................................................................................................................................ 33
Figure II-15 : RNN déroulé............................................................................................................................................................ 33
Figure II-16 : Schéma d'un réseau LSTM....................................................................................................................................... 34
Figure II-17 : Schéma de l'architecture séquence à séquence ..................................................................................................... 34
Figure II-18 : Diagramme de l'architecture séquence à séquence avec un code bidirectionnel et appliquer l'attention dans le
processus de décodage ................................................................................................................................................................ 35
Figure II-19 : Schéma simplifié de l'architecture Transformer..................................................................................................... 36
Figure II-20 : image de conversation d’un utilisateur et chatbot................................................................................................. 37
Figure II-21 : L'Histoire des Chatbots (Image de l’Internet et Réorganisation Personnelle)........................................................ 38
Figure II-22 : Generative-based chatbot model Figure II-23 : Retrieval-based chatbot model ....... 41
Figure II-24 : Chatbot conversation framework ........................................................................................................................... 42
Figure II-25 : Le flux de travail Chatbot ........................................................................................................................................ 43
Figure II-26 : Architecture générale de système .......................................................................................................................... 44
Figure III-1 : La structure de data set............................................................................................................................................ 46
Figure III-2 : Les principales phases du prétraitement du texte................................................................................................... 48
Figure III-3 : Exemple d'un Segmenteur ....................................................................................................................................... 49
Figure III-4 : Exemple d'un stemming........................................................................................................................................... 51
Figure III-5 : Exemple d'un stopword............................................................................................................................................ 51
8
Figure IV-1 : Interface de l’entre au chatbot ................................................................................................................................ 53
Figure IV-2 : Logo python ............................................................................................................................................................. 54
Figure IV-3 : comparaison entre python et autres langages ........................................................................................................ 54
Figure IV-4 : Logo de Spyder avec ANACONDA ............................................................................................................................ 55
Figure IV-5 : Les librairies Deep Learning ..................................................................................................................................... 56
Figure IV-6 : Téléchargement de NLTK Book Collection............................................................................................................... 57
Figure IV-7 : Loi empirique de Zipf ............................................................................................................................................... 60
Figure IV-8 : Vectorisation d’une question................................................................................................................................... 61
Figure IV-9 : Fonction de création le modèle ............................................................................................................................... 63
Figure IV-10 : précision de modèle selon les époques................................................................................................................. 64
Figure IV-11 : Example de modèle d’inférence ............................................................................................................................ 64
Figure IV-12 : Example de modèles inference_encoder et inference_decoder........................................................................... 65
Figure IV-13 : L’interface de chatbot............................................................................................................................................ 65
9
Résumé
Dans ce travail, que j’ai effectué au sein de la société Axilog, dans le cadre du projet de fin d’études pour
l’obtention du Master « Web Intelligence et Science des Données » en partenariat avec l’université Paris 13, Master
« Sciences des Données et Intelligence Artificielle ».
J’ai eu la chance durant ce stage de travailler sur un projet d’actualité, qui est le chatbot d’arabe dialectale, dont
l’objectif principal est de présenter des conseils aux personnes à propos de coronavirus COVID-19, des statistiques
des cas de décès et les nouveaux cas blesses en chaque jour en tous les pays de monde et aussi il contient des
informations sur les effets de coronavirus sur l’économie.
Dans le contexte de coronavirus, il y a beaucoup de personnes (gens) qui veulent connaître des informations en
arabe dialectal mais ils n’ont rien trouvé, c'est pour cela nous avons pensé à réaliser un chatbot efficace pour répondre
aux questions de ces personnes qui savent écrire ou pas avec des informations fiables.
Un agent conversationnel (chatbot) est un logiciel capable de communiquer avec les humains utilisant le
langage naturel. La modélisation de la conversation est une tâche importante en natural langage processing et
intelligence artificielle (IA). En effet, depuis la naissance de l'IA, la création un bon chatbot reste l'un des défis les
plus difficiles du domaine. Alors que les chatbots peuvent être utilisés pour diverses tâches, en général, ils doivent
comprendre les énoncés des utilisateurs et fournir des réponses sont pertinents pour le problème en question.
Dans le passé, les méthodes de construction des architectures de chatbot reposaient sur des règles manuscrites
et des modèles ou des méthodes statistiques simples. Avec l'essor du deep learning, ces modèles ont été rapidement
remplacé par des réseaux de neurones formables de bout en bout vers 2015. Plus précisément, le modelé de recurrent
encoder-decoder model (Cho et al., 2014) domine la tâche de la modélisation conversationnelle. Cette architecture a
été adaptée du domaine de la traduction automatique neuronale, où elle fonctionne extrêmement bien. Depuis lors,
une multitude de variantes (Serban et al., 2016) et de fonctionnalités ont été présentés qui augmentent la qualité de la
conversation dont les chatbots sont capables.
Il existe deux types : les modèles basés sur la récupération (retrieval-based models) et les modèles basés sur la
génération (generative-based models). La différence entre eux est la liberté dont ils disposent au moment de générer
une réponse donnée une question. Les modèles de chatbot habituellement utilisés dans les services publics sont basés
sur des règles ou basés sur la récupération étant donné la nécessité de garantir la qualité et de donner des réponses
précises aux utilisateurs. Mais ces modèles peuvent gérer seules les conversations correspondent à leurs réponses
écrites précédentes et, par conséquent, les conversations peuvent cela peut parfois sembler artificiel si cela sort du
sujet, donc nous avons concentré sur un domaine fermé avec chatbot à réponses génératives (generative-based
models). Malgré qu'il soit plus difficile à former et donnant des résultats plus inexacts, c'est l'avenir des chatbots. Il
nous a fourni plus de possibilités d'apprentissage et de recueillir des informations plus précieuses.
Mots clés
À la fin du résumé, les mots clés sont généralement présentés. Il y a Chatbot, l'intelligence artificielle, naturel
language processing, la science des données, Deep Learning et Tensorflow.
10
Abstract
This document is the synthesis of my work, which I carried out within the company Axilog, within the
framework of the project of graduation for obtaining the Master "Web Intelligence and Data Science" in partnership
with University Paris 13, Master "Data Sciences and Artificial Intelligence".
I had the chance during this internship to work on a topical project, which is the chatbot of dialectal Arabic,
whose main objective is the main objective is to present advice to people about COVID coronavirus- 19, statistics of
deaths and new cases injured daily in all countries of the world and also it contains information on the effects of
coronavirus on the economy.
In the context of coronavirus, there are many people (people) who want to know information in dialectal Arabic
but they found nothing, that's why we thought of making an effective chatbot to answer the questions of these people
who can write or not write with reliable information.
A chatbot is software capable of communicating with humans using natural language. Modeling conversation
is an important task in natural language processing and artificial intelligence (AI). Indeed, since the birth of AI,
creating a good chatbot remains one of the most difficult challenges in the field. While chatbots can be used for a
variety of tasks, in general, they must understand what users are saying and provide answers that are relevant to the
problem at hand.
In the past, the methods of building chatbot architectures were based on handwritten rules and simple statistical
models or methods. With the rise of deep learning, these models were quickly replaced by end-to-end formable neural
networks around 2015. More specifically, the recurrent encoder-decoder model (Cho et al., 2014) dominates the task
of conversational modeling. This architecture has been adapted from the field of neural machine translation, where it
works extremely well. Since then, a multitude of variants (Serban et al., 2016) and functionalities have been presented
which increase the quality of the conversation that chatbots are capable of.
There are two types: retrieval-based models and generative-based models. The difference between them is the
freedom they have when generating a given answer to a question. The chatbot models usually used in public services
are rule based or recovery based given the need to guarantee quality and give precise answers to users. But these
models can handle only the conversations that correspond to their previous written responses and, therefore, the
conversations can sometimes seem artificial if it comes out of the subject, so we focused on a closed domain with
generative-based chatbot models). Despite being more difficult to train and giving more inaccurate results, this is the
future of chatbots. It provided us with more learning opportunities and to gather more valuable information.
Keywords
At the end of the abstract keywords are usually presented. There are Chatbot, artificial intelligence, natural
language processing, Data science, Deep Learning and Tensorflow.
11
Introduction générale
La génération de dialogues ou le développement d'agents conversationnels intelligents utilisant l'intelligence
artificielle ou la technique d'apprentissage automatique est un problème intéressant dans le domaine du naturel
language processing. Dans de nombreux projets de recherche et développement, ils utilisent l'intelligence artificielle,
les algorithmes d'apprentissage automatique et les techniques de naturel language processing pour développer un agent
de conversation / dialogue. Étant donné que les chatbots imitent une personne réelle.
Des techniques sont utilisées pour les construire. L'une de ces techniques au sein de l'IA est le Deep Learning qui
imite le cerveau humain. Il trouve des modèles à partir des données d'entraînement et utilise les mêmes modèles pour
traiter de nouvelles données. Le Deep Learning promet de résoudre des problèmes d'IA de longue date comme Vision
par ordinateur et naturel language processing (NLP). Leur recherche et développement est toujours en cours et en
expérimentation. Les agents de dialogue / conversation sont principalement utilisés par les entreprises, les
organisations gouvernementales et les organisations à but non lucratif. Ils sont fréquemment déployés par des
organisations financières comme les banques, les sociétés de cartes de crédit, les entreprises comme les magasins de
détail en ligne et les start-ups. Ces agents virtuels sont adoptés par des entreprises allant des très petites start-ups aux
grandes entreprises. Il existe de nombreux cadres de développement de chatbot disponibles sur le marché, à la fois
basés sur le code et basés sur l'interface. Mais ils manquent de flexibilité et d'utilité pour développer de vrais dialogues.
Parmi les assistants personnels populaires intelligents, on trouve Alexa d'Amazon, Cortana de Microsoft et Google
Assistant de Google. Le fonctionnement de ces agents est limité, ils sont basés sur la recherche et ils ne visent pas non
plus à tenir des conversations qui imitent une véritable interaction humaine Ils ne peuvent pas faire une conversation
cohérente et engageante entre deux êtres humains sur des sujets populaires tels que comme nouvelles récentes,
politique et sport. Parmi les chatbots actuels, beaucoup sont développés en utilisant des techniques basées sur des
règles, des algorithmes d'apprentissage simples ou des techniques basées sur la récupération qui ne génèrent pas de
bons résultats. Nous évaluons de nouvelles implémentations et rend compte de leur efficacité. Nous avons analysé des
articles qui sont fondamentaux pour ce problème ainsi que les développements récents dans ce domaine. Figure 1 est
la carte conceptuelle des sujets de cette revue.
Figure 1 : Carte conceptuelle des sujets
12
Dans ce projet, nous avons développé un agent conversationnel intelligent utilisant des techniques avancées proposées
dans des articles de recherche récemment publiés. Pour développer un chatbot intelligent, nous avons utilisé des
techniques de naturel language processing (NLP) et un modèle basé sur la modélisation de séquence à séquence
(Seq2Seq) avec une architecture codeur-décodeur. Ce codeur-décodeur utilise un réseau neuronal récurrent avec des
cellules bidirectionnelles LSTM (Long-Short-Term-Memory) et Attention Mechanism.
13
Liste des abréviations
ANN : Artificial Neural Networks
DNN : Deep Neural Network
CNN : Convolutional Neural Network
RNN : Recurrent Neural Networks
API : Application programming interface
TF : Tensorflow
LSTM : Long Short Term Memory
NLP : Natural Language Processing
14
Chapitre I : Organisme d’accueil et Contexte général
Introduction
Le stage de fin d’études, comme son nom l’indique, s’effectue à la fin du cursus de formation, sert à bien faire le lien
entre les connaissances théoriques acquises et l’application dans un contexte de projet de fin d’études, ce dernier est
proposé soit par l’organisme soit par l’intéressé afin d’atteindre ses objectifs et ses besoins. Pour cela, il est primordial
d’avoir une vision globale sur l’organisme dans le but de faire un pas vers la réalisation du projet, Dans ce premier
chapitre nous allons faire une brève présentation de la société Marocaine Axilog. C’est-à-dire nous allons présenter
l’organisme d’accueil et le sujet à traiter de mon projet. Puis nous allons citer quelques exemples réalisés de chatbot.
Ensuite nous allons présenter le projet en son intégralité : les objectifs à atteindre, le cahier de charge et le planning.
1. Organisme d’accueil
1.1 Présentation de Axilog
I. ggg
Figure I-1 : logo de l'entreprise Axilog
Axilog est une Startup innovante qui offre des services dans divers domaine, spécialement les telecoms et la fintech.
Nous accompagnons les grandes entreprises pour mettre en place des solutions scalable au marché marocain.
Les ingénieurs de cette entreprise ont réalisé plusieurs des projets dans différents branche par Example :
Mobile Money : Produit Wallet innovant qui va faciliter la gestion du cash-flow et qui va redresser la consommation
utilisateur…
Blockchain : Développement d'une solution blockchain avec l’architecture microservice.
Business intelligence : Développement des solutions ETL/BI dans le secteur telecom.
Biometrie : Développement des solutions autour de la biométrie avec une architecture microservice.
2. Cadre général du projet
2.1 Etude d’existant
Avant de se lancer dans la procédure de réalisation de cahier de charges, il est indispensable de faire des recherches
sur l’existence des applications similaires à ce que nous voulons réaliser.
15
2.1.1 DakiBot
DakiBot est une start-up de logiciels basée à Paris, en France et à Casablanca au Maroc, elle apporte des avancés tous
les aspects de flux de support client de l’expérience client, elle crée des agents conversationnels qui comprennent les
langues et les dialectes locaux. Permettant à l’entreprise de croitre plus rapidement et de rendre le travail beaucoup
plus facile.
Figure I-2: logo de l'entreprise Daki
Coronabot est un agent conversationnel virtuel et capable de répondre automatiquement en darija (en français par
Example : ch7al kayen men 7ala f lmaghrib) aux questions posées par les internautes au sujet du coronavirus, à partir
de sources du ministère de la Santé et de l’Organisation mondiale de la Santé (OMS).
2.1.2 arabot.
Arabot est une entreprise de haute technologie spécialisée dans la fourniture de solutions de bout en bout qui se
concentrent sur la création d'une expérience conversationnelle authentique entre les robots et les humains. Grâce à ses
chatbots d'IA conversationnels de pointe et à ses technologies de compréhension de texte, arabot aide les entreprises
à communiquer et à dialoguer avec les clients de manière efficace, efficiente et intelligente sur un large éventail de
sites Web, d'applications et de plateformes de médias sociaux et elle fondée en 2016.
Figure I-3: logo de l'entreprise arabot
Djingo est le tout premier outil d'aide aux télécommunications numériques dans la région, c'est un chatbot intelligent
équipé de l'intelligence artificielle, qui aidera à fournir aux clients d'Orange Jordan des informations en temps réel sur
ses offres, services et produits, ainsi qu'à les assister du tout fois.
2.1.3 Dial Technologies :
Dial Technologies est une entreprise axée sur l’innovation digitale, basée à Casablanca et aux Emirats Arabes Unis,
permettant aux entreprises, ayant la volonté de transformer leurs méthodes en utilisant les dernières innovations
16
technologiques pour améliorer leurs processus internes, accélérer leur croissance et simuler leur engagement envers
leurs clients.
Figure I-4: logo de l'entreprise Dial Technologies
Sehatuk-bot est un chatbot conçu pour répondre aux différentes questions angoissantes relatives à cette pandémie du
21éme siècle. Cet outil est disponible en version arabe et française (et très prochainement en darija), l’accès est gratuit
et disponible 24h/24 et 7j/7.
2.2 Planning du Projet
2.2.1 Organigramme de projet
Avant la réalisation du planning d'un projet, il est nécessaire de définir complètement le contenu du projet. Pour
faciliter cette définition nous allons décomposer le projet en sous-ensembles qui seront plus faciles à gérer et les
présenter sous forme d’organigramme.
Voici comment et sur quelle base le découpage du projet en taches a été effectuée :
• Etude de faisabilité : Dans cette partie nous avons essayé de lire les articles les plus concentrés qui traitent le
même sujet de mon projet afin que nous puissions bien comprendre et limiter les besoins, également dans cette
partie nous avons précisé les approches à utiliser.
• Spécification des besoins : Cette étape est nécessaire pour l’amélioration des services que fait un chatbot et
pour la détermination des grands objectifs, et proposé des solutions.
• Etude détaillée : Dans cette phase nous avons étudié la base de données d’une manière profonde afin que nous
puissions rendre le développement plus fidèle aux besoins.
• Implémentation : Le développement commence dans cette étape, nous avons commencé par la préparation des
données puis la réalisation du chatbot avec une interface web et une petite application mobile.
• Finalisation du projet : Tests nécessaires assurent le bon fonctionnement du chatbot et enfin la rédaction du
rapport.
17
Figure I-5 : Organigramme de projet
2.2.2 Diagramme de Gantt provisionnel
Figure I-6 : Tableau des taches provisionnelles
18
Figure I-7 : Diagramme de Gantt Provisionnel
Les figures I-6 et I-7 montrent le planning proposé au début du projet, il été prévu de terminer le début du mois juin.
Cependant il y a des exceptions qui ont obstruent la démarche par Example : les examens, les projets académiques et
le problème de confinement.
2.2.3 Diagramme de Gantt Réel
Figure I-8 : Tableaux des taches réelles
19
Figure I-9 : Diagramme de Gantt réel
2.3 Cahier des charges
Réalisation d'un modèle capable avec naturel language processing et intelligence artificielle qui est répondu aux
questions des utilisateurs en arabe dialectal concernant COVID-19 à propos de la sante, l’économie ou les statistiques
de cas de décès ou blesser en chaque jour.
Conclusion
Dans ce chapitre, nous avons présenté l’organisme d’accueil, ainsi nous avons pu insérer notre projet dans son contexte
en présentant la solution adoptée pour résoudre les problèmes et répond aux objectifs. Dans le chapitre suivant, nous
allons traiter l’aspect fonctionnel du projet.
20
Chapitre II : Etat de l’art
Introduction
Il y a eu de nombreux développements et expérimentations récents dans le système d'agents conversationnels. Outre
les techniques de développement de chatbot traditionnelles qui utilisent des techniques basées sur des règles ou des
algorithmes d'apprentissage automatique simples, de nombreux chatbots avancés utilisent des techniques avancées de
naturel language processing (NLP) et des techniques d'apprentissage approfondi comme Deep Neural Network (DNN)
et Deep Reinforcement Learning (DRL).
Ce chapitre explique le contexte théorique de ce projet. Tout d'abord, cette section définit le domaine qui étudie et
développe des modèles de chatbot, natural language processing. Alors, cette section fournit une vision globale de ce
que sont les algorithmes d'apprentissage et comment ils fonctionnent. Après cela, cette section va plus loin dans
l'explication de celles spécifiques utilisées tout au long du projet.
Enfin, cette section termine la présentation du type d'architectures choisies.
1. Natural Language Processing – NLP
1.1 Définition :
Naturel language processing (NLP) est un domaine de recherche de l'intelligence artificielle (IA) qui se concentrer sur
l'étude et le développement de systèmes qui permettent la communication entre une personne et une machine à travers
le langage naturel.
Les chatbots appartiennent au domaine de la NLP étant donné l'importance de leur capacité à comprendre la langue et
savoir comment en extraire les informations pertinentes. Les deux modèles, basés sur la récupération et générative
doit être en mesure d'identifier certaines informations de la phrase d'entrée afin pour choisir ou créer une réponse.
2. Data Mining
2.1 Définition :
Il ne suffit pas de stocker une multitude de données au sein d’une base spécialisée, Data Warehouse, ou Big exploiter.
C’est là le rôle du Data Mining qui, bien utilisé, saura tirer les enseignements contenus dans cette masse de données
bien trop importante pour se contenter des seuls outils statistiques. Voyons, le principe, les méthodes utilisées, les
outils et un cas concret mettant en évidence l’importance de la qualité des données.
Le Data Mining est en fait un terme générique englobant toute une famille d'outils facilitant l'exploration et l'analyse
des données contenues au sein d'une base décisionnelle de type Data Warehouse ou Data Mart. Les techniques mises
en action lors de l'utilisation de cet instrument d'analyse et de prospection sont particulièrement efficaces pour extraire
des informations significatives depuis de grandes quantités de données.
Le principe : une démarche simplifiée en cinq étapes majeures (voire Figure II-1).
21
II. hdhhd
Figure II-1 : Processus de Data Mining
Etape1 : Quel est le but de l’analyse, que recherche-t-on ? Quels sont les objectifs ? Comment traduire le problème en
une question pouvant servir de sujet d’enquête pour cet outil d’analyse bien spécifique ? A ce sujet, se souvenir que
l’on travaille à partir des données existantes, la question doit être ciblée selon les données disponibles.
Etape2 : Une phase absolument essentielle. On n'analyse que des données utilisables, c'est à dire "propres" et
consolidées. On n'hésitera pas à extraire de l'analyse les données de qualité douteuse. Bien souvent, les données
méritent d'être retravaillées. S'assurer au final que la quantité de données soit suffisante pour éviter de fausser les
résultats. Cette phase de collecte nécessite le plus grand soin.
Etape3 : Ne pas hésiter à valider les choix d'analyse sur plusieurs jeux d'essais en variant les échantillons. Une première
évaluation peut nous conduire à reprendre les points 1 ou 2.
Etape4 : Il est temps d'exploiter les résultats. Pour affiner l'analyse on n'hésitera pas à reprendre les points 1, 2 ou 3 si
les résultats s'avéraient insatisfaisants.
Etape5 : Les résultats sont formalisés pour être diffusé. Ils ne seront utiles qu'une fois devenus une connaissance
partagée. C'est bien là l'aboutissement de la démarche. C'est aussi là que réside la difficulté d'interprétation et de
généralisation.
2.2 Classification
Au cours du processus d’exploration de données, les grands ensembles de données sont d’abord triés, puis les modèles
sont identifiés et les relations sont établies pour effectuer l’analyse des données et résoudre les problèmes.
La classification est une tâche d’analyse de données, c’est-à-dire le processus de recherche d’un modèle qui décrit et
distingue les classes de données et les concepts. La classification est le problème de l'identification à laquelle d'un
ensemble de catégories (sous-populations) une nouvelle observation appartient, sur la base d'un ensemble de données
d'apprentissage contenant des observations et dont l'appartenance à une catégorie est connue.
22
C'est un processus en deux étapes tel que :
Étape d’apprentissage (phase d’entraînement) : Construction du modèle de classification différents algorithmes sont
utilisés pour créer un classificateur en faisant en sorte que le modèle apprenne à l’aide du jeu d’entraînement
disponible. Le modèle doit être formé pour la prédiction de résultats précis.
Étape de classification : modèle utilisé pour prédire les étiquettes de classe et tester le modèle construit sur des données
de test afin d'estimer la précision des règles de classification.
Notation mathématique : la classification est basée sur la création d'une fonction prenant le vecteur de caractéristique
en entrée « X » et en prédisant son résultat « Y » (réponse qualitative prenant les valeurs dans l'ensemble C).
Les classificateurs peuvent être classés en deux types principaux :
Discriminative : C'est un classifier très basique qui détermine une seule classe pour chaque ligne de données. Il
essaie de modéliser simplement en fonction des données observées, dépend fortement de la qualité des données plutôt
que des distributions.
Génératif : il modélise la distribution de classes individuelles et tente d'apprendre le modèle qui génère les données
en arrière-plan en estimant les hypothèses et les distributions du modèle. Utilisé pour prédire les données invisibles.
3. Machine Learning
3.1 Définition :
L'apprentissage automatique est un domaine d'étude de l'IA qui étudie et développe des techniques capables
d'apprendre les tâches comme la classification ou la régression à partir d'un ensemble de données. Il existe différents
algorithmes sans être l'un d'entre eux, en général, est meilleur parmi les autres (aucun théorème du déjeuner gratuit).
Un algorithme, en particulier, dépend exclusivement de la nature et du type du problème abordé.
Le but d'un algorithme d'apprentissage est d'estimer le comportement d'un ensemble d'apprentissage par
l'identification de leur modèle inhérent. Une fois accompli, il doit être capable d'effectuer des tâches de classification
ou de régression pour des échantillons invisibles.
Tous les algorithmes d’apprentissage nécessitent une phase d’apprentissage à laquelle, une fonction objective est
définie comme mesure à optimiser pour obtenir une référence de la façon dont notre modèle s’adapte au problème (p.
ex., minimisation de la fonction d’erreur). Ensuite, l’algorithme est itératif à travers l’ensemble d’entrainement à la
recherche de l’optimisation de la métrique. Il est important d’avoir trois ensembles disjoints d’échantillons dans les
algorithmes d’apprentissage automatique : entrainement, validation et ensemble de test. L’ensemble d’entrainement
est utilisé comme un exemple pour l’optimisation de la fonction objective. Un ensemble de validation est nécessaire
lorsqu’il est nécessaire de calculer les paramètres optimaux d’un algorithme. Enfin, le jeu de tests est utilisé pour tester
dans quelle mesure l’algorithme a appris et généralisé le problème.
Il existe deux types d’algorithmes d’apprentissage : supervisés et non supervisés. La différence réside dans le fait que,
pendant le processus d’entrainement, les échantillons de formation sont étiquetés avec les informations de la classe à
laquelle ils appartiennent ou inversement, il n’y a pas d’informations supplémentaires et c’est le système qui doit
déterminer à quelle classe ils appartiennent.
23
Ces algorithmes sont devenus populaires parce qu’ils réduisent l’intervention humaine au moment de définir des règles
ou des modèles pour les systèmes, leur permettant d’extraire cette information. Ils ont changé beaucoup de domaines
comme le traitement d’image, le traitement d’audio et de la parole, la traduction et les systèmes de conversation entre
autres.
La plupart d’entre eux ont été créés il y a longtemps, mais leur véritable potentiel a été possible grâce aux récentes
améliorations de la capacité de calcul et à la disponibilité de grandes bases de données.
4. Deep learning
4.1 Définition :
est un type d'intelligence artificielle dérivé du machine learning (apprentissage automatique) où la machine est capable
d'apprendre par elle-même, contrairement à la programmation où elle se contente d'exécuter à la lettre des règles
prédéterminées.
4.2 Les applications du Deep Learning
La reconnaissance faciale : Les yeux, le nez, la bouche, tout autant de caractéristiques qu’un algorithme de DL va
apprendre à détecter sur une photo. Il va s’agir en premier lieu de donner un certain nombre d’images à l’algorithme,
puis à force d’entraînement, l’algorithme va être en mesure de détecter un visage sur une image.
Le traitement automatique de langage naturel : Le traitement automatique de langage naturel est une autre application
du DL. Son but étant d’extraire le sens des mots, voire des phrases pour faire de l’analyse de sentiments. L’algorithme
va par exemple comprendre ce qui est dit dans un avis Google, ou va communiquer avec des personnes via des
chatbots. La lecture et l’analyse automatique de textes est aussi un des champs d’application du DL avec le Topic
Modeling : tel texte aborde tel sujet.
Voitures autonomes : Les entreprises qui construisent de tels types de services d’aide à la conduite, ainsi que des
voitures autonomes telles que Google, doivent apprendre à un ordinateur à maîtriser certaines parties essentielles de
la conduite à l’aide de systèmes de capteurs numériques au lieu de l’esprit humain. Pour ce faire, les entreprises
commencent généralement par entraîner des algorithmes utilisant une grande quantité de données. Vous pouvez
imaginer comment un enfant apprend grâce à des expériences constantes et à la réplication. Ces nouveaux services
pourraient fournir des modèles commerciaux inattendus aux entreprises.
Recherche vocale et assistants à commande vocale : L’un des domaines d’utilisation les plus populaires de DL est la
recherche vocale et les assistants intelligents à commande vocale. Avec les grands géants de la technologie ont déjà
fait d’importants investissements dans ce domaine, des assistants à commande vocale peuvent être trouvés sur presque
tous les smartphones. Le Siri d’Apple est sur le marché depuis octobre 2011. Google aujourd’hui, l’assistant à
commande vocale pour Androïde, a été lancé moins d’une année après Siri. Le plus récent des assistants intelligents
à commande vocale est Microsoft Cortana.
Ajout automatique de sons à des films muets : Dans cette tâche, le système doit synthétiser des sons pour correspondre
à une vidéo silencieuse. Le système est formé à l’aide de 1 000 exemples de vidéos avec le son d’une baguette frappant
différentes surfaces et créant différents sons. Un modèle DL associe les images vidéo à une base de données de sons
pré-enregistrés afin de sélectionner le son à reproduire qui correspond le mieux à ce qui se passe dans la scène. Le
système a ensuite été évalué à l’aide d’un test de contrôle, comme une configuration dans laquelle les humains devaient
24
déterminer quelle vidéo comportait le son réel ou le son factice (synthétisé). Ceci utilise à la fois les réseaux de
neurones convolutionnels et les réseaux de neurones récurrents à mémoire à court terme.
Traduction automatique : Il s’agit d’une tâche dans laquelle des mots, expressions ou phrases donnés dans une langue
sont automatiquement traduits dans une autre langue. La traduction automatique existe depuis longtemps, mais DL
permet d’obtenir les meilleurs résultats dans deux domaines spécifiques :
• Traduction automatique de texte
• Traduction automatique d’images
La traduction de texte peut être effectuée sans aucun traitement préalable de la séquence, ce qui permet à l’algorithme
d’apprendre les dépendances entre les mots et leur correspondance avec une nouvelle langue.
Génération automatique de texte : C’est une tâche intéressante, où un corpus de texte est appris et à partir de ce modèle,
un nouveau texte est généré, mot par mot ou caractère par caractère. Le modèle est capable d’apprendre comment
épeler, ponctuer, former des phrases et même capturer le style du texte dans le corpus. Les grands réseaux de neurones
récurrents sont utilisés pour apprendre la relation entre les éléments dans les séquences de chaînes d’entrée, puis pour
générer du texte.
Reconnaissance d’image : Un autre domaine populaire en matière de DL est la reconnaissance d’image. Son objectif
est de reconnaître et d’identifier les personnes et les objets dans les images, ainsi que de comprendre le contenu et le
contexte. La reconnaissance d’image est déjà utilisée dans plusieurs secteurs tels que les jeux, les médias sociaux, la
vente au détail, le tourisme, etc. Cette tâche nécessite la classification des objets d’une photo parmi un ensemble
d’objets connus auparavant. Une variante plus complexe de cette tâche, appelée détection d’objet, consiste à identifier
spécifiquement un ou plusieurs objets dans la scène de la photo et à dessiner un cadre autour d’eux.
La description automatique d’image : Le sous-titrage automatique des images est la tâche pour laquelle le système
doit générer une légende décrivant le contenu de l’image. Une fois que vous pouvez détecter des objets sur des
photographies et générer des étiquettes pour ces objets, vous pouvez voir que l’étape suivante consiste à transformer
ces étiquettes en description de phrase cohérente. Généralement, les systèmes impliquent l’utilisation de très grands
réseaux de neurones convolutifs pour la détection d’objets sur les photographies, puis d’un réseau de neurones
récurrent comme une mémoire à court terme à long terme pour transformer les étiquettes en une phrase cohérente.
Colorisation automatique : La colorisation de l’image pose le problème de l’ajout de couleurs aux photographies noir
et blanc. Le DL peut être utilisé pour utiliser les objets et leur contexte dans la photographie pour colorer l’image, un
peu comme un opérateur humain pourrait aborder le problème. Cette capacité tire parti des réseaux de neurones de
convolution de grande qualité et de très grande taille formés pour ImageNet et cooptés pour le problème de la
colorisation de l’image. Généralement, l’approche implique l’utilisation de très grands réseaux de neurones
convolutifs et de couches supervisées qui recréent l’image avec l’ajout de couleurs.
La détection du cancer du cerveau : Une équipe de chercheurs français a noté qu’il était difficile de détecter les cellules
cancéreuses du cerveau invasives au cours d’une intervention chirurgicale, en partie à cause des effets de l’éclairage
dans les salles d’opération. Ils ont découvert que l’utilisation de réseaux de neurones conjointement avec la
spectroscopie Raman pendant les opérations leur permettait de détecter les cellules cancéreuses plus facilement et de
réduire le cancer résiduel après l’opération.
25
Analyse des sentiments du texte : De nombreuses applications ont des commentaires ou des systèmes de révision
basés sur des commentaires intégrés à leurs applications. La recherche sur le traitement du langage naturel et les
réseaux de neurones récurrents ont parcouru un long chemin et il est maintenant tout à fait possible de déployer ces
modèles sur le texte de votre application pour extraire des informations de niveau supérieur. Cela peut être très utile
pour évaluer la polarité sentimentale dans les sections de commentaires ou pour extraire des sujets significatifs à l’aide
de modèles de reconnaissance d’entités nommées.
Recherche en marketing : En plus de rechercher de nouvelles fonctionnalités susceptibles d’améliorer votre
application, DL peut également être utile en arrière-plan. La segmentation du marché, l’analyse des campagnes
marketing et bien d’autres peuvent être améliorés à l’aide de modèles de régression et de classification DL. Cela vous
aidera vraiment beaucoup si vous avez une grande quantité de données. Sinon, vous ferez probablement mieux
d’utiliser des algorithmes traditionnels d’apprentissage automatique pour ces tâches plutôt que DL.
4.3 Le réseau neuronal
4.3.1 Définition :
Ensemble de neurones formels interconnectés permettant la résolution de problèmes complexes tels que la
reconnaissance des formes ou naturel language processing, grâce à l'ajustement des coefficients de pondération dans
une phase d'apprentissage.
4.3.2 Neurone biologique :
L'algorithme d'apprentissage sur lequel se concentre ce projet est inspiré des neurones biologiques du cerveau.
Les neurones sont un type de cellule du système nerveux composé d'un corps cellulaire appelé soma, certaines
branches de signal d'entrée appelées dendrites et une seule branche de signal de sortie appelée axone.
Figure II-2 : Structure d'un neurone biologique
Les axones se divisent à leurs extrémités en différentes sous-branches appelées dendrites. Connexion entre les
dendrites d'un neurone et les dendrites (ou directement le soma) d'un autre est réalisée par le terminal synaptique, qui
est une petite structure qui contient des molécules de neurotransmetteurs responsable de l'échange du signal nerveux
(également connu sous le nom de synapses).
Les neurones émettent des impulsions électriques par l'axone si la quantité d'excitation électrique reçue par les
dendrites dépasse un seuil.
26
4.3.3 Neurone artificiel :
Ce qui forme les réseaux de neurones, ce sont les neurones artificiels inspirés du vrai neurone qui existe dans notre
cerveau.
Figure II-3 : Structure d'un neurone artificiel
Les Xi sont des valeurs numériques qui représentent soit les données d’entrée, soit les valeurs sorties d’autres
neurones. Les poids Wi sont des valeurs numériques qui représentent soit la valeur de puissance des entrées, soit la
valeur de puissance des connexions entre les neurones. Il existe des opérations qui se passent au niveau du neurone
artificiel. Le neurone artificiel fera un produit entre le poids (w) et la valeur d’entrée (x), puis ajouter un biais (b), le
résultat est transmis à une fonction d’activation (f) qui ajoutera une certaine non-linéarité.
4.4 Les fonctions d’activation :
Après que le neurone a effectué le produit entre ses entrées et ses poids, il applique également une non-linéarité sur
ce résultat. Cette fonction non linéaire s’appelle la fonction d’activation. La fonction d’activation est une composante
essentielle du réseau neuronal. Ce que cette fonction a décidé est si le neurone est activé ou non. Il calcule la somme
pondérée des entrées et ajoute le biais. C’est une transformation non linéaire de la valeur d’entrée.
Après la transformation, cette sortie est envoyée à la couche suivante. La non-linéarité est si importante dans les
réseaux de neurones, sans la fonction d’activation, un réseau de neurones est devenu simplement un modèle linéaire.
Il existe de nombreux types de ces fonctions, parmi lesquelles nous trouvons :
La fonction Sigmoïde : Cette fonction est l’une des plus couramment utilisées. Il est borné entre 0 et 1, et il peut être
interprété stochastiquement comme la probabilité que le neurone s’active, et il est généralement appelé la fonction
logistique ou le sigmoïde logistique.
27
Figure II-4 : Représentation graphique de la fonction Sigmoïde.
La fonction ReLu : La fonction RELU est probablement la plus proche de sa correspondante biologique. Cette fonction
est récemment devenue le choix de nombreuses tâches (notamment en computer vision). Comme dans la formule ci-
dessus, cette fonction renvoie 0 si l’entrée z est inférieure à 0 et retourne z lui-même s’il est plus grand que 0.
La fonction Softmax : Régression Softmax (synonymes : Logistique multinomiale, Classificateur d’entropie
maximale, ou simplement Régression logistique multi-classe) est une généralisation de la régression logistique que
nous pouvons utiliser pour la classification multi-classes. Contrairement à d’autres types de fonctions, la sortie d’un
neurone d’une couche utilisant la fonction softamx dépend des sorties de tous les autres neurones de sa couche. Cela
s’explique par le fait qu’il nécessite que la somme de toutes les sorties soit égale à 1. Dans représentation graphique
de la fonction ReLu, nous avons un exemple de reconnaissance de
Figure II-5 : Représentation graphique de la fonction Relu.
Chiffres manuscrits. Dans cette tâche, chaque étiquette est comprise entre 0 et 9. Nous devons être confiants dans
notre prédiction et cela peut être fait en utilisant une distribution de probabilité. Pour la tâche mentionnée, le vecteur
de sortie souhaité est de la forme ci-dessous :
[𝒑 𝟎, 𝒑 𝟏, 𝒑 𝟐 … , 𝒑 𝟗]
∑(𝒑𝒊) = 𝟏
𝟗
𝒊=𝟏
28
Les fonctions d'activation sont des fonctions non linéaires continues et différenciables. Ils sont obligatoires être lisse
afin de pouvoir apprendre des techniques de descente de gradient. La non-linéarité est une condition importante qui
assure une expression discriminante non linéaire à la sortie du réseau neuronal, au contraire un réseau multicouche et
monocouche fonctionne de la même manière.
Les valeurs de sortie sont binaires si la somme pondérée dépasse un seuil imposé par l'activation (à l'origine la fonction
de pas Heaviside), puis la sortie est activée d'autre part la valeur de sortie est désactivée.
4.5 Différents types de réseaux de neurones dans le Deep Learning
4.5.1 Artificial Neural Networks (ANN)
Il se compose d'un groupe d'unités de base appelées neurones artificiels (AN) ou perceptron (voir figure II-6) qui sont
connectés entre eux composant un réseau complexe. Ils peuvent calculer une sortie donnée des données d'entrée en la
décomposant dans différentes représentations afin d'identifier différentes caractéristiques.
Le premier modèle d'AN a été proposé par le neurophysiologiste Warren McCulloch et le mathématicien Walter Pitts
en 1943. Le modèle proposé est une simple approximation mathématique du fonctionnement d'un neurone biologique,
capable de calculer des opérations de base en fonction d'identité, ET, OU et XOR.
De nombreux autres modèles ont été proposés depuis lors, mais l'architecture AN la plus simple est le perceptron qui
a été proposé par Frank Rosenblatt en 1957. Alors que le modèle AN proposé par McCulloch et Pitts a utilisé des
valeurs binaires, le perceptron peut fonctionner avec n'importe quel nombre.
L'algorithme calcule une fonction d'activation sur la somme pondérée des valeurs d'entrée. De plus, afin de donner un
degré de liberté supplémentaire, un biais est ajouté comme indiqué dans l'équation suivante :
out(t) = 𝑓(∑ 𝑥𝑖 ∗ 𝑤𝑖 + 𝑤0)
𝑛
𝑖=1
Figure II-6 : Structure d'un perceptron
Où Wi et W0 sont respectivement les poids et le biais. Les valeurs optimales de ces paramètres sont calculées à l'aide
de techniques de descente de gradient à partir d'un ensemble de données d'apprentissage étiquetés.
Gradient Descent est un algorithme d'optimisation itératif utilisé pour trouver le minimum global d’une fonction.
29
Le perceptron fonctionne comme un discriminant linéaire, ce qui signifie que chaque unité peut linéairement séparer
les échantillons en deux classes. Il est possible de calculer les opérations de base comme ET ou OU, mais fonctions
comme XOR, sont des problèmes séparables non linéaires et donc pas implémentables (Figure II-7).
Figure II-7 : Le fonctionnement XOR (séparable non linéaire)
La solution est un perceptron multicouche (MLP) qui est un réseau composé de plusieurs couches des perceptrons
(figure II-8). La structure de base d'un MLP est composée d'une couche d'entrée où toutes les données sont envoyées
au réseau, une ou plusieurs couches cachées pour de multiples représentations de données et identification
caractéristique et enfin une couche de sortie. La couche de sortie peut utiliser une autre fonction d'activation en
fonction de la nature de la tâche. Pour la classification, la couche de sortie utilise une fonction softmax qui représente,
pour chaque classe cible, une probabilité de réussite.
Figure II-8 : Structure d'un perceptron multicouche
L'ANN peut être utilisé pour résoudre des problèmes liés à :
• Tabular data
• Image data
• Text data
30
4.5.1.1 Avantages du réseau de neurones artificiels (ANN)
Le réseau de neurones artificiels est capable d'apprendre n'importe quelle fonction non linéaire. Par conséquent, ces
réseaux sont connus sous le nom d'approximateurs de fonctions universelles. Les RNA ont la capacité d'apprendre des
poids qui mappent n'importe quelle entrée à la sortie.
L'une des principales raisons de l'approximation universelle est la fonction d'activation. Les fonctions d'activation
introduisent des propriétés non linéaires sur le réseau. Cela permet au réseau d'apprendre toute relation complexe entre
l'entrée et la sortie.
4.5.2 Convolution Neural Network (CNN)
Les réseaux de neurones convolutifs (CNN) font actuellement fureur dans la communauté d'apprentissage en
profondeur. Ces modèles CNN sont utilisés dans différentes applications et différents domaines, et ils sont
particulièrement répandus dans les projets de traitement d'images et de vidéos.
Les éléments constitutifs des CNN sont des filtres appelés noyaux. Les noyaux sont utilisés pour extraire les
caractéristiques pertinentes de l'entrée à l'aide de l'opération de convolution (voire Figure II-9). Essayons de saisir
l’importance des filtres utilisant des images comme données d’entrée. La convolution d'une image avec des filtres
donne une carte des fonctionnalités :
Figure II-9 : résultat de Sortie de convolution
Bien que les réseaux de neurones convolutifs aient été introduits pour résoudre les problèmes liés aux données d'image,
ils fonctionnent également de manière impressionnante sur les entrées séquentielles.
4.5.2.1 Avantages du réseau neuronal à convolution (CNN)
• CNN apprend les filtres automatiquement sans le mentionner explicitement. Ces filtres aident à extraire les
fonctionnalités appropriées et pertinentes des données d'entrée.
31
Figure II-10 : CNN - Classification d'images
• CNN capture les caractéristiques spatiales d'une image. Les caractéristiques spatiales se réfèrent à la
disposition des pixels et à la relation entre eux dans une image. Ils nous aident à identifier l'objet avec précision,
l'emplacement d'un objet, ainsi que sa relation avec d'autres objets dans une image.
Figure II-11 : image
Dans l'image ci-dessus, nous pouvons facilement identifier qu'il s'agit d'un visage humain en regardant des
caractéristiques spécifiques telles que les yeux, le nez, la bouche, etc. Nous pouvons également voir comment
ces fonctionnalités spécifiques sont organisées dans une image. C’est exactement ce que les CNN sont capables
de capturer.
• CNN suit également le concept de partage des paramètres. Un seul filtre est appliqué sur différentes parties
d'une entrée pour produire une carte d’entités :
32
Figure II-12 : Image convolutante avec un filtre
Notez que la carte d'entités 2*2 est produite en faisant glisser le même filtre 3*3 sur différentes parties d'une image.
4.5.3 Recurrent Neural Networks (RNN)
Deux modèles couverts par ce projet utilisent un type spécial de réseau neuronal artificiel appelé réseau neuronal
récurrent (RNN). RNN a la capacité de conserver les informations des données précédentes comme mémoire
temporelle. Ils peuvent être considérés comme une séquence de concaténations de la même unité (voir Figure II-13)
comme une chaîne, où chacun calcule une entrée donnée de sortie et les informations fourni par le dernier réseau.
Figure II-13 : Schéma d'un réseau neuronal récurrent
En raison de sa mémoire temporelle, ils sont très utiles pour les données séquentielles où chaque élément de la
séquence est lié aux autres.
Néanmoins, RNN ne peut conserver que les informations récentes d'une séquence, ce qui signifie qu’ils ne peuvent
fonctionner correctement que lorsque l'élément à traiter est proche de la séquence du les informations pertinentes.
Nous pouvons utiliser des réseaux de neurones récurrents pour résoudre les problèmes liés à :
• Time Series data
• Text data
• Audio data
4.5.3.1 Avantages du réseau neuronal récurrent (RNN) :
• RNN capture les informations séquentielles présentes dans les données d'entrée, c'est-à-dire la dépendance
entre les mots dans le texte tout en faisant des prédictions :
33
Figure II-14 : Modèle Many2Many Seq2Seq
Comme vous pouvez le voir ici, la sortie (o1, o2, o3, o4) à chaque pas de temps dépend non seulement du mot actuel
mais aussi des mots précédents.
• Les RNN partagent les paramètres sur différents pas de temps. Ceci est connu sous le nom de partage de
paramètres. Cela se traduit par moins de paramètres à former et diminue le coût de calcul.
Figure II-15 : RNN déroulé
Comme le montre la figure ci-dessus, 3 matrices de poids - U, W, V, sont les matrices de poids qui sont partagées sur
tous les pas de temps.
Les réseaux de mémoire à court terme (réseaux LSTM) sont un type spécial de RNN qui peut rappeler les dépendances
à long terme en raison de sa structure interne (voir figure II-16). Alors qu’un RNN de base est composé d'une seule
couche d'opération, les réseaux LSTM en utilisent quatre. En interne, ils peuvent effectuer trois opérations : oublier
les informations, mettre à jour les informations et sortir les informations.
34
Figure II-16 : Schéma d'un réseau LSTM
Une variante des LSTM est le Gated Recurrent Unit (GRU), qui ont une structure plus simple, ce qui les rend plus
efficaces et plus rapides à former.
4.5.3.2 RNN Encoder/Decoder architecture (Seq2Seq)
Implémentation très réussie de l'architecture Encoder / Decoder pour les tâches NLP est le RNN Encoder / Decoder
également connu sous le nom de séquence à Séquence (Seq2Seq). L'encodeur et le décodeur sont des réseaux de
neurones récurrents, ce qui permet modèle à alimenter avec des phrases d'entrée de longueur variable.
Étant donné une phrase d'entrée, l'encodeur calcule de manière itérative pour chaque mot un vecteur d'état caché en
utilisant le mot et l'état caché précédent du RNN. Une fois toute la phrase analysée, les informations pertinentes de la
phrase d'entrée sont contenues dans le dernier état caché du RNN, connu comme vecteur de contexte ou de pensée.
Le décodeur calcule, mot par mot, une sortie dans l’espace de représentation original utilisant les informations
contenues dans le vecteur de contexte et les précédents mots décodés.
La mise en œuvre de l'architecture peut varier en fonction du type de cellule RNN utilisé (véritable Cellule RNN,
cellule LSTM ou cellule GRU), nombre de cellules par couche ou nombre de couches masquées entre autres
paramètres.
Figure II-17 : Schéma de l'architecture séquence à séquence
35
À mesure que la taille de la phrase augmente, il est nécessaire de coder une grande quantité d'informations en un
vecteur de longueur fixe, donc une partie est perdue lors du processus de codage, ce qui entraîne de mauvaises
performances du chatbot.
4.5.3.3 Attention Mechanism
Une solution au problème dû à la nature de longueur fixe du vecteur de contexte est de permettre le décodeur pour
"voir" les mots les plus pertinents de la phrase d'entrée pendant le processus de décodage (Figure II-18). Cette méthode
est appelée le mécanisme d'attention.
Figure II-18 : Diagramme de l'architecture séquence à séquence avec un code bidirectionnel et appliquer l'attention dans le processus de décodage
Au lieu d'utiliser uniquement le dernier vecteur d'état masqué comme vecteur de contexte, pour chaque mot à décoder,
le décodeur calcule un vecteur de contexte avec une somme pondérée de tous les vecteurs d'état cachés de l’encodeur.
Contrairement au Seq2Seq présenté précédemment, pour le mécanisme d'attention, un bidirectionnel l'encodeur est
utilisé pour coder la phrase d'entrée mot par mot en deux vecteurs d'état de cellule cachés. Le premier, allant du
premier au dernier mot de la séquence (en avant) et l'autre, inverser la séquence allant du dernier au premier mot (en
arrière).
Le vecteur d'état de cellule caché final est une concaténation de l'état caché allant vers l'avant et de l'état caché allant
vers l'arrière (vecteur d'état caché bidirectionnel). L'encodage bidirectionnel permet d'encoder plus information d'un
mot de la phrase.
4.5.3.4 Architecture de transformateur
L'architecture du transformateur est un modèle codeur / décodeur entièrement basé sur le mécanisme d'attention
récemment proposé par l'équipe de Google comme une nouvelle machine neuronale de pointe architecture de
traduction (NMT). De plus, ils ont prouvé que le modèle peut être généralisé pour d'autres tâches NLP comme l'analyse
des circonscriptions en anglais.
Les RNN sont intrinsèquement séquentiels, ce qui pose un problème pour paralléliser les modèles RNN en tant que
Seq2Seq.Ce problème est résolu dans l'architecture du transformateur car il ne repose que sur le mécanisme d'attention
36
et le manque de RNN. De plus, il a été prouvé qu’elles nécessitent moins de temps de formation que l'encodeur /
décodeurs RNN.
L'encodeur comporte trois étapes principales (voir la figure II-19). Le premier est l'endroit où l'entrée les mots sont
projetés dans un espace de représentation vectorielle par une matrice d'intégration, puis, étant donné qu'il n'y a pas
d'informations sur l'ordre et la position des mots dans la phrase d'entrée un positionnel le codage est ajouté aux vecteurs
d'entrée intégrés. La deuxième étape est une attention multi-têtes bloc (d'auto-attention dans ce premier cas) qui
projette linéairement les informations d'entrée dans différentes représentations spatiales et effectue une attention sur
chacun d'eux. Cette méthode permet au modèle d’identifier différentes caractéristiques sémantiques, morphologiques
et lexicales de la séquence d'entrée et assistez-les séparément au processus de décodage. Enfin, un réseau de rétroaction
par position est utilisé, qui applique deux transformations linéaires à chaque position séparément.
Le décodeur comporte cinq étages, les deux premiers uniquement utilisés lors de la phase de formation : une
intégration de sortie et le codage positionnel (similaire à celui utilisé dans le codeur mais pour les phrases cibles dans
la formation), une attention multi-têtes masquée (également auto-attention), une attention multi-têtes, un réseau à
action directe et enfin une couche softmax pour calculer les probabilités de sortie. Donné qu'au processus de décodage,
nous ne pouvons pas connaître les mots futurs, l'attention ne peut être appliqué aux précédents. C'est ce que fait
l'attention multi-têtes masquée, qui est une multi-tête bloc d'attention avec un masque qui limite l'attention uniquement
aux mots du passé.
Figure II-19 : Schéma simplifié de l'architecture Transformer
37
5. Chatbots
5.1 Définition :
Un chatbot est un robot logiciel pouvant dialoguer avec un individu ou consommateur par le biais d'un service de
conversations automatisées pouvant être effectuées par le biais d'arborescences de choix ou par une capacité à traiter
le langage naturel.
Le chatbot utilise à l'origine des bibliothèques de questions et réponses, mais les progrès de l'intelligence artificielle
lui permettent de plus en plus "d'analyser" et "comprendre" les messages par le biais des technologies de naturel
language processing (NLP) et d'être doté de capacités d'apprentissage liées au machine learning.
Figure II-20 : image de conversation d’un utilisateur et chatbot
Cet outil est de nos jours, très utilisé sur Internet par les services clients des marques et des commerçants en ligne à travers la
messagerie instantanée. Pour répondre au mieux aux besoins ponctuels des internautes, comme par exemple s’informer sur un
sujet, réserver, commander, rechercher et autres. Les champs d’applications sont quasi illimités et leur
perfectionnement est désormais corrélé aux progrès de l’intelligence artificielle.
Un chatbot est donc une application destinée à automatiser des tâches ou à simuler des conversations. Ce programme
informatique peut ainsi lire des messages (email, SMS, Chat…) et y répondre en quelque seconde, grâce à un ensemble
de réponses préenregistrées.
38
5.2 Une petite histoire sur les Chatbots :
Figure II-21 : L'Histoire des Chatbots (Image de l’Internet et Réorganisation Personnelle)
Les Bots, chatbots et social bots sont des outils et des agents conversationnels qui révolutionnent nos habitudes
journalières en expérience inédite.
En 1966 : longtemps avant que Hoffer et ses collègues n’aient créé SmarterChild, un informaticien appelé Joseph
Weizenbaum développe ELIZA, un programme pour imiter la conversation humaine. ELIZA a travaillé en analysant
les mots que les utilisateurs ont entrés dans un ordinateur et ensuite un appariement avec une liste de réponses les plus
adaptées possibles.
En 1972 : PARRY a été créé par Kenneth Colby, Il simulait une personne avec la schizophrénie paranoïde. Parry était
plus sérieux et avancé qu’ELIZA et a été décrit comme « ELIZA with attitude ».
En 1988 : JABBERWACKY fut créé par le développeur britannique Rollo CARPENTER, un agent conversationnel
(Robot de conversation), « simuler une conversation humaine d’une façon intéressante, divertissante et drôle » C’est
une première tentative de création d’une IA en interaction avec l’humain.
En 1992 : création du programme Dr.SBATISO, avec de l’IA pour ordinateurs personnels MS DOS distribués avec
diverses cartes son, publiés par CreativeLabs. Le programme « converserait » et interagissait avec l’utilisateur comme
s’il s’agissait d’un psychologue.
En 1995 : Richard WALLACE développe le chat bot ALICE (Artificiel Linguistic Internet Computer Entity), inspiré
d’ELIZA (voir plus haut), mais en lui ajoutant le langage naturel via une collection d’échantillons d’une taille sans
précédent, autorisée depuis l’avènement du WEB.
En 1997 : Création de CLIPPY, qui est un assistant de Microsoft office.
En 2001 : SMARTERCHILD été conçu par des développeurs de COVERSAGENT, un interlocuteur virtuel qui peut
faire la conversation avec les utilisateurs des réseaux MSN et AIM. Plus que du simple blabla, le service offre, en
format texte, des informations et des outils (dictionnaire, encyclopédie, moteur de recherche pour le web). Il y a même
quelques jeux pour se reposer l’esprit.
39
En 2006 : WATSON « le super calculateur d’IBM » est un programme informatique capable de comprendre notre
langage et la réflexion humaine. C’est un système qui a l’habilité de simuler un raisonnement humain, ayant une base
de données approchant un million de livres. En 2011 Watson est entré dans l’histoire en étant le premier ordinateur à
remporter le jeu télévisé Jeopardy.
En 2010 : SIRI, une application informatique développée par Apple. Qualifiée d’assistant personnel intelligent.
L’interface homme-machine de SIRI repose sur la reconnaissance vocale avancée, le traitement du langage naturel et
la synthèse vocale.
En 2012 : Google NOW une application développer par GOOGLE. Prenant en compte l’heure et la localisation de
l’utilisateur et ses données personnelles, des informations utiles sont fournies en fonction du contexte. L’application
peut utiliser l’historique de recherche et des données concernant l’utilisateur pour la pertinence des réponses sans le
demander à l’utilisateur. Par exemple, si vous avez un événement dans votre agenda Google, Google Now vous aidera
à arriver à l’heure, si vous prenez le bus, il vous dit combien de temps il faudra pour marcher vers le bus et quand le
prochain bus.
En 2015 : ALEXA d’AMAZON, est un assistant vocal pour le dispositif Amazon Echo, capable de l’interaction
vocale, utilise « Natural Language Processing Algorithms » qui reçoit, reconnait et répond aux instructions vocales
ou orales.
Même Année : CORTANA est une assistance personnel conçu par Microsoft, il met en place des rappels et reconnait
la voix naturelle, commande et répond à des questions en utilisant le moteur de recherche BING.
En 2016 : Bots pour Messenger est une plateforme qui permet aux développeurs de créer des Bots qui peuvent interagir
avec les utilisateurs de Facebook. En Avril 11.000 chatbots étaient valable.
Même Année : Tay a été élaboré pour imiter les propos et les habitudes des adolescentes américaines. Pour une
meilleure interaction avec les internautes.
Aujourd’hui il y a quelques chatbots plus développés. Ces chatbots apprennent donc sans l’aide d’un humain en se
nourrissant des dialogues avec les internautes par le biais de l’apprentissage automatique et le traitement automatique
du langage naturel. Comme l’explique Grégory Renard, responsable IA du groupe Oscaro.com, dans le magazine
Stratégie : « Nous sommes passés à l’ère du web intelligent, qui succède au web 2.0. Ce web proactif, anticipant vos
besoins, s’appuiera sur le web sémantique, la recherche en langage naturel, la gestion et l’extraction de données et
l’apprentissage machine, les agents de recommandation, les technologies d’intelligence artificielle ».
En 2016 : c’est le retour des Chatbots : ils peuvent à présent être intégrés aux messageries instantanées de certains
réseaux sociaux. Les générations Y et Z16 sont plus à l’aise à communiquer par messagerie, et ce qui rend les chatbots
plus performant de nos jours c’est leur présence sur les réseaux sociaux.
5.3 Analyse et présentation de quelques Chatbots :
2017 a marqué la naissance de deux chatbots très remarqués. D’une grande créativité, communiquant directement
avec la communauté de fans des marques par le biais d’un mécanisme simple et efficace.
40
Le Star Wars Bot crée pour la sortie de « Rogue one : A Star WARS Story » un chatbot Game qui invite les fans à
rejoindre la rébellion pour lutter contre l’empire. Il offre une expérience hors du commun, dans l’univers du film et
de la saga STAR WARS, collant ainsi parfaitement au coeur de la cible (Joueurs en ligne).
Le chatbot Christian Grey, créé à l’occasion de la sortie du film « Fifty Shades Darker », permet de partager une
conversation intime avec le héros de la saga. La discussion prend rapidement une tournure très privée et
particulièrement adaptée à l’univers du film. Le chatbot propose une expérience de ‘storytelling transmédia’ (Un
processus par lequel les éléments d’une fiction sont dispersés sur diverses plateformes médiatiques dans le but de
créer une expérience de divertissement coordonnée et unifiée).
Ces chatbots expérientiels ont généré des répercussions presse appréciables créant un « BUZZ » soulignant un fort
engagement des fans.
A noter que le chatbot élaboré pour un événement « Coup Par Coup » peut être enrichi pour proposer des services sur
une plus longue période.
5.4 Elaboration d’un Chatbot :
Mais comment créer un chatbot ? Avant tout, avant même de penser à l’aspect technique, il est avant tout primordial
de définir en quelques mots l’utilité de son bot : à quoi va-t-il servir ? En quoi simplifie-t-il le parcours client ? Et
quelle partie de la population cible-t-il ? Et en deuxième lieu, en fonction de son coeur de cible, la marque pourra
choisir à quels endroits elle souhaitera intégrer le chatbot : son site, Twitter, Facebook, Messenger, WeChat…
Il faut réfléchir à une mission bien déterminé pour que le chatbot soit performant. Un chatbot doit simplifier
l’expérience utilisateur par la mise en place du contenu adéquat et convenable.
Concernant l’aspect technique, plusieurs options s’offrent à une marque :
• Passer par une plateforme libre, simplifiée (sans avoir besoin de connaissance en programmation) et en ligne,
tout comme ChatFuel, Rebot.me… Cependant, le problème de ce type de plateforme est que sans
connaissances en code, l’intelligence du bot est très limitée : reconnaissance de mots-clés et système de
questions/réponses.
• Passer par une plateforme spécialisée dans le développement de ChatBots intelligents comme : Recast.ai,
botfuel.io … Ces plateformes font profiter aux développeurs de l’intelligence conversationnelle, cependant il
est nécessaire d’avoir des connaissances en code.
• Passer par une agence spécialisée et être accompagné de linguistes et des spécialistes dans ce concept.
Par la suite nous essayerons au mieux d’expliqué les fiches métiers et formations nécessaires pour la création des
chatbots et comment y procéder, tout au long de mon stage chez Axilog nous avons effectué les recherches nécessaires
et les entretiens qui nous permettrons de s’assurer de la faisabilité du projet et comment le sujet va être concrétisé sur
terrain.
Concernant le cadre juridique ; il n’existe aucune réglementation spécifique aux chatbots. Tout de même, il est
important d’avertir l’interlocuteur que la conversation sera analysée et d’obtenir son consentement pour l’exploitation
de ses données personnelles.
41
5.5 Les types de chatbot :
Dans cette section, nous discuterons des différents types de chatbots, de ses fonctionnalités, suivis du flux de travail
de construction d'un chatbot.
Il existe différents types de chatbots. Ceci est représenté dans (la figure II-24 ci-dessous). Les chatbots sont classés
dans les domaines dans lesquels ils opèrent et en fonction du type de réponse qu'ils retournent.
Le contenu de la conversation peut provenir d'un domaine ouvert ou fermé. Pour un domaine ouvert, le chatbot obtient
ses données de formation à partir d'une source ouverte telle qu'Internet, ce qui lui permet de répondre une grande
variété de sujets. Un domaine proche fait référence à l'obtention de données d'entraînement à partir d'une source fermée
de données avec un domaine d'expertise spécialisé.
Le type de réponse qu'un chatbot donne peut-être catégoriser en fonction de la récupération ou de la génération. Même
les chatbots les plus avancés de l'industrie que nous avons aujourd'hui sont basés sur la récupération. Cela signifie
qu'un la réponse fixe est déjà codée pour le chatbot. Il peut être construit simplement en utilisant une phrase basée sur
des règles appariement ou un ensemble de techniques d'apprentissage automatique pour retourner une réponse
existante que la machine précédemment apprise. D'un autre côté, basées sur la génération, sont capables de générer
tout type de réponses. Sa capacité en termes de type de question à laquelle ils peuvent répondre est illimitée.
Cependant, dans l'état actuel de la technologie, ce type de chatbots n'est pas en mesure de donner des réponses qui
dépendent de l'industrie normes.
Figure II-22 : Generative-based chatbot model Figure II-23 : Retrieval-based chatbot model
42
Figure II-24 : Chatbot conversation framework
Open domain with retrieval-based responses : avoir un ensemble fixe de réponses d'un domaine ouvert signifie qu'il
existe une réponse fixe pour tout question possible à laquelle tout le monde peut penser. C'est illogique et donc
impossible à créer.
Open domain with generative-based responses : nous pouvons poser au chatbot toute question possible et il est capable
de générer une réponse. C'est le plus forme complète d'un chatbot et la solution à ce problème s'appelle l'intelligence
générale artificielle (AGI). Cependant, nous sommes encore loin de cette technologie.
Closed domain with retrieval-based responses : Il s'agit du type de chatbot le plus courant où une réponse spécifiée a
été élaborée pour un domaine. C'est le type de chatbot le plus élémentaire, donnant les réponses les plus fiables à
l'heure actuelle. Cependant, ce type de chatbot est limité à ce qui lui a été enseigné.
Closed domain with generative-based responses : ce type de chatbot peut gérer les questions de l'ensemble de données
sous-jacent sur lequel il a été formé et de la nouvelle question en dehors de l'ensemble de données sous-jacent, mais
dans le domaine. Ont tendance à être plus humains et ont leur propre personnalité. Cependant, les réponses générées
sont pleines d'erreurs grammaticales. Cette L'approche n'est pas encore largement utilisée par les développeurs de
chatbot et se trouve principalement dans les laboratoires.
Dans cette étude, nous nous concentrons sur un domaine fermé avec chatbot à réponses génératives. Malgré qu'il soit
plus difficile à former et donnant des résultats plus inexacts, c'est l'avenir des chatbots. Il nous fournira plus de
possibilités d'apprentissage et de recueillir des informations plus précieuses.
5.6 Le flux de travail de Chatbot :
Dans cette section, nous fournissons un aperçu des étapes de construction d'un chatbot. Plus de détails sur chaque
étape peuvent être que l'on trouve dans d'autres chapitres.
Premièrement, nous devons définir l'objectif du problème. Ceci a été développé dans la section motivation au-dessus
de. Après quoi, nous importons notre jeu de données dans un interpréteur et commençons par l'exploration des données
où nous comprenons mieux les données dont nous traitons.
La différence la plus évidente entre un problème de chatbot et la plupart des problèmes de science des données est la
nature des données. La plupart des problèmes de science des données impliquent de traiter des nombres, des images
43
et des textes. Depuis un ordinateur a été construit pour gérer les nombres, le premier type de problème peut être
facilement traité. Pour les photos, chacune pixel dans l'image peut être représenté par un nombre sur le modèle de
couleur RVB, donc le convertir en facilement. Pour les textes, c'est quelque chose de plus difficile. Nous devons
vectoriser ces mots en vecteurs avant de pouvoir faire des prédictions. Par conséquent, ce processus de vectorisation
supplémentaire est nécessaire pour un problème de chatbot.
Ensuite, nous devons envoyer notre entrée vectorisée dans un modèle qui nous donnera une sortie. Dans cette étude,
nous utilisons un modèle appelé mémoire à long terme (LSTM). Après quoi nous reconvertissons nos vecteurs en
mots.Cela nous donne la réponse du chatbot.
Enfin, nous intégrons le modèle dans une interface utilisateur. Il s'agit d'une étape qui ne sera pas traitée dans ce projet
en raison de contraintes de temps et de sa capacité à générer des informations pertinentes pour un projet de physique.
Figure II-25 : Le flux de travail Chatbot
5.7 Architecture générale de système
Pour réaliser un système capable et plus fort pour répondre sur le maximum des questions des utilisateurs et sans faute,
nous dévons suivi les étapes qui sont présentes dans la figure au-dessous (Figure II-26).
Donc afin de génère un modèle capable nous avons dévu entraine ce modèle sur une dataset(questions/réponses) plus
grande et en supprimer le bruit avec naturel language processing, après nous devons faire la représentation de
caractéristiques avec word embedding c’est-à-dire créer deux matrices l’un pour les questions et l’autre pour les
réponses, et en fin nous avons choisi des algorithmes adaptés avec des valeurs précises de leurs paramètres pour qu'ils
nous donnent le meilleur résultat et un bon modèle.
44
Figure II-26 : Architecture générale de système
Conclusion
Tous des notions que j’ai expliqué durant ce chapitre au but d’éclaircir l’environnement du sujet. Ainsi que pourquoi
je choisie d'implémenter ce chatbot avec réseaux de neurones récurrents (RNN).
Donc maintenant nous sommes prêts à découvrir comment nous avons préparé la Data Set avant la réalisation du
projet.
45
Chapitre III : Préparation du Data Set
Introduction
Pour la construction d'un chatbot, la nature de l'ensemble de données, que nous avons collecté, joue un rôle très
important car elle définit les caractéristiques du chatbot. Comme je l’ai indiqué dans l’introduction, nous voulons
construire un chatbot qui pourrait donner des réponses sarcastiques tout comme Google Assistant, de Google. Nous
avons donc recueilli le jeu de données à partir des sites web. Cet ensemble de données après le traitement comportait
plusieurs questions et réponses.
Dans ce chapitre nous allons essayer de traiter toutes les opérations qu’on va appliquer sur le data set afin de le préparer
pour la phase de deep learning.
1. Data set
1.1 Généralité
Un jeu de données (ou data set) est un ensemble de questions et de réponses, et chaque question associe à un ensemble
de réponses et vice versa.
Il est extrêmement important que les données soient correctes et bien structurées pour le chatbot que nous voulons
réaliser. Peu importe si nous avons des mégadonnées de données si les données ne sont pas alignées sur le problème.
La première étape est la collection de données appropriées, et jusqu’à ce que nous y parvenions, nous reviendrons
constamment à cette étape.
1.2 Qualité/ Quantité
Une fois les données collectées, elles doivent être converties en un format lisible par notre modèle. En général, les
données d’entrée, s’agissent de textes (questions/réponses) sont transformées en vecteurs et en tenseurs auxquels des
techniques de naturel language processing (NLP) peuvent être appliquées. Les données doivent être normalisées et
nettoyées pour augmenter leur efficacité. Jusque-là, les données sont appelées données brutes (non-traitées).
1.3 Collection des données
Tout d’abord avant de commencer la réalisation de notre modèle nous avons collecté les données à partir des sites
web en utilisant la méthode scraping ou la méthode classique c’est-à-dire à la main. Mais notre chatbot affronte un
problème de limitation des données c’est-à-dire il existe un nombre limité des questions et leurs réponses concernant
le coronavirus donc, nous avons proposé une méthode plus puissante d’où son fonctionnement est le suivant : la
collection des questions à partir de la discussion des utilisateurs avec le chatbot puis sauvegarder ces questions en
base de données et après nous cherchons les réponses des questions qui n’existent pas dans le jeu de données, ensuite
nous faisons la mise à jour de notre jeu de données pour que le chatbot devienne plus généraliste et plus performant.
Donc notre base de données contient trois fichiers txt, donc deux fichiers contient les conversations
(questions/réponses) dans laquelle chaque réponse a plusieurs questions c’est-à-dire qu’une question mais sur formats
différents et le troisième fichier contient la répétition des mots qui sont utilisé aux marocaine par des formes
différentes.
46
1.4 Structure d’un jeu de données
Un jeu de données (en anglais dataset ou data set) est un ensemble de données (réponses/questions) où chaque donnée
est associée à une variable (attribut ou tag).
Un jeu de données a une structure d'arbre, comme dans un fichier .txt qui est constitué d’un ensemble des lignes et
chaque ligne contient une question et sa réponse, donc comme vous voyez en le figure au-dessous (Figure III-1) chaque
question a plusieurs réponses et la même chose pour la réponse.
III. hhhhd
Figure III-1 : La structure de data set
1.5 L'importance du prétraitement avec NLP
L'arrivée à maturité des technologies de Natural Language Processing (NLP) a ouvert la voie ces dernières années au
développement de bots capables d'échanger à la volée en langage naturel. C'est une étape clé du projet. Elle consiste
à paramétrer l'ensemble des questions (ou "intentions" dans le jargon du domaine) auxquelles l'agent conversationnel
doit pouvoir répondre.
Le NLP est ce qui permet aux chatbots de comprendre vos messages et d’y répondre correctement. Lorsque vous
envoyez un message avec “Bonjour”, c’est le NLP qui fait savoir au chatbot que vous avez envoyé une salutation
d’usage, ce qui doit en retour activer les capacités d’intelligence artificielle du chatbot pour trouver une réponse
appropriée. Dans l’exemple évoqué, le chatbot devrait probablement répondre par une salutation similaire.
Sans le Natural Language Processing (NLP), on ne peut pas distinguer entre les réponses “Bonjour” et “Au revoir”.
Pour un chatbot sans NLP, “bonjour” et “aurevoir” ne seront rien d’autres que des informations de type textuel
apportées par l’utilisateur.
Le Natural Language Processing (NLP) aide à fournir un contexte et une signification aux informations textuelles des
utilisateurs, afin que l’AI trouvé la meilleure réponse.
Le Natural Language Processing (NLP) peut surmonter les différentes barrières de la langue. Le même genre de
problèmes qui mine nos communications textuelles quotidiennes avec les gens, peut, et va, très probablement,
47
impacter nos interactions avec les chatbots. Ces problématiques comprennent par exemple l’orthographe, les erreurs
grammaticales et le mauvais usage de la langue en général. Les capacités avancées du Natural Language Processing
(NLP) peuvent identifier ces erreurs d’orthographe de grammaire et permettent au chatbot d'interpréter l’intention du
message malgré les erreurs.
Les capacités avancées du Natural Language Processing (NLP) peuvent même comprendre l’intention de vos
messages, comme par exemple savoir si vous êtes en train de formuler une question ou une affirmation. Bien que cette
distinction semble sans intérêt, elle peut en réalité avoir un impact conséquent sur les capacités du chatbot à mener
une conversation couronnée de succès avec un utilisateur.
Concernant les chatbots, l’un des challenges les plus significatifs est le fait que les utilisateurs disposent d’une palette
vierge quant à ce qu’ils peuvent dire aux bots. Bien que vous puissiez essayer de prévoir ce que l’utilisateur dira ou
ne dira pas, il y a forcément des conversations en devenir que vous n’auriez jamais imaginé même dans vos rêves les
plus fous !
Même si le Natural Language Processing (NLP) ne peut absolument pas opérer de miracle et assurer une réponse
totalement appropriée à chaque message, il est suffisamment puissant pour être le facteur décisif de la réussite - ou de
l’échec- d’un chatbot.
Il ne faut donc pas sous-estimer cet aspect déterminant dans la construction d’un chatbot !
Donc NLP est caractérisé par les éléments suivants :
Le nettoyage : consiste à se débarrasser des parties les moins utiles du texte par la suppression des mots vides, à gérer
les majuscules et les caractères et autres détails.
L'annotation : consiste à appliquer un schéma aux textes. Les annotations peuvent inclure un balisage structurel et un
balisage de partie du discours.
La normalisation : consiste en la traduction (cartographie) de termes dans le schéma ou de réductions linguistiques
par le biais de la racine, de la lemmazation et d'autres formes de normalisation.
L'analyse : consiste à sonder statistiquement, à manipuler et à généraliser à partir de l'ensemble de données pour
l'analyse d'entités.
1.6 Les étapes du pré-traitement
Il existe une variété de méthodes de prétraitement. La liste ci-dessous est loin d'être exclusive mais elle nous donne
une idée sur par quoi on doit commencer. Il est important de réaliser, pour tous les problèmes de données, que la
conversion de n'importe quel format en machine learning le réduire en un état généralisé, ce qui signifie perdre une
partie de la fidélité des données. Le véritable art est de comprendre les avantages et les inconvénients de chacun de
choisir soigneusement les bonnes méthodes.
1.6.1 Contexte
Les mots en langue arabe peuvent être classés en deux catégories : les mots dérivés et mots non dérivés. Les mots
arabes dérivés sont générés à partir d'entités de base appelées racines ou radicaux selon une liste prédéfinie de modèles
48
standard appelés morphologiques motifs ou échelles. Ces schémas morphologiques représentent les principales règles
d’orthographe des mots arabes.
Les mots non dérivés comprennent deux sous-catégories : les mots fixes et les mots étrangers. Les mots arabes fixes
sont un ensemble de mots qui n'obéissent pas aux règles de dérivation. Ces mots sont des mots généralement
fonctionnels comme les pronoms, les prépositions, les conjonctions, les mots comme. Les mots étrangers sont des
noms empruntés à des langues étrangères.
Figure III-2 : Les principales phases du prétraitement du texte
La majorité des mots arabes appartiennent à la catégorie des mots dérivés. Toutes sortes de mots (verbes, noms,
adjectifs et adverbes) peuvent être générées à partir des racines selon la norme motifs. Le motif associé à un mot
détermine ses divers attributs tels que le sexe (masculin / féminin), nombre (singulier / pluriel) et tendu (passé, présent
et impératif). Sur la base de ce qui précède, un mot arabe dérivé peut être représenté par sa racine avec son modèle
morphologique. Par exemple le mot (‫)العبون‬ (en français « joueurs ») est généré de la racine (‫)لعب‬ selon le motif
(‫.)فاعلون‬ Ce modèle indique que le mot est un substantif, son genre est masculin et son nombre est pluriel. La
signification finale de ce mot arabe sera joueurs (racine (jouer) : Attributs (nom ; pluriel ; masculin)) (Said et al.
,2013).
Néanmoins, l'analyse morphologique des mots arabes présente de nombreux défis qui doivent être considéré. Le
premier défi est le fait que certaines lettres de la racine peuvent être supprimées ou modifiées lors de la dérivation des
mots à partir des racines. Le deuxième défi est que de nombreux suffixes peut être attachés au début du mot (préfixes)
et à la fin du mot (suffixes). Ces affixes peuvent être constitués d'une ou plusieurs lettres.
Le troisième défi est qu’en arabe les mots de langue sont écrits sans voyelles courtes. Différentes marques diacritiques
sont utilisées pour remplacer les voyelles courtes.
49
Le nombre de ces marques est de huit signes diacritiques : trois signes diacritiques pour indiquer les voyelles courtes
(ِ, ِ, ِ), trois doubles signes diacritiques qui combinent les simples (ِ, ِ, ِ), une marque diacritique pour indiquer
l'absence de voyelle (ِ), et une seule marque diacritique pour indiquer l'occurrence en double d'une consonne (ِ).
Celles-ci les marques jouent un rôle essentiel dans la détermination de la signification possible du mot. En fait, deux
différents modèles peuvent avoir la même séquence de consonnes, mais ils diffèrent les uns des autres en termes de
signes diacritiques.
Selon l'étendue de l'utilisation des signes diacritiques, les textes arabes peuvent être classés en trois catégories
différentes : textes non voyellisés, partiellement voyellisés et entièrement voyellisés. La première catégorie représente
les textes sans signes diacritiques tels que la plupart des textes dactylographiés et imprimés et journaux. La deuxième
catégorie représente les textes partiellement voyellisés tels que le texte livres et textes scientifiques. La dernière
catégorie représente les textes arabes entièrement voyellisés, en où chaque consonne est suivie d'une marque
diacritique comme le texte du Saint Coran, les enfants livres et textes littéraires.
En outre, il nous importe de signaler que les notions de lettre capitale et lettre minuscule n'existent pas, l'écriture
arabe est dite monocamérale. En addition, l’arabe est une langue semi-cursive ; la plupart des lettres s'attachent entre
elles, leurs graphies diffèrent selon qu'elles soient précédées et/ou suivies d'autres lettres ou qu'elles soient isolées.
1.6.2 Tokenisation du texte
La tokenisation est le processus qui consiste à isoler des unités de type mot d’un texte [Grefensette et Tapanainen
1994]. En plus des mots, les documents texte contiennent souvent des espaces blancs, des signes de ponctuation et un
certain nombre de marquages indiquant les changements de police, la subdivision du texte, et des caractères spéciaux.
La phase de tokenisation a pour objectif de détecter et d'isoler les mots individuels en éliminant ces composants
supplémentaires. Vers la fin de ce travail, il est supposé qu'un mot arabe est une séquence de lettres arabes et de signes
diacritiques sans séparateurs (espaces ou signes de ponctuation).
La détection de mots individuels est basée sur un algorithme de correspondance de texte simple. Un nouveau mot est
une séquence de lettres arabes et de signes diacritiques commençant par une lettre et terminée par une lettre ou des
signes diacritiques. La détection d'un séparateur ou d'une charte spéciale marque la fin du mot.
Input
Output
Figure III-3 : Exemple d'un Segmenteur
1.6.3 La stemmatisation
Le Stemming est une technique qui a pour but d’extraire la racine ou le radical d’un mot, d’où les racineurs sont des
systèmes qui font l’extraction des racines des mots entrants et retourne comme résultat les préfixes, les suffixes, le
50
schème utilisé, ainsi que la racine et le radical. Ce type d’analyse « simpliste », traite de façon identique affixes
flexionnels et dérivationnels.
En langue arabe comme c'est le cas dans de nombreuses autres langues, certains éléments lexicaux peuvent être attaché
à un mot afin d'ajouter de nouvelles informations au mot ou de former parfois une phrase ou partie de phrase. Des
exemples de ces parties additives, appelées affixes, sont les conjonctions (ex. : ‫ف‬ ), la préposition (ex. : ‫ل‬ ), les
pronoms(ex. : ‫هم‬ ) et l'article(ex. : ‫ال‬ ).
Le nombre d'affixes est limité et ils peuvent être ajoutés au début du mot
« Préfixes », ou à la fin du mot « suffixes ». Un mot peut avoir jusqu'à deux préfixes et jusqu'à trois suffixes (Al-
Sughaiyer et al. ,2004).
Le processus d'extraction du mot du noyau ou de la racine du texte original en éliminant les suffixes et les préfixes
sont appelés stemming. Contrairement à la langue anglaise, la suppression des préfixes et des suffixes d'un mot arabe
n'inversent généralement pas le sens du mot (Awajan, 2007).
Le stemmer que nous utilisons est développé sur la base des approches de stemming légères décrit dans (Darwish et
al. ,2016) avec des restrictions supplémentaires dans la liste des préfixes et suffixes supprimables.
La lumière issue d'un processus se réfère à un processus de petit ensemble de préfixes et / ou suffixes, sans essayer de
ne pas traiter les infixes ni reconnaître motifs et racines. D'une part, cette approche réduit le risque de perte de consonne
racine qui peut être produit si une tige lourde est utilisée. D'autre part, l'inconvénient de l'utilisation de la lumière le
stemmer sera corrigé par l'analyseur morphologique qui sera appliqué sur les tiges en la phase suivante.
Le stemmer décompose la chaîne d'entrée en parties additives (préfixes, suffixes) et tige. La décomposition est réalisée
en appliquant un ensemble de règles d'identification qui testent les premiers caractères et les derniers caractères du
mot contre les parties additives possibles et de capables.
La décomposition du mot en trois parties est obtenue à condition que la première partie soit dans la liste des préfixes
possibles et la troisième partie est dans la liste des suffixes possibles. La première et la troisième partie peuvent être
nulles. Le stemmer léger développé dans cet article est basé sur les éléments suivants :
• Un mot est composé de trois parties : préfixe, racine et suffixe.
• N'importe laquelle des parties additives (préfixes et suffixes) peut être vide.
• La racine du mot a au moins trois lettres. Tout mot de moins de quatre lettres sera laissé sans décomposition.
• Un préfixe peut avoir de 0 à 3 lettres et exister dans la liste des préfixes.
• Un suffixe peut avoir 0 à 3 lettres et exister dans la liste des suffixes.
• Seules les consonnes du mot (lettres) sont prises en compte aux fins de cette décomposition.
Le processus de décomposition des mots et de suppression des suffixes est répété jusqu'à ce que l'un des éléments
suivants les conditions sont vérifiées :
• Le nombre de lettres du mot est inférieur ou égal à 3.
51
• Aucun préfixe ni suffixe n'a été détecté.
Une liste explicite des affixes supprimables est fournie dans un tableau. Ils sont classés selon leur type (préfixe /
suffixe) et leur longueur (1, 2 et 3 lettres).
Cette liste restreinte contient principalement des conjonctions, des prépositions, des pronoms et l'article.
Le tableau I montre des exemples de cette liste. Les affixes utilisés pour déterminer la personne, le nombre et le sexe
ne sont pas inclus dans ce tableau et ne sont donc pas supprimables dans cette phase. La priorité de détection et
d'élimination est donnée pour les affixes à trois lettres sur les affixes à deux lettres, pour les affixes à deux lettres sur
les affixes à une lettre et pour les préfixes sur les suffixes.
Des étapes principales dans le Stemming est la normalisation qui vise à transformer une copie du document original
dans un format standard plus facilement manipulable. Cette étape est considérée nécessaire à cause des variations qui
peuvent exister alors de l’écriture d’une même unité lexicale. Donnons comme exemple :
• Suppression des caractères spéciaux.
• Remplacement de la lettre (‫)ة‬ par (‫.)ه‬
• Remplacement les lettres (‫ئ‬ ،‫آ‬ ،‫إ‬ ،‫أ‬ ) par (‫ا‬ ).
• Remplacement de la lettre finale (‫)ي‬ par (‫.)ى‬
Figure III-4 : Exemple d'un stemming
1.6.4 Retrait des stopwords
La majorité des mots d'un texte donné relient des parties d'une phrase plutôt que de montrer des sujets, des objets ou
une intention. Supprimez des mots comme «‫في‬ » ou «and» cab en comparant le texte à une liste de mots vides.
Input
Output
Figure III-5 : Exemple d'un stopword
52
Conclusion
Ce chapitre avait comme but de présenter les données et les préparer. Puis nous avons démontré la structure d’un jeu
de données qui est utilisé pour réaliser le chatbot, ainsi nous avons déclaré et détaillé l’importance du pré-traitement
et leurs étapes.
53
Chapitre IV : Réalisation d’un chatbot
Introduction
Après avoir effectué une préparation du data dans le chapitre précédent, ce chapitre se débute avec solution proposée
et ensuite les technologies utilisées que ça soit langages de programmation ou bibliothèques ou autre.
Ensuit il existe aussi des extrais de code pour rendre la programmation ou l’implémentation beaucoup plus claire.
Aussi ce chapitre présente le type de deep learning utilisé ainsi que le résultat du travail effectué durant ce projet de
fin d’études. Nous allons clôturer par quelques captures d’écran démontrant les résultats obtenus.
1. Solution proposée
Sans doute, pour faciliter l'atteindre des informations concernant COVID-19 avec la fiabilité de ces informations et
aussi en arabe dialectal, nous avons proposé le chatbot comme solution.
Le chatbot coute beaucoup moins cher de temps que des sites web pour accéder l’information.
Lors de l’inscription des utilisateurs auprès d’un chatbot, leur première interaction consistera presque toujours en un
questionnaire conçu pour entrer et sauvegarder leurs informations (nom et prénom) et leurs questions en data bases
parce que nous améliorerons mon module basé sur ces questions.
IV. hhf hhf
Figure IV-1 : Interface de l’entre au chatbot
54
2. Technologies utilisées
2.1 Langage de programmation (Python)
Figure IV-2 : Logo python
Python est un langage complet qui s’est tourné naturellement vers la data science.
Python a acquis ces dernières années une réelle légitimité en data science. Ceci s’explique par les bibliothèques
spécialisées apparues et par la simplicité d’apprentissage du langage. En effet, il est très bien adapté pour apprendre
les bases de la programmation.
Python est un langage complet qui s’est tourné naturellement vers la data science, Python s’appuie sur des librairies
très complètes (NumPy, SciPy, pandas, matplotlib, IPython …) et sur une facilité de prototypage pour mettre en place
des Process plus ou moins complexes. La force de Python est la possibilité d’intégrer des algorithmes de data science
dans un programme plus général. On pourra donc créer un programme complet avec seulement une partie dédiée aux
modèles et ceci rapidement. S’il s’agit d’un programme pour la production, on optimisera dans un second temps les
parties du code ayant des faiblesses en utilisant un langage de plus bas niveau (C++…).
Figure IV-3 : comparaison entre python et autres langages
Afin de bénéficier des avantages de python comme étant un langage de programmation il nous faut un éditeur et pour
cela nous avons choisi de travailler avec Spyder en Anaconda.
55
Figure IV-4 : Logo de Spyder avec ANACONDA
Spyder (nomme Pydee dans ses premières versions) est un environnement de développement pour Python.
Libre (Licence MIT) et multiplateforme (Windows , Mac OS, GNU/Linux), il intègre de nombreuses bibliothèques
d’usage scientifique Matplotlib, NumPy, SciPy et IPython.
Créé et développé par Pierre Raybaut en 2008, Spyder est maintenu, depuis 2012, par une communauté de
développeurs qui ont pour point commun d'appartenir à la communauté Python scientifique.
En comparaison avec d'autres IDE pour le développement scientifique, Spyder a un ensemble unique de
fonctionnalités - multiplateforme, open-source, écrit en Python et disponible sous une licence non-copyleft. Spyder
est extensible avec des plugins, comprend le support d'outils interactifs pour l'inspection des données et incorpore des
instruments d'assurance de la qualité et d'introspection spécifiques au code Python, tels que Pyflakes, Pylint et Rope.
2.2 Les bibliothèques
Keras : est une bibliothèque open-source de composants de réseau neuronal écrite en Python. Keras est capable de
fonctionner sur TensorFlow, Theano, PlaidML et autres. La bibliothèque a été développée pour être modulaire et
conviviale, mais elle a d'abord commencé dans le cadre d'un projet de recherche pour le système d'exploitation
intelligent neuro-électronique à composition non limitée ou ONEIROS. L'auteur principal de Keras est François
Chollet, un ingénieur de Google qui a également écrit XCeption, un modèle de réseau de neurones profonds. Bien que
Keras ait été officiellement lancé, il n'a été intégré à la bibliothèque principale de TensorFlow de Google qu'en 2017.
Un support supplémentaire a également été ajouté pour l'intégration de Keras avec Microsoft Cognitive Toolkit.
Composée d'une bibliothèque de composants d'apprentissage automatique couramment utilisés, notamment des
objectifs, des fonctions d'activation et des optimiseurs, la plate-forme open source de Keras offre également une prise
en charge des réseaux de neurones récurrents et convolutionnels. De plus, Keras propose le développement de plates-
formes mobiles pour les utilisateurs souhaitant mettre en œuvre des modèles d'apprentissage en profondeur sur les
smartphones, iOS et Android. En 2018, la bibliothèque a une utilisation de 22% parmi ses plus de 200000 utilisateurs.
Tensorflow : est un outil open source d'apprentissage automatique développé par Google. Le code source a été ouvert
le 9 novembre 2015 par Google et publié sous licence Apache.
Il est fondé sur l'infrastructure DistBelief, initiée par Google en 2011, et est doté d'une interface pour Python et Julia.
TensorFlow est l'un des outils les plus utilisés en IA dans le domaine de l'apprentissage machine.
Pour la réalisation de mon projet j’avais besoin de créer un model RNN, Tensorflow m’a aidé et plus précisément j’ai
utilisé l’api tensorflow.keras.
56
L’écosystème Deep Learning comprend de nombreuses librairies.
Figure IV-5 : Les librairies Deep Learning
La première couche bas niveau est celle permettant d’utiliser une carte graphique. Ces GPU sont généralement de
marque NVIDIA, qui domine le marché. On utilise alors sa librairie CUDA dédiée, éprouvée par la communauté. À
celle-là s’ajoute la librairie CuDNN qui accélère les procédures des réseaux de neurones.
Au-dessus se situent les librairies de Deep Learning. Ces librairies permettent de définir le graphe symbolique
d’opérations décrivant le réseau de neurones, et rendent transparente la parallélisation. TensorFlow a été initiée par
Google et propose aussi des algorithmes en dehors du Deep Learning. Torch est utilisé par Facebook et Twitter et se
distingue par son environnement en langage Lua. Theano, considéré comme le grand-père des librairies Deep
Learning, est un wrappeur Python proposant un environnement de machine learning. Il permet la création de librairies
haut niveau telles que Lasagne et Keras.
Keras est une librairie de haut niveau, permettant de manipuler des réseaux de neurones en quelques lignes de code.
Elle est accompagnée d’une documentation et de tutoriels de grandes qualités. Initialement développée au-dessus de
Theano, le backend TensorFlow est désormais supporté et utilisé par défaut. Étant une librairie de haut niveau, la
limitation de Keras est qu’elle ne permet pas d’innover sur les détails d’entraînement des réseaux de neurones.
Que vous soyez débutant à la recherche d’une API simple ou un expert qui souhaite prototyper rapidement des
expériences, Keras est un excellent choix !
NLTK : Natural Language Toolkit est une plate-forme utilisée pour créer des programmes Python qui fonctionnent
avec des données en langage humain pour les appliquer au traitement statistique du langage naturel (NLP).
Il contient des bibliothèques de traitement de texte pour la tokenisation, l'analyse, la classification, le stemming, le
balisage et le raisonnement sémantique. Il comprend également des démonstrations graphiques et des exemples
d'ensembles de données, ainsi qu'un livre de cuisine et un livre expliquant les principes sous-jacents aux tâches de
traitement du langage sous-jacentes prises en charge par NLTK.
Le Natural Language Toolkit est une bibliothèque open source pour le langage de programmation Python écrite à
l'origine par Steven Bird, Edward Loper et Ewan Klein pour une utilisation dans le développement et l'éducation.
Il est livré avec un guide pratique qui présente des sujets en linguistique informatique ainsi que les principes
fondamentaux de programmation pour Python, ce qui le rend approprié pour les linguistes qui n'ont pas de
57
connaissances approfondies en programmation, les ingénieurs et les chercheurs qui doivent se plonger dans la
linguistique informatique, les étudiants et les enseignants.
NLTK comprend plus de 50 corpus et sources lexicales tels que Penn Treebank Corpus, Open Multilingual Wordnet,
Problem Report Corpus et Lin’s Dependency Thesaurus.
Figure IV-6 : Téléchargement de NLTK Book Collection
Pour l’implémentation de mon projet j’avais besoin de nettoyer le dataset, parce que Le principal problème avec les
données texte est qu'elles sont toutes au format texte (chaînes). Cependant, les algorithmes d'apprentissage profond
ont besoin d'une sorte de vecteur d'entités numériques pour effectuer la tâche. Donc, avant de commencer avec un
projet NLP, nous devons le pré-traiter pour le rendre idéal pour travailler.
NumPy : est un package de traitement de tableau à usage général. Il fournit un objet de tableau multidimensionnel
hautes performances et des outils pour travailler avec ces tableaux.
C'est le package fondamental pour le calcul scientifique avec Python. Il contient diverses fonctionnalités, dont celles
importantes :
• Un puissant objet tableau N-dimensionnel.
• Fonctions sophistiquées (diffusion).
• Outils d'intégration du code C / C ++ et Fortran.
• Algèbre linéaire utile, transformée de Fourier et capacités de nombres aléatoires.
Outre ses utilisations scientifiques évidentes, NumPy peut également être utilisé comme un conteneur
multidimensionnel efficace de données génériques.
Des types de données arbitraires peuvent être définis à l'aide de Numpy qui permet à NumPy de s'intégrer de manière
transparente et rapide à une grande variété de bases de données.
58
Pour moi j’ai utilisé NumPy dans ce projet pour créer des tableaux, calculer l’argmax des probabilités et la
visualisation.
Matplotlib : est une incroyable bibliothèque de visualisation en Python pour les tracés 2D des tableaux. Matplotlib est
une bibliothèque de visualisation de données multiplateforme construite sur des baies NumPy et conçue pour
fonctionner avec la pile SciPy plus large. Il a été introduit par John Hunter en 2002.
L'un des plus grands avantages de la visualisation est qu'elle nous permet d'accéder visuellement à d'énormes quantités
de données dans des visuels faciles à digérer. Matplotlib se compose de plusieurs tracés comme la ligne, la barre, la
dispersion, l'histogramme, etc.
Dans notre projet nous avons utlisé Matplotlib pour visualiser la performance de mon module.
Flask : est un framework web. Cela signifie que flask vous fournit des outils, des bibliothèques et des technologies
qui vous permettent de créer une application Web. Cette application Web peut être des pages Web, un blog, un wiki
ou devenir aussi volumineuse qu'une application de calendrier Web ou un site Web commercial.
Flask fait partie des catégories du micro-cadre. Les micro-frameworks sont normalement des frameworks avec peu ou
pas de dépendances aux bibliothèques externes. Cela a des avantages et des inconvénients. Les avantages seraient que
le cadre est léger, il y a peu de dépendance à mettre à jour et à surveiller les bogues de sécurité, contre c'est que parfois
vous devrez faire plus de travail par vous-même ou augmenter vous-même la liste des dépendances en ajoutant des
plugins. Dans le cas de Flask, ses dépendances sont :
• Werkzeug une bibliothèque d'utilitaires WSGI.
• Jinja2 qui est son moteur de template.
Dans ce projet Flask fait la communication entre le serveur et client (application Desktop html, javascript, css).
argparse : est une bibliothèque complète de traitement d'arguments. Les arguments peuvent déclencher différentes
actions, spécifiées par l'argument action à add_argument (). Les actions prises en charge incluent le stockage de
l'argument (seul ou dans le cadre d'une liste), le stockage d'une valeur constante lorsque l'argument est rencontré (y
compris la gestion spéciale des valeurs vraies / fausses pour les commutateurs booléens), le comptage du nombre de
fois qu'un argument est vu, et appeler un rappel.
L'action par défaut consiste à stocker la valeur de l'argument. Dans ce cas, si un type est fourni, la valeur est convertie
en ce type avant d'être stockée. Si l'argument dest est fourni, la valeur est enregistrée dans un attribut de ce nom sur
l'objet namespace renvoyé lorsque les arguments de la ligne de commande sont analysés.
Le module argparse a été ajouté à Python 2.7 en remplacement d'Optparse. L'implémentation d'argparse prend en
charge des fonctionnalités qui n'auraient pas été faciles à ajouter à optparse et qui auraient nécessité des modifications
d'API incompatibles en amont.Un nouveau module a donc été introduit à la place dans la bibliothèque. optparse est
toujours pris en charge, mais ne recevra probablement pas de nouvelles fonctionnalités.
JSON : est la notation d'objet JavaScript. Cela signifie qu'un fichier de script (exécutable) composé de texte dans un
langage de programmation est utilisé pour stocker et transférer les données. Python prend en charge JSON via un
package intégrer appelé json. Pour utiliser cette fonctionnalité, nous importons le package json en script Python. Le
texte en JSON se fait via une chaîne entre guillemets qui contient la valeur dans le mappage de valeur-clé dans {}. Il
59
est similaire au dictionnaire en Python. JSON présente une API similaire aux utilisateurs des modules de marshalage
et de pickle de la bibliothèque standard et Python prend en charge nativement les fonctionnalités JSON.
Nous avons utilisé JSON pour sauvegarder les données et passer de client au server et vice versa.
3. L’implémentation
Comme déjà cité dans les chapitres précédents notre projet consiste à réaliser un chatbot robuste pour répondre aux
questions des utilisateurs concernant le coronavirus et pour ça nous avons suivi un ensemble des étapes que ça sera
détaillé plus dans la suite.
Nous avons assemblé un modèle LSTM seq2seq en utilisant l'API fonctionnelle Keras pour créer un chatbot
fonctionnel qui répondrait aux questions qui lui sont posées.
3.1 Importation des packages
Nous avons importé TensorFlow et notre bien-aimé Keras. De plus, nous avons importé aussi d'autres modules qui
aident à définir les couches du modèle après l’installation.
3.2 Pré-traitement des données
3.2.1 Lecture des données des fichiers
Pour un ordinateur, une conversation n’est qu’une série de lettres sans structure. On doit d’abord trouver un moyen
de simplifier le texte, puis de transformer les conversations en vecteurs tout en conservant la structure du langage,
avant d’entraîner le modèle de génération de réponse ; enfin, on doit choisir une métrique d’évaluation du modèle
pour sélectionner automatiquement le plus performant.
Nous avons analysé chacun des fichiers .txt.
• Concatène deux phrases ou plus si la réponse en contient deux ou plus.
• Supprimer les types de données indésirables produits lors de l'analyse des données.
• Ajoutez <START> et <END> à toutes les réponses.
3.2.2 Préparation des données pour le modèle Seq2Seq
Nous avions 1000 conversations à notre disposition pour l’entraînement du chatbot. C’est énorme … et très peu à la
fois. En effet la plupart des quelques 20 000 mots différents qui apparaissent dans notre corpus de conversation
n’apparaissent qu’une fois. Cette observation confirme une fois de plus la loi empirique de Zipf (cf. Figure 4.6), qui
implique notamment que la plupart des mots d’un texte ou corpus n’apparaissent qu’une ou deux fois. Le deuxième
mot le plus présent, par exemple, est typiquement deux fois moins représenté du premier.
60
Figure IV-7 : Loi empirique de Zipf
Comme notre modèle ne peut pas apprendre à répondre à des phrases composées de mots qu’il n’a presque jamais vu
au cours de son entraînement, il faut l’aider un peu. C’est la phase de prétraitement du texte, qui est aussi nécessaire
que riche.
Au cours de cette étape, on cherche à réduire la complexité du texte en appliquant certaines des opérations suivantes
:
• Suppression des mots vides (‫,أن‬‫إلى‬ …) qui sont omniprésents et ne sont pas nécessaires à la compréhension du
texte.
• Séparation de la phrase en unités lexicales. Cette étape consiste à transformer la chaîne de caractères qui
correspond à une phrase en une liste de mots. Elle implique des choix sur la gestion des tirets, la suppression
de la ponctuation, etc.
• Normalisation : c’est l’opération qui consiste à la conjugaison, les marques de nombre, de genre.
Il faut noter que ces opérations sont partiellement destructrices pour le texte, elles peuvent même le rendre
inintelligible par endroit. Le choix des opérations de pré-traitement à appliquer doit donc résulter d’une inspection
approfondie d’exemples et de l’impact sur les performances finales du modèle. On remarque que l’ordre des opérations
de prétraitement joue un rôle, et que des opérations préliminaires de nettoyage du texte sont souvent nécessaires pour
retirer des balises HTML, remplacer des acronymes spécifiques, traduire certains mots, verbaliser des émoticônes, …
Pour savoir plus des informations concernant le pré-traitement de données voire le chapitre précèdent (3).
Notre modèle nécessite trois tableaux à savoir encoderInputs, decoderInputs et decoderOutputs.
Pour encoderInputs :
• Tokenize les questions Remplissez-les à leur longueur maximale.
Pour decoderInputs :
• Tokenisez les réponses. Remplissez-les à leur longueur maximale.
61
Pour decoderOutputs :
• Tokenisez les réponses. Supprimez le premier élément de toutes les réponses tokenized_answers. Il s'agit de
l'élément <START> que nous avons ajouté précédemment.
3.3 Vectorisation
Les mots ne sont pas naturellement compris par les ordinateurs. En transformant les mots en une forme numérique,
nous pouvons appliquer des règles mathématiques et effectuer des opérations matricielles sur celles-ci pour obtenir
une sortie.
La façon la plus simple de représenter numériquement des mots consiste à utiliser un one-hot encoding. Cela signifie
que chaque un mot unique dans l'ensemble de données est représenté par un vecteur unique dans l'espace vectoriel,
avec des 0 partout ailleurs.
La dimension du vecteur sera alors le nombre de mots uniques. Il en résulte un énorme le vecteur qui capture des
informations non relationnelles.
Figure IV-8 : Vectorisation d’une question
Comme le montre le diagramme, chaque mot est de la même distance, donc les synonymes et les antonymes sont
traités être le même.
3.3.1 Word Embedding
L'incorporation de mots est un nombre réel, une représentation vectorielle d'un mot. Idéalement, des mots avec
similaires le sens sera rapproché lorsqu'il sera représenté sur l'espace vectoriel.
Le but est de capturer relation dans cet espace. Avec des mots dans un espace densément peuplé, nous pouvons
représenter un vecteur de mots dans un espace beaucoup plus petit par rapport à un vecteur encodé à chaud pouvant
atteindre des millions de dimensions.
Word2vec : Word2vec a été créé par une équipe de chercheurs de Google, dirigée par Tomáš Mikolov. C'est le plus
populaire méthode de formation à l'intégration.
62
Ce modèle implique un calcul statistique pour apprendre d'un corpus de texte. C’est un modèle prédictif qui apprend
à ses vecteurs à améliorer sa capacité prédictive en réduisant sa fonction de perte. C'est aussi le premier modèle qui
considère la proximité de la signification des mots dans un espace vectoriel.
Donc en fin nous avons créé une matrice embedding avec le modèle de bag of words est une représentation sans ordre
du texte. Le texte est représenté comme le sac de mots, sans considérant la relation entre les mots et la grammaire.
Cette méthode représente le mot en gros texte et est le plus souvent utilisé pour la classification des documents et il
est l'une des trois approches d'intégration de mots les plus utilisées, TF-IDF et Word2Vec étant les deux autres.
3.4 Création du modèle
Pour la création du modèle nous avons choisi de se baser sur l’architecture Seq2seq (voire le chapitre 2).
Le modèle se compose des couches Embedding, LSTM et Dense. La configuration de base est la suivante :
• 2 couches d’entrée : la première pour Encodeur(encoderInputs) et la deuxième pour Decodeur (decoderInputs).
• Couche Embedding : pour convertir des vecteurs de jetons pour fixer des vecteurs denses de taille.
• Couche LSTM : permet d'accéder aux cellules à long terme et à court terme.
Travail :
• Les données d'entrée de l'encodeur sont fournies dans la couche d'intégration (embeddedEncInputs).
• La sortie de la couche Embedding va à la cellule LSTM qui produit 2 vecteurs d'état.
• Ces états sont définis dans la cellule LSTM du décodeur.
• decoderInputs passe par la couche Embedding.
• The Embeddings va en cellule LSTM (qui avait les états) pour produire des séquences.
3.5 La formation (Training)
Comme on sait déjà la phase de formation fait partie de la notion machine Learning en général depuis toujours, pour
faire la formation d’un modèle on a toujours besoin d’une base de données bien préparé pour éviter la fuite des
informations principales.
La préparation des données (ou preprocessing) est déjà expliquée dans ce chapitre et le chapitre précédent.
Afin de faire le training de mon modèle et avant de faire la création de modèle à partir encoderInputs, decoderInputs
et decoderOutputs avec une valeur du paramètre mode égale à Train, nous avons développé dans notre projet un script
qu’est fait spécialement pour fournir un itérateur qui parcours la base donnée pour extraire les valeurs avec lesquelles
je forme mon modèle avec leurs labels.
Nous avons entraîné le modèle pour un certain nombre d'époques avec l'optimiseur RMSprop et la fonction de
perte categorical_crossentropy.
63
RunConfig :
Figure IV-9 : Fonction de création le modèle
Les réseaux de neurones se composent de couches et de nombreux autres paramètres qui définissent son architecture,
les paramètres de formation et les hyperparamètres, et pour un réseau de neurones formé - des couches formées (poids
et biais) qui sont appelées paramètres. Les hyperparamètres sont définis par l'utilisateur tandis que les paramètres sont
appris (obtenus en entraînant le réseau neuronal avec des données).
Les hyperparamètres : Les hyperparamètres définissent combien vous voulez former le réseau neuronal (périodes de
formation), la taille des lots, le taux d'apprentissage, la fonction d'optimisation, la configuration du réseau neuronal
(couches, unités cachées dans les couches, fonction d'activation, etc.). Pendant la phase de formation d'un projet
d'apprentissage en profondeur, vous souhaiterez peut-être régler ces hyperparamètres pour obtenir les performances
optimales du modèle de réseau de neurones.
Les paramètres : La phase de formation d'un projet d'apprentissage en profondeur est hautement répétitive et
monotone, mais c'est ce qui produit la chose la plus importante du projet, les paramètres du modèle formé (poids et
biais). Ces paramètres existent en mémoire (mémoire RAM / GPU) et non en stockage non volatile. Ces paramètres
ne seront pas enregistrés sauf si vous les programmez explicitement dans votre code d'apprentissage en profondeur.
Le point de contrôle est la pratique ou le terme utilisé pour décrire la sauvegarde d'un instantané des paramètres de
votre modèle (poids) après chaque période de formation. C'est comme enregistrer des niveaux dans un jeu auquel vous
jouez, lorsque vous pouvez reprendre votre jeu en chargeant le fichier de sauvegarde à tout moment. Vous pouvez
charger les poids enregistrés du modèle et reprendre votre entraînement ou même exécuter une inférence plus tard.
La phase de formation pour les modèles complexes est généralement longue (heures à jours à semaines). Sur les
systèmes NUS HPC, la file d'attente GPU pour l'apprentissage en profondeur a une limite de temps de mur par défaut
de 24 heures et une limite maximale de 48 heures pour l'exécution du travail. Les travaux de formation en
apprentissage approfondi pour les modèles complexes et les grands ensembles de données peuvent prendre plus de
temps à exécuter que les limites de temps de mur de file d'attente.
Par conséquent, pour ne pas perdre la progression de votre entraînement, il est conseillé de mettre en place un point
de contrôle des paramètres (poids) de votre modèle à chaque époque ou à chaque époque, mais uniquement s'il s'agit
des meilleurs poids à ce moment-là.
Avoir les poids les plus récents ou les meilleurs poids enregistrés sur la mémoire non volatile est une bonne pratique
car cela vous permet de conserver une copie de vos progrès à une époque donnée au cas où vous voudriez régler vos
hyperparamètres à une époque donnée. Il vous permet également de reprendre l'entraînement à partir de n'importe
quelle époque dotée d'un point de contrôle. Si le travail ou le processus se termine prématurément, vous pouvez
64
reprendre la formation en chargeant les poids à partir du dernier point de contrôle enregistré ou de tout autre point de
contrôle
Figure IV-10 : précision de modèle selon les époques
3.6 Définition de modèles d'inférence
Nous créons des modèles d'inférence qui aident à prédire les réponses.
Modèle d'inférence du codeur : Prend la question en entrée et en sortie des états LSTM (h et c).
Modèle d'inférence du décodeur : Prend 2 entrées, l'une est les états LSTM (sortie du modèle d'encodeur), la seconde
est les séquences d'entrée de réponse (celles n'ayant pas la balise <start>). Il affichera les réponses à la question que
nous avons introduite dans le modèle d'encodeur et ses valeurs d'état.
Le modèle est formé à partir de séquences source et cible données où le modèle prend à la fois la source et une version
décalée de la séquence cible comme entrée et prédit la séquence cible entière.
Par exemple, une séquence source peut être [1,2,3] et la séquence cible [4,5,6]. Les entrées et sorties du modèle
pendant la formation seraient :
Figure IV-11 : Example de modèle d’inférence
Le modèle est destiné à être appelé de manière récursive lors de la génération de séquences cibles pour de nouvelles
séquences source.
65
La séquence source est codée et la séquence cible est générée un élément à la fois, en utilisant un caractère « début de
séquence » tel que « _ » pour démarrer le processus. Par conséquent, dans le cas ci-dessus, les paires d'entrée-sortie
suivantes se produiraient pendant la formation :
Figure IV-12 : Example de modèles inference_encoder et inference_decoder
Ici, vous pouvez voir comment l'utilisation récursive du modèle peut être utilisée pour créer des séquences de sortie.
Pendant la prédiction, le modèle inference_encoder est utilisé pour coder une fois la séquence d'entrée qui renvoie les
états qui sont utilisés pour initialiser le modèle inference_decoder. À partir de là, le modèle inference_decoder est
utilisé pour générer des prédictions pas à pas.
3.7 Parler avec notre chatbot(prédit)
Tout d'abord, nous avons défini une méthode qui convertit les questions en jetons Integer avec remplissage, puis nous
avons pris une question en entrée et prédis les valeurs d'état, après ça nous avons défini les valeurs d'état dans le LSTM
du décodeur.
Ensuite, nous avons généré une séquence qui contient l'élément <start>, ainsi nous avons entré cette séquence dans
l'inférence du décodeur et remplacer l'élément <start> par l'élément prédit par l'inférence decodeur et mette à jour les
valeurs d'état.
Nous avons effectué les étapes ci-dessus de manière itérative jusqu'à ce que nous ayons atteigne la balise <end> ou la
longueur de réponse maximale.
Figure IV-13 : L’interface de chatbot
66
Conclusion
Comme vous avez peut-être remarqué Keras avec Tensorflow offre une solution optimale pour réaliser le chatbot, et
en combinant cette api de high Levels avec d’autres technologies ça nous a permet d’implémenter un système capable
de réaliser les taches prévues même si au niveau de quelques points les résultats ne sont pas assez bons mais cela
revient à la nature complexe de l’image comme déjà cité dans le début de ce rapport.
67
Conclusion générale
Le naturel language processing étant un nouveau domaine d'étude, on en sait peu à ce sujet. Il y a encore beaucoup
incertitudes que les experts du domaine ne comprennent pas surtout avec la langue arabe. Les chercheurs passent leur
carrière à comprendre cette branche de la science des données. En tant que je suis débutant en science des données,
ayant 1 an pour réaliser ce projet, entre l'université et le stage à temps partiel, le temps était une limitation majeure
dans ce projet. Il existe donc des améliorations majeures qui peuvent être apportées pour améliorer le résultat de cette
étude.
Premièrement, davantage de recherches pourraient être effectuées sur les processus du langage naturel et appliquées
au corpus. Dans le chapitre III, nous avons discuté des différentes formes d’analyse et mentionné que nous n’avons
appliqué les processus de langage naturel les plus élémentaires : tokenisation, suppression des mots vides et la
suppression caractères spéciaux. Il existe de nombreuses autres méthodes mentionnées au chapitre 3 qui peuvent
améliorer le résultat production.
Les chatbots sont des systèmes capables de modéliser le langage naturel et d'établir une conversation avec un
utilisateur via un protocole de questions / réponses. Il existe trois types d'approches selon sur la liberté dont ils
disposent au moment de répondre : basée sur des règles, basée sur la récupération et basée sur la génération. Les deux
premières approches sont les plus utilisées de nos jours en raison de son efficacité à l'époque de maintenir une
conversation de domaine proche.
Les modèles génératifs, en revanche, se présentent comme une puissante alternative dans le sens qu'ils peuvent mieux
gérer une conversation sur un sujet ouvert. Ils sont très liés à l'idée de IA forte, pas d'intervention humaine au moment
de répondre, tout est appris par la machine.
Des résultats prometteurs ont été obtenus dans les modèles de chatbot génératifs en appliquant des techniques de
traduction avec des architectures codeur / décodeur RNN. Dans cette thèse, il a montré que les modèles de chatbot
basés sur des architectures codeur / décodeur utilisant exclusivement l'attention surpasse les modèles RNN.
Il est important de mentionner que tous les modèles présentés dans ce projet façonnent et imitent langage humain mais
n'appliquent aucune logique à leurs réponses. C'est pourquoi la plupart des réponses ne sont pas cohérents entre eux
et le modèle final manque de "personnalité". Les architectures d’Encodeur / décodeur sont une approche très
intéressante pour résoudre le dernier problème. Entre l'encodeur et décodeur, un bloc logique pourrait être ajouté.
Ensuite, une fois qu'une phrase d'entrée a été encodée, appliquez un raisonnement pour calculer ce qu'il est censé
répondre. Enfin, toutes les informations sont transmises au décodeur qui modélise une réponse en langage naturel pour
décrire ce que le bloc logique a raisonné.
L'intuition de la physique pour analyser les modèles d'apprentissage profondeur nous a amenés à explorer les preuves
transition de phase critique dans le processus de formation. Autrement dit, si la transition du modèle de « non appris
» à « appris » est une transition de phase critique analogue à de nombreux processus physiques. De l’analyse limitée
de notre travail, de telles preuves font défaut. Cela pourrait être purement l’absence d’une phase « critique » transition
ou il se pourrait que les modèles que nous avons employés ne fonctionnent tout simplement pas bien à la fin, ce qui
signifie ils n'ont pas encore vraiment atteint la phase « apprise ». D'autres modèles ou méthodes numériques peuvent
68
être appliqués d'explorer davantage la nature du processus d'évolution pendant la formation du modèle, et cela pourrait
être futur travail.
Nous espérons qu'à l'avenir, alors que nous effectuerons davantage de recherches sur les outils nécessaires pour
construire le chatbot très capable, nous auront une meilleure compréhension de la science des données et des réseaux
de neurones, avec la possibilité de se marier théories de la physique pour accélérer les progrès de l'intelligence
artificielle. Avec un fonctionnement pleinement chatbot basé génératif connecté à un domaine ouvert, nous pourrons
réaliser ce qui a été discuté dans les derniers chapitres et encore plus!
69
BIBLIOGRAPHIE & WEBOGHRAPHIE
✓ (Cho et al., 2014) Cho, K., Van Merriënboer, B., Gulcehre, C., Bahdanau, D., Bougares, F., Schwenk, H., &
Bengio, Y. (2014). Learning phrase representations using RNN encoder-decoder for statistical machine
translation. arXiv preprint arXiv:1406.1078.
✓ (Shannon, 2017) Shannon, M. (2017). Optimizing expected word error rate via sampling for speech
recognition. arXiv preprint arXiv:1706.02776.
✓ (Said et al. ,2013) Said, A., El-Sharqwi, M., Chalabi, A., & Kamal, E. (2013, June). A hybrid approach for
Arabic diacritization. In International Conference on Application of Natural Language to Information
Systems (pp. 53-64). Springer, Berlin, Heidelberg.
✓ (Al‐Sughaiyer et al., 2004) Al‐Sughaiyer, I. A., & Al‐Kharashi, I. A. (2004). Arabic morphological analysis
techniques: A comprehensive survey. Journal of the American Society for Information Science and
Technology, 55(3), 189-213.
✓ (Awajan, 2007) Awajan, A. (2007). Arabic text preprocessing for the natural language processing
applications. Arab Gulf Journal of Scientific Research, 25(4), 179-189.
✓ (Darwish et al. ,2016) Darwish, K., & Mubarak, H. (2016, May). Farasa: A new fast and accurate Arabic
word segmenter. In Proceedings of the Tenth International Conference on Language Resources and
Evaluation (LREC'16) (pp. 1070-1074).
✓ Traitement du langage naturel avec la langue arabe
https://www.researchgate.net/publication/277424016_Arabic_Natural_Language_Processing
✓ La méthode complète pour mettre en place un projet de chatbot dans votre service client.
https://www.eloquant.com/blog/la-methode-complete-pour-mettre-en-place-un-projet-de-
chatbot-dans
✓ Avalverde, D. Une brève histoire des chatbots.
https://pcc.cs.byu.edu/2018/03/26/abrief-history-of-chatbots/
✓ Architecture de chatbot.
https://medium.com/@surmenok/chatbot-architecture-496f5bf820ed
✓ Comment construire un chatbot.
https://chatbotslife.com/how-to-build-a-chatbot-from-zero-a0ebb186b070
✓ Compréhension intuitive des incorporations de mots : compter les vecteurs dans Word2Vec.
https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-countword2veec/
✓ Créer un chatbot doté d’une intelligence artificielle (IA).
https://www.imagescreations.fr/comment-mettre-en-place-un-chatbot/

Chatbot arabe-dialectale-covid19

  • 1.
    Année universitaire 2019-2020 Mémoireprésenté à La Faculté des Sciences Dhar El Mahraz Fès Pour l’obtention du Diplôme de Master Web Intelligence et Science des Données (WISD) Master en double diplomation avec l’Université Sorbonne Paris Nord Spécialité : Informatique Intitulé : Chatbot sur COVID-19 avec l’arabe dialectal Intitulé du Stage/PFE Présenté par : AKKA Othman Encadré par : PhD. SATORI Hassan et Mr. ZEDDARI Abderrazzak Soutenu le 14/07/2020, devant le jury : - Mohamed Adnane MAHRAZ Professeur à la Faculté des Sciences Dhar El Mahraz Fès - My Abdelouahed SABRI Professeur à la Faculté des Sciences Dhar El Mahraz Fès - Hassan SATORI Professeur à la Faculté des Sciences Dhar El Mahraz Fès - Ali YAHYAOUY Professeur à la Faculté des Sciences Dhar El Mahraz Fès
  • 2.
    2 Remerciement C’est avec ungrand plaisir que je réserve ces lignes en gage d’obligeance et de gratitude à tous ceux dont j’ai sollicité l’aide et la collaboration durant ce projet. Mon dévouement et mon reconnaissance s’adressent à mon encadrant pédagogique Mr. SATORI Hassan professeur à la Faculté des sciences de Fès pour sa disponibilité, son orientation avisée, ainsi que les précieux conseils qu’il n’a cessé de me prodiguer et qui ont fort contribué à l’accomplissement de ce travail. Remerciements spéciaux à tout le corps professoral de la Faculté des Sciences de Fès particulièrement celui du département Informatique qui ont su m’inculquer des connaissances pluridisciplinaires, piliers de toutes nos imminentes occupations professionnelles. Je tente fermement à remercier l’ensemble du personnel De Axilog : Cadres et employés, notamment Mr. ZEDDARI Abderrazzak le fondateur de Axilog, pour l’intérêt particulier qu’ils ont porté à ce travail et le temps qu’ils m’ont octroyé. Ainsi à toutes les personnes que j’ai omis de citer et qui, par leur courtoisie et leur soutien, ont accepté généreusement de m’orienter. Je voudrais également exprimer mon ample gratitude envers les membres de jury qui ont bien voulu me donner l’honneur d’évaluer et d’apprécier ce travail ainsi que pour leur transparence et leurs efforts à garantir les meilleures conditions lors de la soutenance.
  • 3.
    3 Dédicaces Je dédie cetravail et ma profonde gratitude et reconnaissance, A mes chers parents, qui ont constitué la première école de mon existence. Sans eux je n’y serais jamais arrivé. Merci pour tous leurs sacrifices, leur amour et leur soutien moral tout au long de ma vie. A mes sœurs et mes frères que j’aime tant, qui n’ont cessé de m’encourager je vous souhaite une vie pleine de bonheur et de succès et d’amour. Que ce travail soit l’accomplissement de vos vœux tant allégués, et le fruit de votre soutien infaillible. A toute ma famille, Merci d’être toujours là pour moi.
  • 4.
    4 Sommaire Remerciement................................................................................................................................................................................. 2 Dédicaces........................................................................................................................................................................................ 3 Sommaire........................................................................................................................................................................................4 Liste de figures ............................................................................................................................................................................... 7 Résumé ........................................................................................................................................................................................... 9 Abstract ........................................................................................................................................................................................ 10 Introduction générale.................................................................................................................................................................... 11 Liste des abréviations ................................................................................................................................................................... 13 Chapitre I : Organisme d’accueil et Contexte général.................................................................................................................. 14 Introduction .............................................................................................................................................................................. 14 1. Organisme d’accueil......................................................................................................................................................... 14 1.1 Présentation de Axilog.............................................................................................................................................. 14 2. Cadre général du projet..................................................................................................................................................... 14 2.1 Etude d’existant........................................................................................................................................................ 14 2.1.1 DakiBot............................................................................................................................................................. 15 2.1.2 arabot................................................................................................................................................................ 15 2.1.3 Dial Technologies :........................................................................................................................................... 15 2.2 Planning du Projet .................................................................................................................................................... 16 2.2.1 Organigramme de projet................................................................................................................................... 16 2.2.2 Diagramme de Gantt provisionnel.................................................................................................................... 17 2.2.3 Diagramme de Gantt Réel ................................................................................................................................ 18 2.3 Cahier des charges.................................................................................................................................................... 19 Conclusion................................................................................................................................................................................ 19 Chapitre II : Etat de l’art............................................................................................................................................................... 20 Introduction .............................................................................................................................................................................. 20 1. Natural Language Processing – NLP................................................................................................................................ 20 1.1 Définition :................................................................................................................................................................ 20 2. Data Mining...................................................................................................................................................................... 20 2.1 Définition :................................................................................................................................................................ 20 2.2 Classification ............................................................................................................................................................ 21 3. Machine Learning............................................................................................................................................................. 22
  • 5.
    5 3.1 Définition :................................................................................................................................................................22 4. Deep learning.................................................................................................................................................................... 23 4.1 Définition :................................................................................................................................................................ 23 4.2 Les applications du Deep Learning .......................................................................................................................... 23 4.3 Le réseau neuronal.................................................................................................................................................... 25 4.3.1 Définition :........................................................................................................................................................ 25 4.3.2 Neurone biologique : ........................................................................................................................................ 25 4.3.3 Neurone artificiel :............................................................................................................................................ 26 4.4 Les fonctions d’activation : ...................................................................................................................................... 26 4.5 Différents types de réseaux de neurones dans le Deep Learning ............................................................................. 28 4.5.1 Artificial Neural Networks (ANN)................................................................................................................... 28 4.5.1.1 Avantages du réseau de neurones artificiels (ANN)..................................................................................... 30 4.5.2 Convolution Neural Network (CNN) ............................................................................................................... 30 4.5.2.1 Avantages du réseau neuronal à convolution (CNN) ................................................................................... 30 4.5.3 Recurrent Neural Networks (RNN).................................................................................................................. 32 4.5.3.1 Avantages du réseau neuronal récurrent (RNN) :......................................................................................... 32 4.5.3.2 RNN Encoder/Decoder architecture (Seq2Seq) ........................................................................................... 34 4.5.3.3 Attention Mechanism ................................................................................................................................... 35 4.5.3.4 Architecture de transformateur..................................................................................................................... 35 5. Chatbots............................................................................................................................................................................ 37 5.1 Définition :................................................................................................................................................................ 37 5.2 Une petite histoire sur les Chatbots :........................................................................................................................ 38 5.3 Analyse et présentation de quelques Chatbots : ....................................................................................................... 39 5.4 Elaboration d’un Chatbot : ....................................................................................................................................... 40 5.5 Les types de chatbot : ............................................................................................................................................... 41 5.6 Le flux de travail de Chatbot :.................................................................................................................................. 42 5.7 Architecture générale de système............................................................................................................................. 43 Conclusion................................................................................................................................................................................ 44 Chapitre III : Préparation du Data Set .......................................................................................................................................... 45 Introduction .............................................................................................................................................................................. 45 1. Data set............................................................................................................................................................................. 45 1.1 Généralité ................................................................................................................................................................. 45 1.2 Qualité/ Quantité....................................................................................................................................................... 45 1.3 Collection des données ............................................................................................................................................. 45
  • 6.
    6 1.4 Structure d’unjeu de données................................................................................................................................... 46 1.5 L'importance du prétraitement avec NLP................................................................................................................. 46 1.6 Les étapes du pré-traitement..................................................................................................................................... 47 1.6.1 Contexte............................................................................................................................................................ 47 1.6.2 Tokenisation du texte........................................................................................................................................ 49 1.6.3 La stemmatisation............................................................................................................................................. 49 1.6.4 Retrait des stopwords........................................................................................................................................ 51 Conclusion................................................................................................................................................................................ 52 Chapitre IV : Réalisation d’un chatbot......................................................................................................................................... 53 Introduction .............................................................................................................................................................................. 53 1. Solution proposée............................................................................................................................................................. 53 2. Technologies utilisées....................................................................................................................................................... 54 2.1 Langage de programmation (Python)....................................................................................................................... 54 2.2 Les bibliothèques...................................................................................................................................................... 55 3. L’implémentation ............................................................................................................................................................. 59 3.1 Importation des packages ......................................................................................................................................... 59 3.2 Pré-traitement des données....................................................................................................................................... 59 3.2.1 Lecture des données des fichiers ...................................................................................................................... 59 3.2.2 Préparation des données pour le modèle Seq2Seq ........................................................................................... 59 3.3 Vectorisation............................................................................................................................................................. 61 3.3.1 Word Embedding.............................................................................................................................................. 61 3.4 Création du modèle................................................................................................................................................... 62 3.5 La formation (Training)............................................................................................................................................ 62 3.6 Définition de modèles d'inférence ............................................................................................................................ 64 3.7 Parler avec notre chatbot(prédit) .............................................................................................................................. 65 Conclusion................................................................................................................................................................................ 66 Conclusion générale ..................................................................................................................................................................... 67 BIBLIOGRAPHIE & WEBOGHRAPHIE .................................................................................................................................. 69
  • 7.
    7 Liste de figures FigureI-1 : logo de l'entreprise Axilog.......................................................................................................................................... 14 Figure I-2: logo de l'entreprise Daki ............................................................................................................................................. 15 Figure I-3: logo de l'entreprise arabot.......................................................................................................................................... 15 Figure I-4: logo de l'entreprise Dial Technologies ........................................................................................................................ 16 Figure I-5 : Organigramme de projet............................................................................................................................................ 17 Figure I-6 : Tableau des taches provisionnelles............................................................................................................................ 17 Figure I-7 : Diagramme de Gantt Provisionnel ............................................................................................................................. 18 Figure I-8 : Tableaux des taches réelles........................................................................................................................................ 18 Figure I-9 : Diagramme de Gantt réel........................................................................................................................................... 19 Figure II-1 : Processus de Data Mining ......................................................................................................................................... 21 Figure II-2 : Structure d'un neurone biologique........................................................................................................................... 25 Figure II-3 : Structure d'un neurone artificiel............................................................................................................................... 26 Figure II-4 : Représentation graphique de la fonction Sigmoïde.................................................................................................. 27 Figure II-5 : Représentation graphique de la fonction Relu. ........................................................................................................ 27 Figure II-6 : Structure d'un perceptron......................................................................................................................................... 28 Figure II-7 : Le fonctionnement XOR (séparable non linéaire)..................................................................................................... 29 Figure II-8 : Structure d'un perceptron multicouche.................................................................................................................... 29 Figure II-9 : résultat de Sortie de convolution.............................................................................................................................. 30 Figure II-10 : CNN - Classification d'images.................................................................................................................................. 31 Figure II-11 : image....................................................................................................................................................................... 31 Figure II-12 : Image convolutante avec un filtre........................................................................................................................... 32 Figure II-13 : Schéma d'un réseau neuronal récurrent................................................................................................................. 32 Figure II-14 : Modèle Many2Many Seq2Seq ................................................................................................................................ 33 Figure II-15 : RNN déroulé............................................................................................................................................................ 33 Figure II-16 : Schéma d'un réseau LSTM....................................................................................................................................... 34 Figure II-17 : Schéma de l'architecture séquence à séquence ..................................................................................................... 34 Figure II-18 : Diagramme de l'architecture séquence à séquence avec un code bidirectionnel et appliquer l'attention dans le processus de décodage ................................................................................................................................................................ 35 Figure II-19 : Schéma simplifié de l'architecture Transformer..................................................................................................... 36 Figure II-20 : image de conversation d’un utilisateur et chatbot................................................................................................. 37 Figure II-21 : L'Histoire des Chatbots (Image de l’Internet et Réorganisation Personnelle)........................................................ 38 Figure II-22 : Generative-based chatbot model Figure II-23 : Retrieval-based chatbot model ....... 41 Figure II-24 : Chatbot conversation framework ........................................................................................................................... 42 Figure II-25 : Le flux de travail Chatbot ........................................................................................................................................ 43 Figure II-26 : Architecture générale de système .......................................................................................................................... 44 Figure III-1 : La structure de data set............................................................................................................................................ 46 Figure III-2 : Les principales phases du prétraitement du texte................................................................................................... 48 Figure III-3 : Exemple d'un Segmenteur ....................................................................................................................................... 49 Figure III-4 : Exemple d'un stemming........................................................................................................................................... 51 Figure III-5 : Exemple d'un stopword............................................................................................................................................ 51
  • 8.
    8 Figure IV-1 :Interface de l’entre au chatbot ................................................................................................................................ 53 Figure IV-2 : Logo python ............................................................................................................................................................. 54 Figure IV-3 : comparaison entre python et autres langages ........................................................................................................ 54 Figure IV-4 : Logo de Spyder avec ANACONDA ............................................................................................................................ 55 Figure IV-5 : Les librairies Deep Learning ..................................................................................................................................... 56 Figure IV-6 : Téléchargement de NLTK Book Collection............................................................................................................... 57 Figure IV-7 : Loi empirique de Zipf ............................................................................................................................................... 60 Figure IV-8 : Vectorisation d’une question................................................................................................................................... 61 Figure IV-9 : Fonction de création le modèle ............................................................................................................................... 63 Figure IV-10 : précision de modèle selon les époques................................................................................................................. 64 Figure IV-11 : Example de modèle d’inférence ............................................................................................................................ 64 Figure IV-12 : Example de modèles inference_encoder et inference_decoder........................................................................... 65 Figure IV-13 : L’interface de chatbot............................................................................................................................................ 65
  • 9.
    9 Résumé Dans ce travail,que j’ai effectué au sein de la société Axilog, dans le cadre du projet de fin d’études pour l’obtention du Master « Web Intelligence et Science des Données » en partenariat avec l’université Paris 13, Master « Sciences des Données et Intelligence Artificielle ». J’ai eu la chance durant ce stage de travailler sur un projet d’actualité, qui est le chatbot d’arabe dialectale, dont l’objectif principal est de présenter des conseils aux personnes à propos de coronavirus COVID-19, des statistiques des cas de décès et les nouveaux cas blesses en chaque jour en tous les pays de monde et aussi il contient des informations sur les effets de coronavirus sur l’économie. Dans le contexte de coronavirus, il y a beaucoup de personnes (gens) qui veulent connaître des informations en arabe dialectal mais ils n’ont rien trouvé, c'est pour cela nous avons pensé à réaliser un chatbot efficace pour répondre aux questions de ces personnes qui savent écrire ou pas avec des informations fiables. Un agent conversationnel (chatbot) est un logiciel capable de communiquer avec les humains utilisant le langage naturel. La modélisation de la conversation est une tâche importante en natural langage processing et intelligence artificielle (IA). En effet, depuis la naissance de l'IA, la création un bon chatbot reste l'un des défis les plus difficiles du domaine. Alors que les chatbots peuvent être utilisés pour diverses tâches, en général, ils doivent comprendre les énoncés des utilisateurs et fournir des réponses sont pertinents pour le problème en question. Dans le passé, les méthodes de construction des architectures de chatbot reposaient sur des règles manuscrites et des modèles ou des méthodes statistiques simples. Avec l'essor du deep learning, ces modèles ont été rapidement remplacé par des réseaux de neurones formables de bout en bout vers 2015. Plus précisément, le modelé de recurrent encoder-decoder model (Cho et al., 2014) domine la tâche de la modélisation conversationnelle. Cette architecture a été adaptée du domaine de la traduction automatique neuronale, où elle fonctionne extrêmement bien. Depuis lors, une multitude de variantes (Serban et al., 2016) et de fonctionnalités ont été présentés qui augmentent la qualité de la conversation dont les chatbots sont capables. Il existe deux types : les modèles basés sur la récupération (retrieval-based models) et les modèles basés sur la génération (generative-based models). La différence entre eux est la liberté dont ils disposent au moment de générer une réponse donnée une question. Les modèles de chatbot habituellement utilisés dans les services publics sont basés sur des règles ou basés sur la récupération étant donné la nécessité de garantir la qualité et de donner des réponses précises aux utilisateurs. Mais ces modèles peuvent gérer seules les conversations correspondent à leurs réponses écrites précédentes et, par conséquent, les conversations peuvent cela peut parfois sembler artificiel si cela sort du sujet, donc nous avons concentré sur un domaine fermé avec chatbot à réponses génératives (generative-based models). Malgré qu'il soit plus difficile à former et donnant des résultats plus inexacts, c'est l'avenir des chatbots. Il nous a fourni plus de possibilités d'apprentissage et de recueillir des informations plus précieuses. Mots clés À la fin du résumé, les mots clés sont généralement présentés. Il y a Chatbot, l'intelligence artificielle, naturel language processing, la science des données, Deep Learning et Tensorflow.
  • 10.
    10 Abstract This document isthe synthesis of my work, which I carried out within the company Axilog, within the framework of the project of graduation for obtaining the Master "Web Intelligence and Data Science" in partnership with University Paris 13, Master "Data Sciences and Artificial Intelligence". I had the chance during this internship to work on a topical project, which is the chatbot of dialectal Arabic, whose main objective is the main objective is to present advice to people about COVID coronavirus- 19, statistics of deaths and new cases injured daily in all countries of the world and also it contains information on the effects of coronavirus on the economy. In the context of coronavirus, there are many people (people) who want to know information in dialectal Arabic but they found nothing, that's why we thought of making an effective chatbot to answer the questions of these people who can write or not write with reliable information. A chatbot is software capable of communicating with humans using natural language. Modeling conversation is an important task in natural language processing and artificial intelligence (AI). Indeed, since the birth of AI, creating a good chatbot remains one of the most difficult challenges in the field. While chatbots can be used for a variety of tasks, in general, they must understand what users are saying and provide answers that are relevant to the problem at hand. In the past, the methods of building chatbot architectures were based on handwritten rules and simple statistical models or methods. With the rise of deep learning, these models were quickly replaced by end-to-end formable neural networks around 2015. More specifically, the recurrent encoder-decoder model (Cho et al., 2014) dominates the task of conversational modeling. This architecture has been adapted from the field of neural machine translation, where it works extremely well. Since then, a multitude of variants (Serban et al., 2016) and functionalities have been presented which increase the quality of the conversation that chatbots are capable of. There are two types: retrieval-based models and generative-based models. The difference between them is the freedom they have when generating a given answer to a question. The chatbot models usually used in public services are rule based or recovery based given the need to guarantee quality and give precise answers to users. But these models can handle only the conversations that correspond to their previous written responses and, therefore, the conversations can sometimes seem artificial if it comes out of the subject, so we focused on a closed domain with generative-based chatbot models). Despite being more difficult to train and giving more inaccurate results, this is the future of chatbots. It provided us with more learning opportunities and to gather more valuable information. Keywords At the end of the abstract keywords are usually presented. There are Chatbot, artificial intelligence, natural language processing, Data science, Deep Learning and Tensorflow.
  • 11.
    11 Introduction générale La générationde dialogues ou le développement d'agents conversationnels intelligents utilisant l'intelligence artificielle ou la technique d'apprentissage automatique est un problème intéressant dans le domaine du naturel language processing. Dans de nombreux projets de recherche et développement, ils utilisent l'intelligence artificielle, les algorithmes d'apprentissage automatique et les techniques de naturel language processing pour développer un agent de conversation / dialogue. Étant donné que les chatbots imitent une personne réelle. Des techniques sont utilisées pour les construire. L'une de ces techniques au sein de l'IA est le Deep Learning qui imite le cerveau humain. Il trouve des modèles à partir des données d'entraînement et utilise les mêmes modèles pour traiter de nouvelles données. Le Deep Learning promet de résoudre des problèmes d'IA de longue date comme Vision par ordinateur et naturel language processing (NLP). Leur recherche et développement est toujours en cours et en expérimentation. Les agents de dialogue / conversation sont principalement utilisés par les entreprises, les organisations gouvernementales et les organisations à but non lucratif. Ils sont fréquemment déployés par des organisations financières comme les banques, les sociétés de cartes de crédit, les entreprises comme les magasins de détail en ligne et les start-ups. Ces agents virtuels sont adoptés par des entreprises allant des très petites start-ups aux grandes entreprises. Il existe de nombreux cadres de développement de chatbot disponibles sur le marché, à la fois basés sur le code et basés sur l'interface. Mais ils manquent de flexibilité et d'utilité pour développer de vrais dialogues. Parmi les assistants personnels populaires intelligents, on trouve Alexa d'Amazon, Cortana de Microsoft et Google Assistant de Google. Le fonctionnement de ces agents est limité, ils sont basés sur la recherche et ils ne visent pas non plus à tenir des conversations qui imitent une véritable interaction humaine Ils ne peuvent pas faire une conversation cohérente et engageante entre deux êtres humains sur des sujets populaires tels que comme nouvelles récentes, politique et sport. Parmi les chatbots actuels, beaucoup sont développés en utilisant des techniques basées sur des règles, des algorithmes d'apprentissage simples ou des techniques basées sur la récupération qui ne génèrent pas de bons résultats. Nous évaluons de nouvelles implémentations et rend compte de leur efficacité. Nous avons analysé des articles qui sont fondamentaux pour ce problème ainsi que les développements récents dans ce domaine. Figure 1 est la carte conceptuelle des sujets de cette revue. Figure 1 : Carte conceptuelle des sujets
  • 12.
    12 Dans ce projet,nous avons développé un agent conversationnel intelligent utilisant des techniques avancées proposées dans des articles de recherche récemment publiés. Pour développer un chatbot intelligent, nous avons utilisé des techniques de naturel language processing (NLP) et un modèle basé sur la modélisation de séquence à séquence (Seq2Seq) avec une architecture codeur-décodeur. Ce codeur-décodeur utilise un réseau neuronal récurrent avec des cellules bidirectionnelles LSTM (Long-Short-Term-Memory) et Attention Mechanism.
  • 13.
    13 Liste des abréviations ANN: Artificial Neural Networks DNN : Deep Neural Network CNN : Convolutional Neural Network RNN : Recurrent Neural Networks API : Application programming interface TF : Tensorflow LSTM : Long Short Term Memory NLP : Natural Language Processing
  • 14.
    14 Chapitre I :Organisme d’accueil et Contexte général Introduction Le stage de fin d’études, comme son nom l’indique, s’effectue à la fin du cursus de formation, sert à bien faire le lien entre les connaissances théoriques acquises et l’application dans un contexte de projet de fin d’études, ce dernier est proposé soit par l’organisme soit par l’intéressé afin d’atteindre ses objectifs et ses besoins. Pour cela, il est primordial d’avoir une vision globale sur l’organisme dans le but de faire un pas vers la réalisation du projet, Dans ce premier chapitre nous allons faire une brève présentation de la société Marocaine Axilog. C’est-à-dire nous allons présenter l’organisme d’accueil et le sujet à traiter de mon projet. Puis nous allons citer quelques exemples réalisés de chatbot. Ensuite nous allons présenter le projet en son intégralité : les objectifs à atteindre, le cahier de charge et le planning. 1. Organisme d’accueil 1.1 Présentation de Axilog I. ggg Figure I-1 : logo de l'entreprise Axilog Axilog est une Startup innovante qui offre des services dans divers domaine, spécialement les telecoms et la fintech. Nous accompagnons les grandes entreprises pour mettre en place des solutions scalable au marché marocain. Les ingénieurs de cette entreprise ont réalisé plusieurs des projets dans différents branche par Example : Mobile Money : Produit Wallet innovant qui va faciliter la gestion du cash-flow et qui va redresser la consommation utilisateur… Blockchain : Développement d'une solution blockchain avec l’architecture microservice. Business intelligence : Développement des solutions ETL/BI dans le secteur telecom. Biometrie : Développement des solutions autour de la biométrie avec une architecture microservice. 2. Cadre général du projet 2.1 Etude d’existant Avant de se lancer dans la procédure de réalisation de cahier de charges, il est indispensable de faire des recherches sur l’existence des applications similaires à ce que nous voulons réaliser.
  • 15.
    15 2.1.1 DakiBot DakiBot estune start-up de logiciels basée à Paris, en France et à Casablanca au Maroc, elle apporte des avancés tous les aspects de flux de support client de l’expérience client, elle crée des agents conversationnels qui comprennent les langues et les dialectes locaux. Permettant à l’entreprise de croitre plus rapidement et de rendre le travail beaucoup plus facile. Figure I-2: logo de l'entreprise Daki Coronabot est un agent conversationnel virtuel et capable de répondre automatiquement en darija (en français par Example : ch7al kayen men 7ala f lmaghrib) aux questions posées par les internautes au sujet du coronavirus, à partir de sources du ministère de la Santé et de l’Organisation mondiale de la Santé (OMS). 2.1.2 arabot. Arabot est une entreprise de haute technologie spécialisée dans la fourniture de solutions de bout en bout qui se concentrent sur la création d'une expérience conversationnelle authentique entre les robots et les humains. Grâce à ses chatbots d'IA conversationnels de pointe et à ses technologies de compréhension de texte, arabot aide les entreprises à communiquer et à dialoguer avec les clients de manière efficace, efficiente et intelligente sur un large éventail de sites Web, d'applications et de plateformes de médias sociaux et elle fondée en 2016. Figure I-3: logo de l'entreprise arabot Djingo est le tout premier outil d'aide aux télécommunications numériques dans la région, c'est un chatbot intelligent équipé de l'intelligence artificielle, qui aidera à fournir aux clients d'Orange Jordan des informations en temps réel sur ses offres, services et produits, ainsi qu'à les assister du tout fois. 2.1.3 Dial Technologies : Dial Technologies est une entreprise axée sur l’innovation digitale, basée à Casablanca et aux Emirats Arabes Unis, permettant aux entreprises, ayant la volonté de transformer leurs méthodes en utilisant les dernières innovations
  • 16.
    16 technologiques pour améliorerleurs processus internes, accélérer leur croissance et simuler leur engagement envers leurs clients. Figure I-4: logo de l'entreprise Dial Technologies Sehatuk-bot est un chatbot conçu pour répondre aux différentes questions angoissantes relatives à cette pandémie du 21éme siècle. Cet outil est disponible en version arabe et française (et très prochainement en darija), l’accès est gratuit et disponible 24h/24 et 7j/7. 2.2 Planning du Projet 2.2.1 Organigramme de projet Avant la réalisation du planning d'un projet, il est nécessaire de définir complètement le contenu du projet. Pour faciliter cette définition nous allons décomposer le projet en sous-ensembles qui seront plus faciles à gérer et les présenter sous forme d’organigramme. Voici comment et sur quelle base le découpage du projet en taches a été effectuée : • Etude de faisabilité : Dans cette partie nous avons essayé de lire les articles les plus concentrés qui traitent le même sujet de mon projet afin que nous puissions bien comprendre et limiter les besoins, également dans cette partie nous avons précisé les approches à utiliser. • Spécification des besoins : Cette étape est nécessaire pour l’amélioration des services que fait un chatbot et pour la détermination des grands objectifs, et proposé des solutions. • Etude détaillée : Dans cette phase nous avons étudié la base de données d’une manière profonde afin que nous puissions rendre le développement plus fidèle aux besoins. • Implémentation : Le développement commence dans cette étape, nous avons commencé par la préparation des données puis la réalisation du chatbot avec une interface web et une petite application mobile. • Finalisation du projet : Tests nécessaires assurent le bon fonctionnement du chatbot et enfin la rédaction du rapport.
  • 17.
    17 Figure I-5 :Organigramme de projet 2.2.2 Diagramme de Gantt provisionnel Figure I-6 : Tableau des taches provisionnelles
  • 18.
    18 Figure I-7 :Diagramme de Gantt Provisionnel Les figures I-6 et I-7 montrent le planning proposé au début du projet, il été prévu de terminer le début du mois juin. Cependant il y a des exceptions qui ont obstruent la démarche par Example : les examens, les projets académiques et le problème de confinement. 2.2.3 Diagramme de Gantt Réel Figure I-8 : Tableaux des taches réelles
  • 19.
    19 Figure I-9 :Diagramme de Gantt réel 2.3 Cahier des charges Réalisation d'un modèle capable avec naturel language processing et intelligence artificielle qui est répondu aux questions des utilisateurs en arabe dialectal concernant COVID-19 à propos de la sante, l’économie ou les statistiques de cas de décès ou blesser en chaque jour. Conclusion Dans ce chapitre, nous avons présenté l’organisme d’accueil, ainsi nous avons pu insérer notre projet dans son contexte en présentant la solution adoptée pour résoudre les problèmes et répond aux objectifs. Dans le chapitre suivant, nous allons traiter l’aspect fonctionnel du projet.
  • 20.
    20 Chapitre II :Etat de l’art Introduction Il y a eu de nombreux développements et expérimentations récents dans le système d'agents conversationnels. Outre les techniques de développement de chatbot traditionnelles qui utilisent des techniques basées sur des règles ou des algorithmes d'apprentissage automatique simples, de nombreux chatbots avancés utilisent des techniques avancées de naturel language processing (NLP) et des techniques d'apprentissage approfondi comme Deep Neural Network (DNN) et Deep Reinforcement Learning (DRL). Ce chapitre explique le contexte théorique de ce projet. Tout d'abord, cette section définit le domaine qui étudie et développe des modèles de chatbot, natural language processing. Alors, cette section fournit une vision globale de ce que sont les algorithmes d'apprentissage et comment ils fonctionnent. Après cela, cette section va plus loin dans l'explication de celles spécifiques utilisées tout au long du projet. Enfin, cette section termine la présentation du type d'architectures choisies. 1. Natural Language Processing – NLP 1.1 Définition : Naturel language processing (NLP) est un domaine de recherche de l'intelligence artificielle (IA) qui se concentrer sur l'étude et le développement de systèmes qui permettent la communication entre une personne et une machine à travers le langage naturel. Les chatbots appartiennent au domaine de la NLP étant donné l'importance de leur capacité à comprendre la langue et savoir comment en extraire les informations pertinentes. Les deux modèles, basés sur la récupération et générative doit être en mesure d'identifier certaines informations de la phrase d'entrée afin pour choisir ou créer une réponse. 2. Data Mining 2.1 Définition : Il ne suffit pas de stocker une multitude de données au sein d’une base spécialisée, Data Warehouse, ou Big exploiter. C’est là le rôle du Data Mining qui, bien utilisé, saura tirer les enseignements contenus dans cette masse de données bien trop importante pour se contenter des seuls outils statistiques. Voyons, le principe, les méthodes utilisées, les outils et un cas concret mettant en évidence l’importance de la qualité des données. Le Data Mining est en fait un terme générique englobant toute une famille d'outils facilitant l'exploration et l'analyse des données contenues au sein d'une base décisionnelle de type Data Warehouse ou Data Mart. Les techniques mises en action lors de l'utilisation de cet instrument d'analyse et de prospection sont particulièrement efficaces pour extraire des informations significatives depuis de grandes quantités de données. Le principe : une démarche simplifiée en cinq étapes majeures (voire Figure II-1).
  • 21.
    21 II. hdhhd Figure II-1: Processus de Data Mining Etape1 : Quel est le but de l’analyse, que recherche-t-on ? Quels sont les objectifs ? Comment traduire le problème en une question pouvant servir de sujet d’enquête pour cet outil d’analyse bien spécifique ? A ce sujet, se souvenir que l’on travaille à partir des données existantes, la question doit être ciblée selon les données disponibles. Etape2 : Une phase absolument essentielle. On n'analyse que des données utilisables, c'est à dire "propres" et consolidées. On n'hésitera pas à extraire de l'analyse les données de qualité douteuse. Bien souvent, les données méritent d'être retravaillées. S'assurer au final que la quantité de données soit suffisante pour éviter de fausser les résultats. Cette phase de collecte nécessite le plus grand soin. Etape3 : Ne pas hésiter à valider les choix d'analyse sur plusieurs jeux d'essais en variant les échantillons. Une première évaluation peut nous conduire à reprendre les points 1 ou 2. Etape4 : Il est temps d'exploiter les résultats. Pour affiner l'analyse on n'hésitera pas à reprendre les points 1, 2 ou 3 si les résultats s'avéraient insatisfaisants. Etape5 : Les résultats sont formalisés pour être diffusé. Ils ne seront utiles qu'une fois devenus une connaissance partagée. C'est bien là l'aboutissement de la démarche. C'est aussi là que réside la difficulté d'interprétation et de généralisation. 2.2 Classification Au cours du processus d’exploration de données, les grands ensembles de données sont d’abord triés, puis les modèles sont identifiés et les relations sont établies pour effectuer l’analyse des données et résoudre les problèmes. La classification est une tâche d’analyse de données, c’est-à-dire le processus de recherche d’un modèle qui décrit et distingue les classes de données et les concepts. La classification est le problème de l'identification à laquelle d'un ensemble de catégories (sous-populations) une nouvelle observation appartient, sur la base d'un ensemble de données d'apprentissage contenant des observations et dont l'appartenance à une catégorie est connue.
  • 22.
    22 C'est un processusen deux étapes tel que : Étape d’apprentissage (phase d’entraînement) : Construction du modèle de classification différents algorithmes sont utilisés pour créer un classificateur en faisant en sorte que le modèle apprenne à l’aide du jeu d’entraînement disponible. Le modèle doit être formé pour la prédiction de résultats précis. Étape de classification : modèle utilisé pour prédire les étiquettes de classe et tester le modèle construit sur des données de test afin d'estimer la précision des règles de classification. Notation mathématique : la classification est basée sur la création d'une fonction prenant le vecteur de caractéristique en entrée « X » et en prédisant son résultat « Y » (réponse qualitative prenant les valeurs dans l'ensemble C). Les classificateurs peuvent être classés en deux types principaux : Discriminative : C'est un classifier très basique qui détermine une seule classe pour chaque ligne de données. Il essaie de modéliser simplement en fonction des données observées, dépend fortement de la qualité des données plutôt que des distributions. Génératif : il modélise la distribution de classes individuelles et tente d'apprendre le modèle qui génère les données en arrière-plan en estimant les hypothèses et les distributions du modèle. Utilisé pour prédire les données invisibles. 3. Machine Learning 3.1 Définition : L'apprentissage automatique est un domaine d'étude de l'IA qui étudie et développe des techniques capables d'apprendre les tâches comme la classification ou la régression à partir d'un ensemble de données. Il existe différents algorithmes sans être l'un d'entre eux, en général, est meilleur parmi les autres (aucun théorème du déjeuner gratuit). Un algorithme, en particulier, dépend exclusivement de la nature et du type du problème abordé. Le but d'un algorithme d'apprentissage est d'estimer le comportement d'un ensemble d'apprentissage par l'identification de leur modèle inhérent. Une fois accompli, il doit être capable d'effectuer des tâches de classification ou de régression pour des échantillons invisibles. Tous les algorithmes d’apprentissage nécessitent une phase d’apprentissage à laquelle, une fonction objective est définie comme mesure à optimiser pour obtenir une référence de la façon dont notre modèle s’adapte au problème (p. ex., minimisation de la fonction d’erreur). Ensuite, l’algorithme est itératif à travers l’ensemble d’entrainement à la recherche de l’optimisation de la métrique. Il est important d’avoir trois ensembles disjoints d’échantillons dans les algorithmes d’apprentissage automatique : entrainement, validation et ensemble de test. L’ensemble d’entrainement est utilisé comme un exemple pour l’optimisation de la fonction objective. Un ensemble de validation est nécessaire lorsqu’il est nécessaire de calculer les paramètres optimaux d’un algorithme. Enfin, le jeu de tests est utilisé pour tester dans quelle mesure l’algorithme a appris et généralisé le problème. Il existe deux types d’algorithmes d’apprentissage : supervisés et non supervisés. La différence réside dans le fait que, pendant le processus d’entrainement, les échantillons de formation sont étiquetés avec les informations de la classe à laquelle ils appartiennent ou inversement, il n’y a pas d’informations supplémentaires et c’est le système qui doit déterminer à quelle classe ils appartiennent.
  • 23.
    23 Ces algorithmes sontdevenus populaires parce qu’ils réduisent l’intervention humaine au moment de définir des règles ou des modèles pour les systèmes, leur permettant d’extraire cette information. Ils ont changé beaucoup de domaines comme le traitement d’image, le traitement d’audio et de la parole, la traduction et les systèmes de conversation entre autres. La plupart d’entre eux ont été créés il y a longtemps, mais leur véritable potentiel a été possible grâce aux récentes améliorations de la capacité de calcul et à la disponibilité de grandes bases de données. 4. Deep learning 4.1 Définition : est un type d'intelligence artificielle dérivé du machine learning (apprentissage automatique) où la machine est capable d'apprendre par elle-même, contrairement à la programmation où elle se contente d'exécuter à la lettre des règles prédéterminées. 4.2 Les applications du Deep Learning La reconnaissance faciale : Les yeux, le nez, la bouche, tout autant de caractéristiques qu’un algorithme de DL va apprendre à détecter sur une photo. Il va s’agir en premier lieu de donner un certain nombre d’images à l’algorithme, puis à force d’entraînement, l’algorithme va être en mesure de détecter un visage sur une image. Le traitement automatique de langage naturel : Le traitement automatique de langage naturel est une autre application du DL. Son but étant d’extraire le sens des mots, voire des phrases pour faire de l’analyse de sentiments. L’algorithme va par exemple comprendre ce qui est dit dans un avis Google, ou va communiquer avec des personnes via des chatbots. La lecture et l’analyse automatique de textes est aussi un des champs d’application du DL avec le Topic Modeling : tel texte aborde tel sujet. Voitures autonomes : Les entreprises qui construisent de tels types de services d’aide à la conduite, ainsi que des voitures autonomes telles que Google, doivent apprendre à un ordinateur à maîtriser certaines parties essentielles de la conduite à l’aide de systèmes de capteurs numériques au lieu de l’esprit humain. Pour ce faire, les entreprises commencent généralement par entraîner des algorithmes utilisant une grande quantité de données. Vous pouvez imaginer comment un enfant apprend grâce à des expériences constantes et à la réplication. Ces nouveaux services pourraient fournir des modèles commerciaux inattendus aux entreprises. Recherche vocale et assistants à commande vocale : L’un des domaines d’utilisation les plus populaires de DL est la recherche vocale et les assistants intelligents à commande vocale. Avec les grands géants de la technologie ont déjà fait d’importants investissements dans ce domaine, des assistants à commande vocale peuvent être trouvés sur presque tous les smartphones. Le Siri d’Apple est sur le marché depuis octobre 2011. Google aujourd’hui, l’assistant à commande vocale pour Androïde, a été lancé moins d’une année après Siri. Le plus récent des assistants intelligents à commande vocale est Microsoft Cortana. Ajout automatique de sons à des films muets : Dans cette tâche, le système doit synthétiser des sons pour correspondre à une vidéo silencieuse. Le système est formé à l’aide de 1 000 exemples de vidéos avec le son d’une baguette frappant différentes surfaces et créant différents sons. Un modèle DL associe les images vidéo à une base de données de sons pré-enregistrés afin de sélectionner le son à reproduire qui correspond le mieux à ce qui se passe dans la scène. Le système a ensuite été évalué à l’aide d’un test de contrôle, comme une configuration dans laquelle les humains devaient
  • 24.
    24 déterminer quelle vidéocomportait le son réel ou le son factice (synthétisé). Ceci utilise à la fois les réseaux de neurones convolutionnels et les réseaux de neurones récurrents à mémoire à court terme. Traduction automatique : Il s’agit d’une tâche dans laquelle des mots, expressions ou phrases donnés dans une langue sont automatiquement traduits dans une autre langue. La traduction automatique existe depuis longtemps, mais DL permet d’obtenir les meilleurs résultats dans deux domaines spécifiques : • Traduction automatique de texte • Traduction automatique d’images La traduction de texte peut être effectuée sans aucun traitement préalable de la séquence, ce qui permet à l’algorithme d’apprendre les dépendances entre les mots et leur correspondance avec une nouvelle langue. Génération automatique de texte : C’est une tâche intéressante, où un corpus de texte est appris et à partir de ce modèle, un nouveau texte est généré, mot par mot ou caractère par caractère. Le modèle est capable d’apprendre comment épeler, ponctuer, former des phrases et même capturer le style du texte dans le corpus. Les grands réseaux de neurones récurrents sont utilisés pour apprendre la relation entre les éléments dans les séquences de chaînes d’entrée, puis pour générer du texte. Reconnaissance d’image : Un autre domaine populaire en matière de DL est la reconnaissance d’image. Son objectif est de reconnaître et d’identifier les personnes et les objets dans les images, ainsi que de comprendre le contenu et le contexte. La reconnaissance d’image est déjà utilisée dans plusieurs secteurs tels que les jeux, les médias sociaux, la vente au détail, le tourisme, etc. Cette tâche nécessite la classification des objets d’une photo parmi un ensemble d’objets connus auparavant. Une variante plus complexe de cette tâche, appelée détection d’objet, consiste à identifier spécifiquement un ou plusieurs objets dans la scène de la photo et à dessiner un cadre autour d’eux. La description automatique d’image : Le sous-titrage automatique des images est la tâche pour laquelle le système doit générer une légende décrivant le contenu de l’image. Une fois que vous pouvez détecter des objets sur des photographies et générer des étiquettes pour ces objets, vous pouvez voir que l’étape suivante consiste à transformer ces étiquettes en description de phrase cohérente. Généralement, les systèmes impliquent l’utilisation de très grands réseaux de neurones convolutifs pour la détection d’objets sur les photographies, puis d’un réseau de neurones récurrent comme une mémoire à court terme à long terme pour transformer les étiquettes en une phrase cohérente. Colorisation automatique : La colorisation de l’image pose le problème de l’ajout de couleurs aux photographies noir et blanc. Le DL peut être utilisé pour utiliser les objets et leur contexte dans la photographie pour colorer l’image, un peu comme un opérateur humain pourrait aborder le problème. Cette capacité tire parti des réseaux de neurones de convolution de grande qualité et de très grande taille formés pour ImageNet et cooptés pour le problème de la colorisation de l’image. Généralement, l’approche implique l’utilisation de très grands réseaux de neurones convolutifs et de couches supervisées qui recréent l’image avec l’ajout de couleurs. La détection du cancer du cerveau : Une équipe de chercheurs français a noté qu’il était difficile de détecter les cellules cancéreuses du cerveau invasives au cours d’une intervention chirurgicale, en partie à cause des effets de l’éclairage dans les salles d’opération. Ils ont découvert que l’utilisation de réseaux de neurones conjointement avec la spectroscopie Raman pendant les opérations leur permettait de détecter les cellules cancéreuses plus facilement et de réduire le cancer résiduel après l’opération.
  • 25.
    25 Analyse des sentimentsdu texte : De nombreuses applications ont des commentaires ou des systèmes de révision basés sur des commentaires intégrés à leurs applications. La recherche sur le traitement du langage naturel et les réseaux de neurones récurrents ont parcouru un long chemin et il est maintenant tout à fait possible de déployer ces modèles sur le texte de votre application pour extraire des informations de niveau supérieur. Cela peut être très utile pour évaluer la polarité sentimentale dans les sections de commentaires ou pour extraire des sujets significatifs à l’aide de modèles de reconnaissance d’entités nommées. Recherche en marketing : En plus de rechercher de nouvelles fonctionnalités susceptibles d’améliorer votre application, DL peut également être utile en arrière-plan. La segmentation du marché, l’analyse des campagnes marketing et bien d’autres peuvent être améliorés à l’aide de modèles de régression et de classification DL. Cela vous aidera vraiment beaucoup si vous avez une grande quantité de données. Sinon, vous ferez probablement mieux d’utiliser des algorithmes traditionnels d’apprentissage automatique pour ces tâches plutôt que DL. 4.3 Le réseau neuronal 4.3.1 Définition : Ensemble de neurones formels interconnectés permettant la résolution de problèmes complexes tels que la reconnaissance des formes ou naturel language processing, grâce à l'ajustement des coefficients de pondération dans une phase d'apprentissage. 4.3.2 Neurone biologique : L'algorithme d'apprentissage sur lequel se concentre ce projet est inspiré des neurones biologiques du cerveau. Les neurones sont un type de cellule du système nerveux composé d'un corps cellulaire appelé soma, certaines branches de signal d'entrée appelées dendrites et une seule branche de signal de sortie appelée axone. Figure II-2 : Structure d'un neurone biologique Les axones se divisent à leurs extrémités en différentes sous-branches appelées dendrites. Connexion entre les dendrites d'un neurone et les dendrites (ou directement le soma) d'un autre est réalisée par le terminal synaptique, qui est une petite structure qui contient des molécules de neurotransmetteurs responsable de l'échange du signal nerveux (également connu sous le nom de synapses). Les neurones émettent des impulsions électriques par l'axone si la quantité d'excitation électrique reçue par les dendrites dépasse un seuil.
  • 26.
    26 4.3.3 Neurone artificiel: Ce qui forme les réseaux de neurones, ce sont les neurones artificiels inspirés du vrai neurone qui existe dans notre cerveau. Figure II-3 : Structure d'un neurone artificiel Les Xi sont des valeurs numériques qui représentent soit les données d’entrée, soit les valeurs sorties d’autres neurones. Les poids Wi sont des valeurs numériques qui représentent soit la valeur de puissance des entrées, soit la valeur de puissance des connexions entre les neurones. Il existe des opérations qui se passent au niveau du neurone artificiel. Le neurone artificiel fera un produit entre le poids (w) et la valeur d’entrée (x), puis ajouter un biais (b), le résultat est transmis à une fonction d’activation (f) qui ajoutera une certaine non-linéarité. 4.4 Les fonctions d’activation : Après que le neurone a effectué le produit entre ses entrées et ses poids, il applique également une non-linéarité sur ce résultat. Cette fonction non linéaire s’appelle la fonction d’activation. La fonction d’activation est une composante essentielle du réseau neuronal. Ce que cette fonction a décidé est si le neurone est activé ou non. Il calcule la somme pondérée des entrées et ajoute le biais. C’est une transformation non linéaire de la valeur d’entrée. Après la transformation, cette sortie est envoyée à la couche suivante. La non-linéarité est si importante dans les réseaux de neurones, sans la fonction d’activation, un réseau de neurones est devenu simplement un modèle linéaire. Il existe de nombreux types de ces fonctions, parmi lesquelles nous trouvons : La fonction Sigmoïde : Cette fonction est l’une des plus couramment utilisées. Il est borné entre 0 et 1, et il peut être interprété stochastiquement comme la probabilité que le neurone s’active, et il est généralement appelé la fonction logistique ou le sigmoïde logistique.
  • 27.
    27 Figure II-4 :Représentation graphique de la fonction Sigmoïde. La fonction ReLu : La fonction RELU est probablement la plus proche de sa correspondante biologique. Cette fonction est récemment devenue le choix de nombreuses tâches (notamment en computer vision). Comme dans la formule ci- dessus, cette fonction renvoie 0 si l’entrée z est inférieure à 0 et retourne z lui-même s’il est plus grand que 0. La fonction Softmax : Régression Softmax (synonymes : Logistique multinomiale, Classificateur d’entropie maximale, ou simplement Régression logistique multi-classe) est une généralisation de la régression logistique que nous pouvons utiliser pour la classification multi-classes. Contrairement à d’autres types de fonctions, la sortie d’un neurone d’une couche utilisant la fonction softamx dépend des sorties de tous les autres neurones de sa couche. Cela s’explique par le fait qu’il nécessite que la somme de toutes les sorties soit égale à 1. Dans représentation graphique de la fonction ReLu, nous avons un exemple de reconnaissance de Figure II-5 : Représentation graphique de la fonction Relu. Chiffres manuscrits. Dans cette tâche, chaque étiquette est comprise entre 0 et 9. Nous devons être confiants dans notre prédiction et cela peut être fait en utilisant une distribution de probabilité. Pour la tâche mentionnée, le vecteur de sortie souhaité est de la forme ci-dessous : [𝒑 𝟎, 𝒑 𝟏, 𝒑 𝟐 … , 𝒑 𝟗] ∑(𝒑𝒊) = 𝟏 𝟗 𝒊=𝟏
  • 28.
    28 Les fonctions d'activationsont des fonctions non linéaires continues et différenciables. Ils sont obligatoires être lisse afin de pouvoir apprendre des techniques de descente de gradient. La non-linéarité est une condition importante qui assure une expression discriminante non linéaire à la sortie du réseau neuronal, au contraire un réseau multicouche et monocouche fonctionne de la même manière. Les valeurs de sortie sont binaires si la somme pondérée dépasse un seuil imposé par l'activation (à l'origine la fonction de pas Heaviside), puis la sortie est activée d'autre part la valeur de sortie est désactivée. 4.5 Différents types de réseaux de neurones dans le Deep Learning 4.5.1 Artificial Neural Networks (ANN) Il se compose d'un groupe d'unités de base appelées neurones artificiels (AN) ou perceptron (voir figure II-6) qui sont connectés entre eux composant un réseau complexe. Ils peuvent calculer une sortie donnée des données d'entrée en la décomposant dans différentes représentations afin d'identifier différentes caractéristiques. Le premier modèle d'AN a été proposé par le neurophysiologiste Warren McCulloch et le mathématicien Walter Pitts en 1943. Le modèle proposé est une simple approximation mathématique du fonctionnement d'un neurone biologique, capable de calculer des opérations de base en fonction d'identité, ET, OU et XOR. De nombreux autres modèles ont été proposés depuis lors, mais l'architecture AN la plus simple est le perceptron qui a été proposé par Frank Rosenblatt en 1957. Alors que le modèle AN proposé par McCulloch et Pitts a utilisé des valeurs binaires, le perceptron peut fonctionner avec n'importe quel nombre. L'algorithme calcule une fonction d'activation sur la somme pondérée des valeurs d'entrée. De plus, afin de donner un degré de liberté supplémentaire, un biais est ajouté comme indiqué dans l'équation suivante : out(t) = 𝑓(∑ 𝑥𝑖 ∗ 𝑤𝑖 + 𝑤0) 𝑛 𝑖=1 Figure II-6 : Structure d'un perceptron Où Wi et W0 sont respectivement les poids et le biais. Les valeurs optimales de ces paramètres sont calculées à l'aide de techniques de descente de gradient à partir d'un ensemble de données d'apprentissage étiquetés. Gradient Descent est un algorithme d'optimisation itératif utilisé pour trouver le minimum global d’une fonction.
  • 29.
    29 Le perceptron fonctionnecomme un discriminant linéaire, ce qui signifie que chaque unité peut linéairement séparer les échantillons en deux classes. Il est possible de calculer les opérations de base comme ET ou OU, mais fonctions comme XOR, sont des problèmes séparables non linéaires et donc pas implémentables (Figure II-7). Figure II-7 : Le fonctionnement XOR (séparable non linéaire) La solution est un perceptron multicouche (MLP) qui est un réseau composé de plusieurs couches des perceptrons (figure II-8). La structure de base d'un MLP est composée d'une couche d'entrée où toutes les données sont envoyées au réseau, une ou plusieurs couches cachées pour de multiples représentations de données et identification caractéristique et enfin une couche de sortie. La couche de sortie peut utiliser une autre fonction d'activation en fonction de la nature de la tâche. Pour la classification, la couche de sortie utilise une fonction softmax qui représente, pour chaque classe cible, une probabilité de réussite. Figure II-8 : Structure d'un perceptron multicouche L'ANN peut être utilisé pour résoudre des problèmes liés à : • Tabular data • Image data • Text data
  • 30.
    30 4.5.1.1 Avantages duréseau de neurones artificiels (ANN) Le réseau de neurones artificiels est capable d'apprendre n'importe quelle fonction non linéaire. Par conséquent, ces réseaux sont connus sous le nom d'approximateurs de fonctions universelles. Les RNA ont la capacité d'apprendre des poids qui mappent n'importe quelle entrée à la sortie. L'une des principales raisons de l'approximation universelle est la fonction d'activation. Les fonctions d'activation introduisent des propriétés non linéaires sur le réseau. Cela permet au réseau d'apprendre toute relation complexe entre l'entrée et la sortie. 4.5.2 Convolution Neural Network (CNN) Les réseaux de neurones convolutifs (CNN) font actuellement fureur dans la communauté d'apprentissage en profondeur. Ces modèles CNN sont utilisés dans différentes applications et différents domaines, et ils sont particulièrement répandus dans les projets de traitement d'images et de vidéos. Les éléments constitutifs des CNN sont des filtres appelés noyaux. Les noyaux sont utilisés pour extraire les caractéristiques pertinentes de l'entrée à l'aide de l'opération de convolution (voire Figure II-9). Essayons de saisir l’importance des filtres utilisant des images comme données d’entrée. La convolution d'une image avec des filtres donne une carte des fonctionnalités : Figure II-9 : résultat de Sortie de convolution Bien que les réseaux de neurones convolutifs aient été introduits pour résoudre les problèmes liés aux données d'image, ils fonctionnent également de manière impressionnante sur les entrées séquentielles. 4.5.2.1 Avantages du réseau neuronal à convolution (CNN) • CNN apprend les filtres automatiquement sans le mentionner explicitement. Ces filtres aident à extraire les fonctionnalités appropriées et pertinentes des données d'entrée.
  • 31.
    31 Figure II-10 :CNN - Classification d'images • CNN capture les caractéristiques spatiales d'une image. Les caractéristiques spatiales se réfèrent à la disposition des pixels et à la relation entre eux dans une image. Ils nous aident à identifier l'objet avec précision, l'emplacement d'un objet, ainsi que sa relation avec d'autres objets dans une image. Figure II-11 : image Dans l'image ci-dessus, nous pouvons facilement identifier qu'il s'agit d'un visage humain en regardant des caractéristiques spécifiques telles que les yeux, le nez, la bouche, etc. Nous pouvons également voir comment ces fonctionnalités spécifiques sont organisées dans une image. C’est exactement ce que les CNN sont capables de capturer. • CNN suit également le concept de partage des paramètres. Un seul filtre est appliqué sur différentes parties d'une entrée pour produire une carte d’entités :
  • 32.
    32 Figure II-12 :Image convolutante avec un filtre Notez que la carte d'entités 2*2 est produite en faisant glisser le même filtre 3*3 sur différentes parties d'une image. 4.5.3 Recurrent Neural Networks (RNN) Deux modèles couverts par ce projet utilisent un type spécial de réseau neuronal artificiel appelé réseau neuronal récurrent (RNN). RNN a la capacité de conserver les informations des données précédentes comme mémoire temporelle. Ils peuvent être considérés comme une séquence de concaténations de la même unité (voir Figure II-13) comme une chaîne, où chacun calcule une entrée donnée de sortie et les informations fourni par le dernier réseau. Figure II-13 : Schéma d'un réseau neuronal récurrent En raison de sa mémoire temporelle, ils sont très utiles pour les données séquentielles où chaque élément de la séquence est lié aux autres. Néanmoins, RNN ne peut conserver que les informations récentes d'une séquence, ce qui signifie qu’ils ne peuvent fonctionner correctement que lorsque l'élément à traiter est proche de la séquence du les informations pertinentes. Nous pouvons utiliser des réseaux de neurones récurrents pour résoudre les problèmes liés à : • Time Series data • Text data • Audio data 4.5.3.1 Avantages du réseau neuronal récurrent (RNN) : • RNN capture les informations séquentielles présentes dans les données d'entrée, c'est-à-dire la dépendance entre les mots dans le texte tout en faisant des prédictions :
  • 33.
    33 Figure II-14 :Modèle Many2Many Seq2Seq Comme vous pouvez le voir ici, la sortie (o1, o2, o3, o4) à chaque pas de temps dépend non seulement du mot actuel mais aussi des mots précédents. • Les RNN partagent les paramètres sur différents pas de temps. Ceci est connu sous le nom de partage de paramètres. Cela se traduit par moins de paramètres à former et diminue le coût de calcul. Figure II-15 : RNN déroulé Comme le montre la figure ci-dessus, 3 matrices de poids - U, W, V, sont les matrices de poids qui sont partagées sur tous les pas de temps. Les réseaux de mémoire à court terme (réseaux LSTM) sont un type spécial de RNN qui peut rappeler les dépendances à long terme en raison de sa structure interne (voir figure II-16). Alors qu’un RNN de base est composé d'une seule couche d'opération, les réseaux LSTM en utilisent quatre. En interne, ils peuvent effectuer trois opérations : oublier les informations, mettre à jour les informations et sortir les informations.
  • 34.
    34 Figure II-16 :Schéma d'un réseau LSTM Une variante des LSTM est le Gated Recurrent Unit (GRU), qui ont une structure plus simple, ce qui les rend plus efficaces et plus rapides à former. 4.5.3.2 RNN Encoder/Decoder architecture (Seq2Seq) Implémentation très réussie de l'architecture Encoder / Decoder pour les tâches NLP est le RNN Encoder / Decoder également connu sous le nom de séquence à Séquence (Seq2Seq). L'encodeur et le décodeur sont des réseaux de neurones récurrents, ce qui permet modèle à alimenter avec des phrases d'entrée de longueur variable. Étant donné une phrase d'entrée, l'encodeur calcule de manière itérative pour chaque mot un vecteur d'état caché en utilisant le mot et l'état caché précédent du RNN. Une fois toute la phrase analysée, les informations pertinentes de la phrase d'entrée sont contenues dans le dernier état caché du RNN, connu comme vecteur de contexte ou de pensée. Le décodeur calcule, mot par mot, une sortie dans l’espace de représentation original utilisant les informations contenues dans le vecteur de contexte et les précédents mots décodés. La mise en œuvre de l'architecture peut varier en fonction du type de cellule RNN utilisé (véritable Cellule RNN, cellule LSTM ou cellule GRU), nombre de cellules par couche ou nombre de couches masquées entre autres paramètres. Figure II-17 : Schéma de l'architecture séquence à séquence
  • 35.
    35 À mesure quela taille de la phrase augmente, il est nécessaire de coder une grande quantité d'informations en un vecteur de longueur fixe, donc une partie est perdue lors du processus de codage, ce qui entraîne de mauvaises performances du chatbot. 4.5.3.3 Attention Mechanism Une solution au problème dû à la nature de longueur fixe du vecteur de contexte est de permettre le décodeur pour "voir" les mots les plus pertinents de la phrase d'entrée pendant le processus de décodage (Figure II-18). Cette méthode est appelée le mécanisme d'attention. Figure II-18 : Diagramme de l'architecture séquence à séquence avec un code bidirectionnel et appliquer l'attention dans le processus de décodage Au lieu d'utiliser uniquement le dernier vecteur d'état masqué comme vecteur de contexte, pour chaque mot à décoder, le décodeur calcule un vecteur de contexte avec une somme pondérée de tous les vecteurs d'état cachés de l’encodeur. Contrairement au Seq2Seq présenté précédemment, pour le mécanisme d'attention, un bidirectionnel l'encodeur est utilisé pour coder la phrase d'entrée mot par mot en deux vecteurs d'état de cellule cachés. Le premier, allant du premier au dernier mot de la séquence (en avant) et l'autre, inverser la séquence allant du dernier au premier mot (en arrière). Le vecteur d'état de cellule caché final est une concaténation de l'état caché allant vers l'avant et de l'état caché allant vers l'arrière (vecteur d'état caché bidirectionnel). L'encodage bidirectionnel permet d'encoder plus information d'un mot de la phrase. 4.5.3.4 Architecture de transformateur L'architecture du transformateur est un modèle codeur / décodeur entièrement basé sur le mécanisme d'attention récemment proposé par l'équipe de Google comme une nouvelle machine neuronale de pointe architecture de traduction (NMT). De plus, ils ont prouvé que le modèle peut être généralisé pour d'autres tâches NLP comme l'analyse des circonscriptions en anglais. Les RNN sont intrinsèquement séquentiels, ce qui pose un problème pour paralléliser les modèles RNN en tant que Seq2Seq.Ce problème est résolu dans l'architecture du transformateur car il ne repose que sur le mécanisme d'attention
  • 36.
    36 et le manquede RNN. De plus, il a été prouvé qu’elles nécessitent moins de temps de formation que l'encodeur / décodeurs RNN. L'encodeur comporte trois étapes principales (voir la figure II-19). Le premier est l'endroit où l'entrée les mots sont projetés dans un espace de représentation vectorielle par une matrice d'intégration, puis, étant donné qu'il n'y a pas d'informations sur l'ordre et la position des mots dans la phrase d'entrée un positionnel le codage est ajouté aux vecteurs d'entrée intégrés. La deuxième étape est une attention multi-têtes bloc (d'auto-attention dans ce premier cas) qui projette linéairement les informations d'entrée dans différentes représentations spatiales et effectue une attention sur chacun d'eux. Cette méthode permet au modèle d’identifier différentes caractéristiques sémantiques, morphologiques et lexicales de la séquence d'entrée et assistez-les séparément au processus de décodage. Enfin, un réseau de rétroaction par position est utilisé, qui applique deux transformations linéaires à chaque position séparément. Le décodeur comporte cinq étages, les deux premiers uniquement utilisés lors de la phase de formation : une intégration de sortie et le codage positionnel (similaire à celui utilisé dans le codeur mais pour les phrases cibles dans la formation), une attention multi-têtes masquée (également auto-attention), une attention multi-têtes, un réseau à action directe et enfin une couche softmax pour calculer les probabilités de sortie. Donné qu'au processus de décodage, nous ne pouvons pas connaître les mots futurs, l'attention ne peut être appliqué aux précédents. C'est ce que fait l'attention multi-têtes masquée, qui est une multi-tête bloc d'attention avec un masque qui limite l'attention uniquement aux mots du passé. Figure II-19 : Schéma simplifié de l'architecture Transformer
  • 37.
    37 5. Chatbots 5.1 Définition: Un chatbot est un robot logiciel pouvant dialoguer avec un individu ou consommateur par le biais d'un service de conversations automatisées pouvant être effectuées par le biais d'arborescences de choix ou par une capacité à traiter le langage naturel. Le chatbot utilise à l'origine des bibliothèques de questions et réponses, mais les progrès de l'intelligence artificielle lui permettent de plus en plus "d'analyser" et "comprendre" les messages par le biais des technologies de naturel language processing (NLP) et d'être doté de capacités d'apprentissage liées au machine learning. Figure II-20 : image de conversation d’un utilisateur et chatbot Cet outil est de nos jours, très utilisé sur Internet par les services clients des marques et des commerçants en ligne à travers la messagerie instantanée. Pour répondre au mieux aux besoins ponctuels des internautes, comme par exemple s’informer sur un sujet, réserver, commander, rechercher et autres. Les champs d’applications sont quasi illimités et leur perfectionnement est désormais corrélé aux progrès de l’intelligence artificielle. Un chatbot est donc une application destinée à automatiser des tâches ou à simuler des conversations. Ce programme informatique peut ainsi lire des messages (email, SMS, Chat…) et y répondre en quelque seconde, grâce à un ensemble de réponses préenregistrées.
  • 38.
    38 5.2 Une petitehistoire sur les Chatbots : Figure II-21 : L'Histoire des Chatbots (Image de l’Internet et Réorganisation Personnelle) Les Bots, chatbots et social bots sont des outils et des agents conversationnels qui révolutionnent nos habitudes journalières en expérience inédite. En 1966 : longtemps avant que Hoffer et ses collègues n’aient créé SmarterChild, un informaticien appelé Joseph Weizenbaum développe ELIZA, un programme pour imiter la conversation humaine. ELIZA a travaillé en analysant les mots que les utilisateurs ont entrés dans un ordinateur et ensuite un appariement avec une liste de réponses les plus adaptées possibles. En 1972 : PARRY a été créé par Kenneth Colby, Il simulait une personne avec la schizophrénie paranoïde. Parry était plus sérieux et avancé qu’ELIZA et a été décrit comme « ELIZA with attitude ». En 1988 : JABBERWACKY fut créé par le développeur britannique Rollo CARPENTER, un agent conversationnel (Robot de conversation), « simuler une conversation humaine d’une façon intéressante, divertissante et drôle » C’est une première tentative de création d’une IA en interaction avec l’humain. En 1992 : création du programme Dr.SBATISO, avec de l’IA pour ordinateurs personnels MS DOS distribués avec diverses cartes son, publiés par CreativeLabs. Le programme « converserait » et interagissait avec l’utilisateur comme s’il s’agissait d’un psychologue. En 1995 : Richard WALLACE développe le chat bot ALICE (Artificiel Linguistic Internet Computer Entity), inspiré d’ELIZA (voir plus haut), mais en lui ajoutant le langage naturel via une collection d’échantillons d’une taille sans précédent, autorisée depuis l’avènement du WEB. En 1997 : Création de CLIPPY, qui est un assistant de Microsoft office. En 2001 : SMARTERCHILD été conçu par des développeurs de COVERSAGENT, un interlocuteur virtuel qui peut faire la conversation avec les utilisateurs des réseaux MSN et AIM. Plus que du simple blabla, le service offre, en format texte, des informations et des outils (dictionnaire, encyclopédie, moteur de recherche pour le web). Il y a même quelques jeux pour se reposer l’esprit.
  • 39.
    39 En 2006 :WATSON « le super calculateur d’IBM » est un programme informatique capable de comprendre notre langage et la réflexion humaine. C’est un système qui a l’habilité de simuler un raisonnement humain, ayant une base de données approchant un million de livres. En 2011 Watson est entré dans l’histoire en étant le premier ordinateur à remporter le jeu télévisé Jeopardy. En 2010 : SIRI, une application informatique développée par Apple. Qualifiée d’assistant personnel intelligent. L’interface homme-machine de SIRI repose sur la reconnaissance vocale avancée, le traitement du langage naturel et la synthèse vocale. En 2012 : Google NOW une application développer par GOOGLE. Prenant en compte l’heure et la localisation de l’utilisateur et ses données personnelles, des informations utiles sont fournies en fonction du contexte. L’application peut utiliser l’historique de recherche et des données concernant l’utilisateur pour la pertinence des réponses sans le demander à l’utilisateur. Par exemple, si vous avez un événement dans votre agenda Google, Google Now vous aidera à arriver à l’heure, si vous prenez le bus, il vous dit combien de temps il faudra pour marcher vers le bus et quand le prochain bus. En 2015 : ALEXA d’AMAZON, est un assistant vocal pour le dispositif Amazon Echo, capable de l’interaction vocale, utilise « Natural Language Processing Algorithms » qui reçoit, reconnait et répond aux instructions vocales ou orales. Même Année : CORTANA est une assistance personnel conçu par Microsoft, il met en place des rappels et reconnait la voix naturelle, commande et répond à des questions en utilisant le moteur de recherche BING. En 2016 : Bots pour Messenger est une plateforme qui permet aux développeurs de créer des Bots qui peuvent interagir avec les utilisateurs de Facebook. En Avril 11.000 chatbots étaient valable. Même Année : Tay a été élaboré pour imiter les propos et les habitudes des adolescentes américaines. Pour une meilleure interaction avec les internautes. Aujourd’hui il y a quelques chatbots plus développés. Ces chatbots apprennent donc sans l’aide d’un humain en se nourrissant des dialogues avec les internautes par le biais de l’apprentissage automatique et le traitement automatique du langage naturel. Comme l’explique Grégory Renard, responsable IA du groupe Oscaro.com, dans le magazine Stratégie : « Nous sommes passés à l’ère du web intelligent, qui succède au web 2.0. Ce web proactif, anticipant vos besoins, s’appuiera sur le web sémantique, la recherche en langage naturel, la gestion et l’extraction de données et l’apprentissage machine, les agents de recommandation, les technologies d’intelligence artificielle ». En 2016 : c’est le retour des Chatbots : ils peuvent à présent être intégrés aux messageries instantanées de certains réseaux sociaux. Les générations Y et Z16 sont plus à l’aise à communiquer par messagerie, et ce qui rend les chatbots plus performant de nos jours c’est leur présence sur les réseaux sociaux. 5.3 Analyse et présentation de quelques Chatbots : 2017 a marqué la naissance de deux chatbots très remarqués. D’une grande créativité, communiquant directement avec la communauté de fans des marques par le biais d’un mécanisme simple et efficace.
  • 40.
    40 Le Star WarsBot crée pour la sortie de « Rogue one : A Star WARS Story » un chatbot Game qui invite les fans à rejoindre la rébellion pour lutter contre l’empire. Il offre une expérience hors du commun, dans l’univers du film et de la saga STAR WARS, collant ainsi parfaitement au coeur de la cible (Joueurs en ligne). Le chatbot Christian Grey, créé à l’occasion de la sortie du film « Fifty Shades Darker », permet de partager une conversation intime avec le héros de la saga. La discussion prend rapidement une tournure très privée et particulièrement adaptée à l’univers du film. Le chatbot propose une expérience de ‘storytelling transmédia’ (Un processus par lequel les éléments d’une fiction sont dispersés sur diverses plateformes médiatiques dans le but de créer une expérience de divertissement coordonnée et unifiée). Ces chatbots expérientiels ont généré des répercussions presse appréciables créant un « BUZZ » soulignant un fort engagement des fans. A noter que le chatbot élaboré pour un événement « Coup Par Coup » peut être enrichi pour proposer des services sur une plus longue période. 5.4 Elaboration d’un Chatbot : Mais comment créer un chatbot ? Avant tout, avant même de penser à l’aspect technique, il est avant tout primordial de définir en quelques mots l’utilité de son bot : à quoi va-t-il servir ? En quoi simplifie-t-il le parcours client ? Et quelle partie de la population cible-t-il ? Et en deuxième lieu, en fonction de son coeur de cible, la marque pourra choisir à quels endroits elle souhaitera intégrer le chatbot : son site, Twitter, Facebook, Messenger, WeChat… Il faut réfléchir à une mission bien déterminé pour que le chatbot soit performant. Un chatbot doit simplifier l’expérience utilisateur par la mise en place du contenu adéquat et convenable. Concernant l’aspect technique, plusieurs options s’offrent à une marque : • Passer par une plateforme libre, simplifiée (sans avoir besoin de connaissance en programmation) et en ligne, tout comme ChatFuel, Rebot.me… Cependant, le problème de ce type de plateforme est que sans connaissances en code, l’intelligence du bot est très limitée : reconnaissance de mots-clés et système de questions/réponses. • Passer par une plateforme spécialisée dans le développement de ChatBots intelligents comme : Recast.ai, botfuel.io … Ces plateformes font profiter aux développeurs de l’intelligence conversationnelle, cependant il est nécessaire d’avoir des connaissances en code. • Passer par une agence spécialisée et être accompagné de linguistes et des spécialistes dans ce concept. Par la suite nous essayerons au mieux d’expliqué les fiches métiers et formations nécessaires pour la création des chatbots et comment y procéder, tout au long de mon stage chez Axilog nous avons effectué les recherches nécessaires et les entretiens qui nous permettrons de s’assurer de la faisabilité du projet et comment le sujet va être concrétisé sur terrain. Concernant le cadre juridique ; il n’existe aucune réglementation spécifique aux chatbots. Tout de même, il est important d’avertir l’interlocuteur que la conversation sera analysée et d’obtenir son consentement pour l’exploitation de ses données personnelles.
  • 41.
    41 5.5 Les typesde chatbot : Dans cette section, nous discuterons des différents types de chatbots, de ses fonctionnalités, suivis du flux de travail de construction d'un chatbot. Il existe différents types de chatbots. Ceci est représenté dans (la figure II-24 ci-dessous). Les chatbots sont classés dans les domaines dans lesquels ils opèrent et en fonction du type de réponse qu'ils retournent. Le contenu de la conversation peut provenir d'un domaine ouvert ou fermé. Pour un domaine ouvert, le chatbot obtient ses données de formation à partir d'une source ouverte telle qu'Internet, ce qui lui permet de répondre une grande variété de sujets. Un domaine proche fait référence à l'obtention de données d'entraînement à partir d'une source fermée de données avec un domaine d'expertise spécialisé. Le type de réponse qu'un chatbot donne peut-être catégoriser en fonction de la récupération ou de la génération. Même les chatbots les plus avancés de l'industrie que nous avons aujourd'hui sont basés sur la récupération. Cela signifie qu'un la réponse fixe est déjà codée pour le chatbot. Il peut être construit simplement en utilisant une phrase basée sur des règles appariement ou un ensemble de techniques d'apprentissage automatique pour retourner une réponse existante que la machine précédemment apprise. D'un autre côté, basées sur la génération, sont capables de générer tout type de réponses. Sa capacité en termes de type de question à laquelle ils peuvent répondre est illimitée. Cependant, dans l'état actuel de la technologie, ce type de chatbots n'est pas en mesure de donner des réponses qui dépendent de l'industrie normes. Figure II-22 : Generative-based chatbot model Figure II-23 : Retrieval-based chatbot model
  • 42.
    42 Figure II-24 :Chatbot conversation framework Open domain with retrieval-based responses : avoir un ensemble fixe de réponses d'un domaine ouvert signifie qu'il existe une réponse fixe pour tout question possible à laquelle tout le monde peut penser. C'est illogique et donc impossible à créer. Open domain with generative-based responses : nous pouvons poser au chatbot toute question possible et il est capable de générer une réponse. C'est le plus forme complète d'un chatbot et la solution à ce problème s'appelle l'intelligence générale artificielle (AGI). Cependant, nous sommes encore loin de cette technologie. Closed domain with retrieval-based responses : Il s'agit du type de chatbot le plus courant où une réponse spécifiée a été élaborée pour un domaine. C'est le type de chatbot le plus élémentaire, donnant les réponses les plus fiables à l'heure actuelle. Cependant, ce type de chatbot est limité à ce qui lui a été enseigné. Closed domain with generative-based responses : ce type de chatbot peut gérer les questions de l'ensemble de données sous-jacent sur lequel il a été formé et de la nouvelle question en dehors de l'ensemble de données sous-jacent, mais dans le domaine. Ont tendance à être plus humains et ont leur propre personnalité. Cependant, les réponses générées sont pleines d'erreurs grammaticales. Cette L'approche n'est pas encore largement utilisée par les développeurs de chatbot et se trouve principalement dans les laboratoires. Dans cette étude, nous nous concentrons sur un domaine fermé avec chatbot à réponses génératives. Malgré qu'il soit plus difficile à former et donnant des résultats plus inexacts, c'est l'avenir des chatbots. Il nous fournira plus de possibilités d'apprentissage et de recueillir des informations plus précieuses. 5.6 Le flux de travail de Chatbot : Dans cette section, nous fournissons un aperçu des étapes de construction d'un chatbot. Plus de détails sur chaque étape peuvent être que l'on trouve dans d'autres chapitres. Premièrement, nous devons définir l'objectif du problème. Ceci a été développé dans la section motivation au-dessus de. Après quoi, nous importons notre jeu de données dans un interpréteur et commençons par l'exploration des données où nous comprenons mieux les données dont nous traitons. La différence la plus évidente entre un problème de chatbot et la plupart des problèmes de science des données est la nature des données. La plupart des problèmes de science des données impliquent de traiter des nombres, des images
  • 43.
    43 et des textes.Depuis un ordinateur a été construit pour gérer les nombres, le premier type de problème peut être facilement traité. Pour les photos, chacune pixel dans l'image peut être représenté par un nombre sur le modèle de couleur RVB, donc le convertir en facilement. Pour les textes, c'est quelque chose de plus difficile. Nous devons vectoriser ces mots en vecteurs avant de pouvoir faire des prédictions. Par conséquent, ce processus de vectorisation supplémentaire est nécessaire pour un problème de chatbot. Ensuite, nous devons envoyer notre entrée vectorisée dans un modèle qui nous donnera une sortie. Dans cette étude, nous utilisons un modèle appelé mémoire à long terme (LSTM). Après quoi nous reconvertissons nos vecteurs en mots.Cela nous donne la réponse du chatbot. Enfin, nous intégrons le modèle dans une interface utilisateur. Il s'agit d'une étape qui ne sera pas traitée dans ce projet en raison de contraintes de temps et de sa capacité à générer des informations pertinentes pour un projet de physique. Figure II-25 : Le flux de travail Chatbot 5.7 Architecture générale de système Pour réaliser un système capable et plus fort pour répondre sur le maximum des questions des utilisateurs et sans faute, nous dévons suivi les étapes qui sont présentes dans la figure au-dessous (Figure II-26). Donc afin de génère un modèle capable nous avons dévu entraine ce modèle sur une dataset(questions/réponses) plus grande et en supprimer le bruit avec naturel language processing, après nous devons faire la représentation de caractéristiques avec word embedding c’est-à-dire créer deux matrices l’un pour les questions et l’autre pour les réponses, et en fin nous avons choisi des algorithmes adaptés avec des valeurs précises de leurs paramètres pour qu'ils nous donnent le meilleur résultat et un bon modèle.
  • 44.
    44 Figure II-26 :Architecture générale de système Conclusion Tous des notions que j’ai expliqué durant ce chapitre au but d’éclaircir l’environnement du sujet. Ainsi que pourquoi je choisie d'implémenter ce chatbot avec réseaux de neurones récurrents (RNN). Donc maintenant nous sommes prêts à découvrir comment nous avons préparé la Data Set avant la réalisation du projet.
  • 45.
    45 Chapitre III :Préparation du Data Set Introduction Pour la construction d'un chatbot, la nature de l'ensemble de données, que nous avons collecté, joue un rôle très important car elle définit les caractéristiques du chatbot. Comme je l’ai indiqué dans l’introduction, nous voulons construire un chatbot qui pourrait donner des réponses sarcastiques tout comme Google Assistant, de Google. Nous avons donc recueilli le jeu de données à partir des sites web. Cet ensemble de données après le traitement comportait plusieurs questions et réponses. Dans ce chapitre nous allons essayer de traiter toutes les opérations qu’on va appliquer sur le data set afin de le préparer pour la phase de deep learning. 1. Data set 1.1 Généralité Un jeu de données (ou data set) est un ensemble de questions et de réponses, et chaque question associe à un ensemble de réponses et vice versa. Il est extrêmement important que les données soient correctes et bien structurées pour le chatbot que nous voulons réaliser. Peu importe si nous avons des mégadonnées de données si les données ne sont pas alignées sur le problème. La première étape est la collection de données appropriées, et jusqu’à ce que nous y parvenions, nous reviendrons constamment à cette étape. 1.2 Qualité/ Quantité Une fois les données collectées, elles doivent être converties en un format lisible par notre modèle. En général, les données d’entrée, s’agissent de textes (questions/réponses) sont transformées en vecteurs et en tenseurs auxquels des techniques de naturel language processing (NLP) peuvent être appliquées. Les données doivent être normalisées et nettoyées pour augmenter leur efficacité. Jusque-là, les données sont appelées données brutes (non-traitées). 1.3 Collection des données Tout d’abord avant de commencer la réalisation de notre modèle nous avons collecté les données à partir des sites web en utilisant la méthode scraping ou la méthode classique c’est-à-dire à la main. Mais notre chatbot affronte un problème de limitation des données c’est-à-dire il existe un nombre limité des questions et leurs réponses concernant le coronavirus donc, nous avons proposé une méthode plus puissante d’où son fonctionnement est le suivant : la collection des questions à partir de la discussion des utilisateurs avec le chatbot puis sauvegarder ces questions en base de données et après nous cherchons les réponses des questions qui n’existent pas dans le jeu de données, ensuite nous faisons la mise à jour de notre jeu de données pour que le chatbot devienne plus généraliste et plus performant. Donc notre base de données contient trois fichiers txt, donc deux fichiers contient les conversations (questions/réponses) dans laquelle chaque réponse a plusieurs questions c’est-à-dire qu’une question mais sur formats différents et le troisième fichier contient la répétition des mots qui sont utilisé aux marocaine par des formes différentes.
  • 46.
    46 1.4 Structure d’unjeu de données Un jeu de données (en anglais dataset ou data set) est un ensemble de données (réponses/questions) où chaque donnée est associée à une variable (attribut ou tag). Un jeu de données a une structure d'arbre, comme dans un fichier .txt qui est constitué d’un ensemble des lignes et chaque ligne contient une question et sa réponse, donc comme vous voyez en le figure au-dessous (Figure III-1) chaque question a plusieurs réponses et la même chose pour la réponse. III. hhhhd Figure III-1 : La structure de data set 1.5 L'importance du prétraitement avec NLP L'arrivée à maturité des technologies de Natural Language Processing (NLP) a ouvert la voie ces dernières années au développement de bots capables d'échanger à la volée en langage naturel. C'est une étape clé du projet. Elle consiste à paramétrer l'ensemble des questions (ou "intentions" dans le jargon du domaine) auxquelles l'agent conversationnel doit pouvoir répondre. Le NLP est ce qui permet aux chatbots de comprendre vos messages et d’y répondre correctement. Lorsque vous envoyez un message avec “Bonjour”, c’est le NLP qui fait savoir au chatbot que vous avez envoyé une salutation d’usage, ce qui doit en retour activer les capacités d’intelligence artificielle du chatbot pour trouver une réponse appropriée. Dans l’exemple évoqué, le chatbot devrait probablement répondre par une salutation similaire. Sans le Natural Language Processing (NLP), on ne peut pas distinguer entre les réponses “Bonjour” et “Au revoir”. Pour un chatbot sans NLP, “bonjour” et “aurevoir” ne seront rien d’autres que des informations de type textuel apportées par l’utilisateur. Le Natural Language Processing (NLP) aide à fournir un contexte et une signification aux informations textuelles des utilisateurs, afin que l’AI trouvé la meilleure réponse. Le Natural Language Processing (NLP) peut surmonter les différentes barrières de la langue. Le même genre de problèmes qui mine nos communications textuelles quotidiennes avec les gens, peut, et va, très probablement,
  • 47.
    47 impacter nos interactionsavec les chatbots. Ces problématiques comprennent par exemple l’orthographe, les erreurs grammaticales et le mauvais usage de la langue en général. Les capacités avancées du Natural Language Processing (NLP) peuvent identifier ces erreurs d’orthographe de grammaire et permettent au chatbot d'interpréter l’intention du message malgré les erreurs. Les capacités avancées du Natural Language Processing (NLP) peuvent même comprendre l’intention de vos messages, comme par exemple savoir si vous êtes en train de formuler une question ou une affirmation. Bien que cette distinction semble sans intérêt, elle peut en réalité avoir un impact conséquent sur les capacités du chatbot à mener une conversation couronnée de succès avec un utilisateur. Concernant les chatbots, l’un des challenges les plus significatifs est le fait que les utilisateurs disposent d’une palette vierge quant à ce qu’ils peuvent dire aux bots. Bien que vous puissiez essayer de prévoir ce que l’utilisateur dira ou ne dira pas, il y a forcément des conversations en devenir que vous n’auriez jamais imaginé même dans vos rêves les plus fous ! Même si le Natural Language Processing (NLP) ne peut absolument pas opérer de miracle et assurer une réponse totalement appropriée à chaque message, il est suffisamment puissant pour être le facteur décisif de la réussite - ou de l’échec- d’un chatbot. Il ne faut donc pas sous-estimer cet aspect déterminant dans la construction d’un chatbot ! Donc NLP est caractérisé par les éléments suivants : Le nettoyage : consiste à se débarrasser des parties les moins utiles du texte par la suppression des mots vides, à gérer les majuscules et les caractères et autres détails. L'annotation : consiste à appliquer un schéma aux textes. Les annotations peuvent inclure un balisage structurel et un balisage de partie du discours. La normalisation : consiste en la traduction (cartographie) de termes dans le schéma ou de réductions linguistiques par le biais de la racine, de la lemmazation et d'autres formes de normalisation. L'analyse : consiste à sonder statistiquement, à manipuler et à généraliser à partir de l'ensemble de données pour l'analyse d'entités. 1.6 Les étapes du pré-traitement Il existe une variété de méthodes de prétraitement. La liste ci-dessous est loin d'être exclusive mais elle nous donne une idée sur par quoi on doit commencer. Il est important de réaliser, pour tous les problèmes de données, que la conversion de n'importe quel format en machine learning le réduire en un état généralisé, ce qui signifie perdre une partie de la fidélité des données. Le véritable art est de comprendre les avantages et les inconvénients de chacun de choisir soigneusement les bonnes méthodes. 1.6.1 Contexte Les mots en langue arabe peuvent être classés en deux catégories : les mots dérivés et mots non dérivés. Les mots arabes dérivés sont générés à partir d'entités de base appelées racines ou radicaux selon une liste prédéfinie de modèles
  • 48.
    48 standard appelés morphologiquesmotifs ou échelles. Ces schémas morphologiques représentent les principales règles d’orthographe des mots arabes. Les mots non dérivés comprennent deux sous-catégories : les mots fixes et les mots étrangers. Les mots arabes fixes sont un ensemble de mots qui n'obéissent pas aux règles de dérivation. Ces mots sont des mots généralement fonctionnels comme les pronoms, les prépositions, les conjonctions, les mots comme. Les mots étrangers sont des noms empruntés à des langues étrangères. Figure III-2 : Les principales phases du prétraitement du texte La majorité des mots arabes appartiennent à la catégorie des mots dérivés. Toutes sortes de mots (verbes, noms, adjectifs et adverbes) peuvent être générées à partir des racines selon la norme motifs. Le motif associé à un mot détermine ses divers attributs tels que le sexe (masculin / féminin), nombre (singulier / pluriel) et tendu (passé, présent et impératif). Sur la base de ce qui précède, un mot arabe dérivé peut être représenté par sa racine avec son modèle morphologique. Par exemple le mot (‫)العبون‬ (en français « joueurs ») est généré de la racine (‫)لعب‬ selon le motif (‫.)فاعلون‬ Ce modèle indique que le mot est un substantif, son genre est masculin et son nombre est pluriel. La signification finale de ce mot arabe sera joueurs (racine (jouer) : Attributs (nom ; pluriel ; masculin)) (Said et al. ,2013). Néanmoins, l'analyse morphologique des mots arabes présente de nombreux défis qui doivent être considéré. Le premier défi est le fait que certaines lettres de la racine peuvent être supprimées ou modifiées lors de la dérivation des mots à partir des racines. Le deuxième défi est que de nombreux suffixes peut être attachés au début du mot (préfixes) et à la fin du mot (suffixes). Ces affixes peuvent être constitués d'une ou plusieurs lettres. Le troisième défi est qu’en arabe les mots de langue sont écrits sans voyelles courtes. Différentes marques diacritiques sont utilisées pour remplacer les voyelles courtes.
  • 49.
    49 Le nombre deces marques est de huit signes diacritiques : trois signes diacritiques pour indiquer les voyelles courtes (ِ, ِ, ِ), trois doubles signes diacritiques qui combinent les simples (ِ, ِ, ِ), une marque diacritique pour indiquer l'absence de voyelle (ِ), et une seule marque diacritique pour indiquer l'occurrence en double d'une consonne (ِ). Celles-ci les marques jouent un rôle essentiel dans la détermination de la signification possible du mot. En fait, deux différents modèles peuvent avoir la même séquence de consonnes, mais ils diffèrent les uns des autres en termes de signes diacritiques. Selon l'étendue de l'utilisation des signes diacritiques, les textes arabes peuvent être classés en trois catégories différentes : textes non voyellisés, partiellement voyellisés et entièrement voyellisés. La première catégorie représente les textes sans signes diacritiques tels que la plupart des textes dactylographiés et imprimés et journaux. La deuxième catégorie représente les textes partiellement voyellisés tels que le texte livres et textes scientifiques. La dernière catégorie représente les textes arabes entièrement voyellisés, en où chaque consonne est suivie d'une marque diacritique comme le texte du Saint Coran, les enfants livres et textes littéraires. En outre, il nous importe de signaler que les notions de lettre capitale et lettre minuscule n'existent pas, l'écriture arabe est dite monocamérale. En addition, l’arabe est une langue semi-cursive ; la plupart des lettres s'attachent entre elles, leurs graphies diffèrent selon qu'elles soient précédées et/ou suivies d'autres lettres ou qu'elles soient isolées. 1.6.2 Tokenisation du texte La tokenisation est le processus qui consiste à isoler des unités de type mot d’un texte [Grefensette et Tapanainen 1994]. En plus des mots, les documents texte contiennent souvent des espaces blancs, des signes de ponctuation et un certain nombre de marquages indiquant les changements de police, la subdivision du texte, et des caractères spéciaux. La phase de tokenisation a pour objectif de détecter et d'isoler les mots individuels en éliminant ces composants supplémentaires. Vers la fin de ce travail, il est supposé qu'un mot arabe est une séquence de lettres arabes et de signes diacritiques sans séparateurs (espaces ou signes de ponctuation). La détection de mots individuels est basée sur un algorithme de correspondance de texte simple. Un nouveau mot est une séquence de lettres arabes et de signes diacritiques commençant par une lettre et terminée par une lettre ou des signes diacritiques. La détection d'un séparateur ou d'une charte spéciale marque la fin du mot. Input Output Figure III-3 : Exemple d'un Segmenteur 1.6.3 La stemmatisation Le Stemming est une technique qui a pour but d’extraire la racine ou le radical d’un mot, d’où les racineurs sont des systèmes qui font l’extraction des racines des mots entrants et retourne comme résultat les préfixes, les suffixes, le
  • 50.
    50 schème utilisé, ainsique la racine et le radical. Ce type d’analyse « simpliste », traite de façon identique affixes flexionnels et dérivationnels. En langue arabe comme c'est le cas dans de nombreuses autres langues, certains éléments lexicaux peuvent être attaché à un mot afin d'ajouter de nouvelles informations au mot ou de former parfois une phrase ou partie de phrase. Des exemples de ces parties additives, appelées affixes, sont les conjonctions (ex. : ‫ف‬ ), la préposition (ex. : ‫ل‬ ), les pronoms(ex. : ‫هم‬ ) et l'article(ex. : ‫ال‬ ). Le nombre d'affixes est limité et ils peuvent être ajoutés au début du mot « Préfixes », ou à la fin du mot « suffixes ». Un mot peut avoir jusqu'à deux préfixes et jusqu'à trois suffixes (Al- Sughaiyer et al. ,2004). Le processus d'extraction du mot du noyau ou de la racine du texte original en éliminant les suffixes et les préfixes sont appelés stemming. Contrairement à la langue anglaise, la suppression des préfixes et des suffixes d'un mot arabe n'inversent généralement pas le sens du mot (Awajan, 2007). Le stemmer que nous utilisons est développé sur la base des approches de stemming légères décrit dans (Darwish et al. ,2016) avec des restrictions supplémentaires dans la liste des préfixes et suffixes supprimables. La lumière issue d'un processus se réfère à un processus de petit ensemble de préfixes et / ou suffixes, sans essayer de ne pas traiter les infixes ni reconnaître motifs et racines. D'une part, cette approche réduit le risque de perte de consonne racine qui peut être produit si une tige lourde est utilisée. D'autre part, l'inconvénient de l'utilisation de la lumière le stemmer sera corrigé par l'analyseur morphologique qui sera appliqué sur les tiges en la phase suivante. Le stemmer décompose la chaîne d'entrée en parties additives (préfixes, suffixes) et tige. La décomposition est réalisée en appliquant un ensemble de règles d'identification qui testent les premiers caractères et les derniers caractères du mot contre les parties additives possibles et de capables. La décomposition du mot en trois parties est obtenue à condition que la première partie soit dans la liste des préfixes possibles et la troisième partie est dans la liste des suffixes possibles. La première et la troisième partie peuvent être nulles. Le stemmer léger développé dans cet article est basé sur les éléments suivants : • Un mot est composé de trois parties : préfixe, racine et suffixe. • N'importe laquelle des parties additives (préfixes et suffixes) peut être vide. • La racine du mot a au moins trois lettres. Tout mot de moins de quatre lettres sera laissé sans décomposition. • Un préfixe peut avoir de 0 à 3 lettres et exister dans la liste des préfixes. • Un suffixe peut avoir 0 à 3 lettres et exister dans la liste des suffixes. • Seules les consonnes du mot (lettres) sont prises en compte aux fins de cette décomposition. Le processus de décomposition des mots et de suppression des suffixes est répété jusqu'à ce que l'un des éléments suivants les conditions sont vérifiées : • Le nombre de lettres du mot est inférieur ou égal à 3.
  • 51.
    51 • Aucun préfixeni suffixe n'a été détecté. Une liste explicite des affixes supprimables est fournie dans un tableau. Ils sont classés selon leur type (préfixe / suffixe) et leur longueur (1, 2 et 3 lettres). Cette liste restreinte contient principalement des conjonctions, des prépositions, des pronoms et l'article. Le tableau I montre des exemples de cette liste. Les affixes utilisés pour déterminer la personne, le nombre et le sexe ne sont pas inclus dans ce tableau et ne sont donc pas supprimables dans cette phase. La priorité de détection et d'élimination est donnée pour les affixes à trois lettres sur les affixes à deux lettres, pour les affixes à deux lettres sur les affixes à une lettre et pour les préfixes sur les suffixes. Des étapes principales dans le Stemming est la normalisation qui vise à transformer une copie du document original dans un format standard plus facilement manipulable. Cette étape est considérée nécessaire à cause des variations qui peuvent exister alors de l’écriture d’une même unité lexicale. Donnons comme exemple : • Suppression des caractères spéciaux. • Remplacement de la lettre (‫)ة‬ par (‫.)ه‬ • Remplacement les lettres (‫ئ‬ ،‫آ‬ ،‫إ‬ ،‫أ‬ ) par (‫ا‬ ). • Remplacement de la lettre finale (‫)ي‬ par (‫.)ى‬ Figure III-4 : Exemple d'un stemming 1.6.4 Retrait des stopwords La majorité des mots d'un texte donné relient des parties d'une phrase plutôt que de montrer des sujets, des objets ou une intention. Supprimez des mots comme «‫في‬ » ou «and» cab en comparant le texte à une liste de mots vides. Input Output Figure III-5 : Exemple d'un stopword
  • 52.
    52 Conclusion Ce chapitre avaitcomme but de présenter les données et les préparer. Puis nous avons démontré la structure d’un jeu de données qui est utilisé pour réaliser le chatbot, ainsi nous avons déclaré et détaillé l’importance du pré-traitement et leurs étapes.
  • 53.
    53 Chapitre IV :Réalisation d’un chatbot Introduction Après avoir effectué une préparation du data dans le chapitre précédent, ce chapitre se débute avec solution proposée et ensuite les technologies utilisées que ça soit langages de programmation ou bibliothèques ou autre. Ensuit il existe aussi des extrais de code pour rendre la programmation ou l’implémentation beaucoup plus claire. Aussi ce chapitre présente le type de deep learning utilisé ainsi que le résultat du travail effectué durant ce projet de fin d’études. Nous allons clôturer par quelques captures d’écran démontrant les résultats obtenus. 1. Solution proposée Sans doute, pour faciliter l'atteindre des informations concernant COVID-19 avec la fiabilité de ces informations et aussi en arabe dialectal, nous avons proposé le chatbot comme solution. Le chatbot coute beaucoup moins cher de temps que des sites web pour accéder l’information. Lors de l’inscription des utilisateurs auprès d’un chatbot, leur première interaction consistera presque toujours en un questionnaire conçu pour entrer et sauvegarder leurs informations (nom et prénom) et leurs questions en data bases parce que nous améliorerons mon module basé sur ces questions. IV. hhf hhf Figure IV-1 : Interface de l’entre au chatbot
  • 54.
    54 2. Technologies utilisées 2.1Langage de programmation (Python) Figure IV-2 : Logo python Python est un langage complet qui s’est tourné naturellement vers la data science. Python a acquis ces dernières années une réelle légitimité en data science. Ceci s’explique par les bibliothèques spécialisées apparues et par la simplicité d’apprentissage du langage. En effet, il est très bien adapté pour apprendre les bases de la programmation. Python est un langage complet qui s’est tourné naturellement vers la data science, Python s’appuie sur des librairies très complètes (NumPy, SciPy, pandas, matplotlib, IPython …) et sur une facilité de prototypage pour mettre en place des Process plus ou moins complexes. La force de Python est la possibilité d’intégrer des algorithmes de data science dans un programme plus général. On pourra donc créer un programme complet avec seulement une partie dédiée aux modèles et ceci rapidement. S’il s’agit d’un programme pour la production, on optimisera dans un second temps les parties du code ayant des faiblesses en utilisant un langage de plus bas niveau (C++…). Figure IV-3 : comparaison entre python et autres langages Afin de bénéficier des avantages de python comme étant un langage de programmation il nous faut un éditeur et pour cela nous avons choisi de travailler avec Spyder en Anaconda.
  • 55.
    55 Figure IV-4 :Logo de Spyder avec ANACONDA Spyder (nomme Pydee dans ses premières versions) est un environnement de développement pour Python. Libre (Licence MIT) et multiplateforme (Windows , Mac OS, GNU/Linux), il intègre de nombreuses bibliothèques d’usage scientifique Matplotlib, NumPy, SciPy et IPython. Créé et développé par Pierre Raybaut en 2008, Spyder est maintenu, depuis 2012, par une communauté de développeurs qui ont pour point commun d'appartenir à la communauté Python scientifique. En comparaison avec d'autres IDE pour le développement scientifique, Spyder a un ensemble unique de fonctionnalités - multiplateforme, open-source, écrit en Python et disponible sous une licence non-copyleft. Spyder est extensible avec des plugins, comprend le support d'outils interactifs pour l'inspection des données et incorpore des instruments d'assurance de la qualité et d'introspection spécifiques au code Python, tels que Pyflakes, Pylint et Rope. 2.2 Les bibliothèques Keras : est une bibliothèque open-source de composants de réseau neuronal écrite en Python. Keras est capable de fonctionner sur TensorFlow, Theano, PlaidML et autres. La bibliothèque a été développée pour être modulaire et conviviale, mais elle a d'abord commencé dans le cadre d'un projet de recherche pour le système d'exploitation intelligent neuro-électronique à composition non limitée ou ONEIROS. L'auteur principal de Keras est François Chollet, un ingénieur de Google qui a également écrit XCeption, un modèle de réseau de neurones profonds. Bien que Keras ait été officiellement lancé, il n'a été intégré à la bibliothèque principale de TensorFlow de Google qu'en 2017. Un support supplémentaire a également été ajouté pour l'intégration de Keras avec Microsoft Cognitive Toolkit. Composée d'une bibliothèque de composants d'apprentissage automatique couramment utilisés, notamment des objectifs, des fonctions d'activation et des optimiseurs, la plate-forme open source de Keras offre également une prise en charge des réseaux de neurones récurrents et convolutionnels. De plus, Keras propose le développement de plates- formes mobiles pour les utilisateurs souhaitant mettre en œuvre des modèles d'apprentissage en profondeur sur les smartphones, iOS et Android. En 2018, la bibliothèque a une utilisation de 22% parmi ses plus de 200000 utilisateurs. Tensorflow : est un outil open source d'apprentissage automatique développé par Google. Le code source a été ouvert le 9 novembre 2015 par Google et publié sous licence Apache. Il est fondé sur l'infrastructure DistBelief, initiée par Google en 2011, et est doté d'une interface pour Python et Julia. TensorFlow est l'un des outils les plus utilisés en IA dans le domaine de l'apprentissage machine. Pour la réalisation de mon projet j’avais besoin de créer un model RNN, Tensorflow m’a aidé et plus précisément j’ai utilisé l’api tensorflow.keras.
  • 56.
    56 L’écosystème Deep Learningcomprend de nombreuses librairies. Figure IV-5 : Les librairies Deep Learning La première couche bas niveau est celle permettant d’utiliser une carte graphique. Ces GPU sont généralement de marque NVIDIA, qui domine le marché. On utilise alors sa librairie CUDA dédiée, éprouvée par la communauté. À celle-là s’ajoute la librairie CuDNN qui accélère les procédures des réseaux de neurones. Au-dessus se situent les librairies de Deep Learning. Ces librairies permettent de définir le graphe symbolique d’opérations décrivant le réseau de neurones, et rendent transparente la parallélisation. TensorFlow a été initiée par Google et propose aussi des algorithmes en dehors du Deep Learning. Torch est utilisé par Facebook et Twitter et se distingue par son environnement en langage Lua. Theano, considéré comme le grand-père des librairies Deep Learning, est un wrappeur Python proposant un environnement de machine learning. Il permet la création de librairies haut niveau telles que Lasagne et Keras. Keras est une librairie de haut niveau, permettant de manipuler des réseaux de neurones en quelques lignes de code. Elle est accompagnée d’une documentation et de tutoriels de grandes qualités. Initialement développée au-dessus de Theano, le backend TensorFlow est désormais supporté et utilisé par défaut. Étant une librairie de haut niveau, la limitation de Keras est qu’elle ne permet pas d’innover sur les détails d’entraînement des réseaux de neurones. Que vous soyez débutant à la recherche d’une API simple ou un expert qui souhaite prototyper rapidement des expériences, Keras est un excellent choix ! NLTK : Natural Language Toolkit est une plate-forme utilisée pour créer des programmes Python qui fonctionnent avec des données en langage humain pour les appliquer au traitement statistique du langage naturel (NLP). Il contient des bibliothèques de traitement de texte pour la tokenisation, l'analyse, la classification, le stemming, le balisage et le raisonnement sémantique. Il comprend également des démonstrations graphiques et des exemples d'ensembles de données, ainsi qu'un livre de cuisine et un livre expliquant les principes sous-jacents aux tâches de traitement du langage sous-jacentes prises en charge par NLTK. Le Natural Language Toolkit est une bibliothèque open source pour le langage de programmation Python écrite à l'origine par Steven Bird, Edward Loper et Ewan Klein pour une utilisation dans le développement et l'éducation. Il est livré avec un guide pratique qui présente des sujets en linguistique informatique ainsi que les principes fondamentaux de programmation pour Python, ce qui le rend approprié pour les linguistes qui n'ont pas de
  • 57.
    57 connaissances approfondies enprogrammation, les ingénieurs et les chercheurs qui doivent se plonger dans la linguistique informatique, les étudiants et les enseignants. NLTK comprend plus de 50 corpus et sources lexicales tels que Penn Treebank Corpus, Open Multilingual Wordnet, Problem Report Corpus et Lin’s Dependency Thesaurus. Figure IV-6 : Téléchargement de NLTK Book Collection Pour l’implémentation de mon projet j’avais besoin de nettoyer le dataset, parce que Le principal problème avec les données texte est qu'elles sont toutes au format texte (chaînes). Cependant, les algorithmes d'apprentissage profond ont besoin d'une sorte de vecteur d'entités numériques pour effectuer la tâche. Donc, avant de commencer avec un projet NLP, nous devons le pré-traiter pour le rendre idéal pour travailler. NumPy : est un package de traitement de tableau à usage général. Il fournit un objet de tableau multidimensionnel hautes performances et des outils pour travailler avec ces tableaux. C'est le package fondamental pour le calcul scientifique avec Python. Il contient diverses fonctionnalités, dont celles importantes : • Un puissant objet tableau N-dimensionnel. • Fonctions sophistiquées (diffusion). • Outils d'intégration du code C / C ++ et Fortran. • Algèbre linéaire utile, transformée de Fourier et capacités de nombres aléatoires. Outre ses utilisations scientifiques évidentes, NumPy peut également être utilisé comme un conteneur multidimensionnel efficace de données génériques. Des types de données arbitraires peuvent être définis à l'aide de Numpy qui permet à NumPy de s'intégrer de manière transparente et rapide à une grande variété de bases de données.
  • 58.
    58 Pour moi j’aiutilisé NumPy dans ce projet pour créer des tableaux, calculer l’argmax des probabilités et la visualisation. Matplotlib : est une incroyable bibliothèque de visualisation en Python pour les tracés 2D des tableaux. Matplotlib est une bibliothèque de visualisation de données multiplateforme construite sur des baies NumPy et conçue pour fonctionner avec la pile SciPy plus large. Il a été introduit par John Hunter en 2002. L'un des plus grands avantages de la visualisation est qu'elle nous permet d'accéder visuellement à d'énormes quantités de données dans des visuels faciles à digérer. Matplotlib se compose de plusieurs tracés comme la ligne, la barre, la dispersion, l'histogramme, etc. Dans notre projet nous avons utlisé Matplotlib pour visualiser la performance de mon module. Flask : est un framework web. Cela signifie que flask vous fournit des outils, des bibliothèques et des technologies qui vous permettent de créer une application Web. Cette application Web peut être des pages Web, un blog, un wiki ou devenir aussi volumineuse qu'une application de calendrier Web ou un site Web commercial. Flask fait partie des catégories du micro-cadre. Les micro-frameworks sont normalement des frameworks avec peu ou pas de dépendances aux bibliothèques externes. Cela a des avantages et des inconvénients. Les avantages seraient que le cadre est léger, il y a peu de dépendance à mettre à jour et à surveiller les bogues de sécurité, contre c'est que parfois vous devrez faire plus de travail par vous-même ou augmenter vous-même la liste des dépendances en ajoutant des plugins. Dans le cas de Flask, ses dépendances sont : • Werkzeug une bibliothèque d'utilitaires WSGI. • Jinja2 qui est son moteur de template. Dans ce projet Flask fait la communication entre le serveur et client (application Desktop html, javascript, css). argparse : est une bibliothèque complète de traitement d'arguments. Les arguments peuvent déclencher différentes actions, spécifiées par l'argument action à add_argument (). Les actions prises en charge incluent le stockage de l'argument (seul ou dans le cadre d'une liste), le stockage d'une valeur constante lorsque l'argument est rencontré (y compris la gestion spéciale des valeurs vraies / fausses pour les commutateurs booléens), le comptage du nombre de fois qu'un argument est vu, et appeler un rappel. L'action par défaut consiste à stocker la valeur de l'argument. Dans ce cas, si un type est fourni, la valeur est convertie en ce type avant d'être stockée. Si l'argument dest est fourni, la valeur est enregistrée dans un attribut de ce nom sur l'objet namespace renvoyé lorsque les arguments de la ligne de commande sont analysés. Le module argparse a été ajouté à Python 2.7 en remplacement d'Optparse. L'implémentation d'argparse prend en charge des fonctionnalités qui n'auraient pas été faciles à ajouter à optparse et qui auraient nécessité des modifications d'API incompatibles en amont.Un nouveau module a donc été introduit à la place dans la bibliothèque. optparse est toujours pris en charge, mais ne recevra probablement pas de nouvelles fonctionnalités. JSON : est la notation d'objet JavaScript. Cela signifie qu'un fichier de script (exécutable) composé de texte dans un langage de programmation est utilisé pour stocker et transférer les données. Python prend en charge JSON via un package intégrer appelé json. Pour utiliser cette fonctionnalité, nous importons le package json en script Python. Le texte en JSON se fait via une chaîne entre guillemets qui contient la valeur dans le mappage de valeur-clé dans {}. Il
  • 59.
    59 est similaire audictionnaire en Python. JSON présente une API similaire aux utilisateurs des modules de marshalage et de pickle de la bibliothèque standard et Python prend en charge nativement les fonctionnalités JSON. Nous avons utilisé JSON pour sauvegarder les données et passer de client au server et vice versa. 3. L’implémentation Comme déjà cité dans les chapitres précédents notre projet consiste à réaliser un chatbot robuste pour répondre aux questions des utilisateurs concernant le coronavirus et pour ça nous avons suivi un ensemble des étapes que ça sera détaillé plus dans la suite. Nous avons assemblé un modèle LSTM seq2seq en utilisant l'API fonctionnelle Keras pour créer un chatbot fonctionnel qui répondrait aux questions qui lui sont posées. 3.1 Importation des packages Nous avons importé TensorFlow et notre bien-aimé Keras. De plus, nous avons importé aussi d'autres modules qui aident à définir les couches du modèle après l’installation. 3.2 Pré-traitement des données 3.2.1 Lecture des données des fichiers Pour un ordinateur, une conversation n’est qu’une série de lettres sans structure. On doit d’abord trouver un moyen de simplifier le texte, puis de transformer les conversations en vecteurs tout en conservant la structure du langage, avant d’entraîner le modèle de génération de réponse ; enfin, on doit choisir une métrique d’évaluation du modèle pour sélectionner automatiquement le plus performant. Nous avons analysé chacun des fichiers .txt. • Concatène deux phrases ou plus si la réponse en contient deux ou plus. • Supprimer les types de données indésirables produits lors de l'analyse des données. • Ajoutez <START> et <END> à toutes les réponses. 3.2.2 Préparation des données pour le modèle Seq2Seq Nous avions 1000 conversations à notre disposition pour l’entraînement du chatbot. C’est énorme … et très peu à la fois. En effet la plupart des quelques 20 000 mots différents qui apparaissent dans notre corpus de conversation n’apparaissent qu’une fois. Cette observation confirme une fois de plus la loi empirique de Zipf (cf. Figure 4.6), qui implique notamment que la plupart des mots d’un texte ou corpus n’apparaissent qu’une ou deux fois. Le deuxième mot le plus présent, par exemple, est typiquement deux fois moins représenté du premier.
  • 60.
    60 Figure IV-7 :Loi empirique de Zipf Comme notre modèle ne peut pas apprendre à répondre à des phrases composées de mots qu’il n’a presque jamais vu au cours de son entraînement, il faut l’aider un peu. C’est la phase de prétraitement du texte, qui est aussi nécessaire que riche. Au cours de cette étape, on cherche à réduire la complexité du texte en appliquant certaines des opérations suivantes : • Suppression des mots vides (‫,أن‬‫إلى‬ …) qui sont omniprésents et ne sont pas nécessaires à la compréhension du texte. • Séparation de la phrase en unités lexicales. Cette étape consiste à transformer la chaîne de caractères qui correspond à une phrase en une liste de mots. Elle implique des choix sur la gestion des tirets, la suppression de la ponctuation, etc. • Normalisation : c’est l’opération qui consiste à la conjugaison, les marques de nombre, de genre. Il faut noter que ces opérations sont partiellement destructrices pour le texte, elles peuvent même le rendre inintelligible par endroit. Le choix des opérations de pré-traitement à appliquer doit donc résulter d’une inspection approfondie d’exemples et de l’impact sur les performances finales du modèle. On remarque que l’ordre des opérations de prétraitement joue un rôle, et que des opérations préliminaires de nettoyage du texte sont souvent nécessaires pour retirer des balises HTML, remplacer des acronymes spécifiques, traduire certains mots, verbaliser des émoticônes, … Pour savoir plus des informations concernant le pré-traitement de données voire le chapitre précèdent (3). Notre modèle nécessite trois tableaux à savoir encoderInputs, decoderInputs et decoderOutputs. Pour encoderInputs : • Tokenize les questions Remplissez-les à leur longueur maximale. Pour decoderInputs : • Tokenisez les réponses. Remplissez-les à leur longueur maximale.
  • 61.
    61 Pour decoderOutputs : •Tokenisez les réponses. Supprimez le premier élément de toutes les réponses tokenized_answers. Il s'agit de l'élément <START> que nous avons ajouté précédemment. 3.3 Vectorisation Les mots ne sont pas naturellement compris par les ordinateurs. En transformant les mots en une forme numérique, nous pouvons appliquer des règles mathématiques et effectuer des opérations matricielles sur celles-ci pour obtenir une sortie. La façon la plus simple de représenter numériquement des mots consiste à utiliser un one-hot encoding. Cela signifie que chaque un mot unique dans l'ensemble de données est représenté par un vecteur unique dans l'espace vectoriel, avec des 0 partout ailleurs. La dimension du vecteur sera alors le nombre de mots uniques. Il en résulte un énorme le vecteur qui capture des informations non relationnelles. Figure IV-8 : Vectorisation d’une question Comme le montre le diagramme, chaque mot est de la même distance, donc les synonymes et les antonymes sont traités être le même. 3.3.1 Word Embedding L'incorporation de mots est un nombre réel, une représentation vectorielle d'un mot. Idéalement, des mots avec similaires le sens sera rapproché lorsqu'il sera représenté sur l'espace vectoriel. Le but est de capturer relation dans cet espace. Avec des mots dans un espace densément peuplé, nous pouvons représenter un vecteur de mots dans un espace beaucoup plus petit par rapport à un vecteur encodé à chaud pouvant atteindre des millions de dimensions. Word2vec : Word2vec a été créé par une équipe de chercheurs de Google, dirigée par Tomáš Mikolov. C'est le plus populaire méthode de formation à l'intégration.
  • 62.
    62 Ce modèle impliqueun calcul statistique pour apprendre d'un corpus de texte. C’est un modèle prédictif qui apprend à ses vecteurs à améliorer sa capacité prédictive en réduisant sa fonction de perte. C'est aussi le premier modèle qui considère la proximité de la signification des mots dans un espace vectoriel. Donc en fin nous avons créé une matrice embedding avec le modèle de bag of words est une représentation sans ordre du texte. Le texte est représenté comme le sac de mots, sans considérant la relation entre les mots et la grammaire. Cette méthode représente le mot en gros texte et est le plus souvent utilisé pour la classification des documents et il est l'une des trois approches d'intégration de mots les plus utilisées, TF-IDF et Word2Vec étant les deux autres. 3.4 Création du modèle Pour la création du modèle nous avons choisi de se baser sur l’architecture Seq2seq (voire le chapitre 2). Le modèle se compose des couches Embedding, LSTM et Dense. La configuration de base est la suivante : • 2 couches d’entrée : la première pour Encodeur(encoderInputs) et la deuxième pour Decodeur (decoderInputs). • Couche Embedding : pour convertir des vecteurs de jetons pour fixer des vecteurs denses de taille. • Couche LSTM : permet d'accéder aux cellules à long terme et à court terme. Travail : • Les données d'entrée de l'encodeur sont fournies dans la couche d'intégration (embeddedEncInputs). • La sortie de la couche Embedding va à la cellule LSTM qui produit 2 vecteurs d'état. • Ces états sont définis dans la cellule LSTM du décodeur. • decoderInputs passe par la couche Embedding. • The Embeddings va en cellule LSTM (qui avait les états) pour produire des séquences. 3.5 La formation (Training) Comme on sait déjà la phase de formation fait partie de la notion machine Learning en général depuis toujours, pour faire la formation d’un modèle on a toujours besoin d’une base de données bien préparé pour éviter la fuite des informations principales. La préparation des données (ou preprocessing) est déjà expliquée dans ce chapitre et le chapitre précédent. Afin de faire le training de mon modèle et avant de faire la création de modèle à partir encoderInputs, decoderInputs et decoderOutputs avec une valeur du paramètre mode égale à Train, nous avons développé dans notre projet un script qu’est fait spécialement pour fournir un itérateur qui parcours la base donnée pour extraire les valeurs avec lesquelles je forme mon modèle avec leurs labels. Nous avons entraîné le modèle pour un certain nombre d'époques avec l'optimiseur RMSprop et la fonction de perte categorical_crossentropy.
  • 63.
    63 RunConfig : Figure IV-9: Fonction de création le modèle Les réseaux de neurones se composent de couches et de nombreux autres paramètres qui définissent son architecture, les paramètres de formation et les hyperparamètres, et pour un réseau de neurones formé - des couches formées (poids et biais) qui sont appelées paramètres. Les hyperparamètres sont définis par l'utilisateur tandis que les paramètres sont appris (obtenus en entraînant le réseau neuronal avec des données). Les hyperparamètres : Les hyperparamètres définissent combien vous voulez former le réseau neuronal (périodes de formation), la taille des lots, le taux d'apprentissage, la fonction d'optimisation, la configuration du réseau neuronal (couches, unités cachées dans les couches, fonction d'activation, etc.). Pendant la phase de formation d'un projet d'apprentissage en profondeur, vous souhaiterez peut-être régler ces hyperparamètres pour obtenir les performances optimales du modèle de réseau de neurones. Les paramètres : La phase de formation d'un projet d'apprentissage en profondeur est hautement répétitive et monotone, mais c'est ce qui produit la chose la plus importante du projet, les paramètres du modèle formé (poids et biais). Ces paramètres existent en mémoire (mémoire RAM / GPU) et non en stockage non volatile. Ces paramètres ne seront pas enregistrés sauf si vous les programmez explicitement dans votre code d'apprentissage en profondeur. Le point de contrôle est la pratique ou le terme utilisé pour décrire la sauvegarde d'un instantané des paramètres de votre modèle (poids) après chaque période de formation. C'est comme enregistrer des niveaux dans un jeu auquel vous jouez, lorsque vous pouvez reprendre votre jeu en chargeant le fichier de sauvegarde à tout moment. Vous pouvez charger les poids enregistrés du modèle et reprendre votre entraînement ou même exécuter une inférence plus tard. La phase de formation pour les modèles complexes est généralement longue (heures à jours à semaines). Sur les systèmes NUS HPC, la file d'attente GPU pour l'apprentissage en profondeur a une limite de temps de mur par défaut de 24 heures et une limite maximale de 48 heures pour l'exécution du travail. Les travaux de formation en apprentissage approfondi pour les modèles complexes et les grands ensembles de données peuvent prendre plus de temps à exécuter que les limites de temps de mur de file d'attente. Par conséquent, pour ne pas perdre la progression de votre entraînement, il est conseillé de mettre en place un point de contrôle des paramètres (poids) de votre modèle à chaque époque ou à chaque époque, mais uniquement s'il s'agit des meilleurs poids à ce moment-là. Avoir les poids les plus récents ou les meilleurs poids enregistrés sur la mémoire non volatile est une bonne pratique car cela vous permet de conserver une copie de vos progrès à une époque donnée au cas où vous voudriez régler vos hyperparamètres à une époque donnée. Il vous permet également de reprendre l'entraînement à partir de n'importe quelle époque dotée d'un point de contrôle. Si le travail ou le processus se termine prématurément, vous pouvez
  • 64.
    64 reprendre la formationen chargeant les poids à partir du dernier point de contrôle enregistré ou de tout autre point de contrôle Figure IV-10 : précision de modèle selon les époques 3.6 Définition de modèles d'inférence Nous créons des modèles d'inférence qui aident à prédire les réponses. Modèle d'inférence du codeur : Prend la question en entrée et en sortie des états LSTM (h et c). Modèle d'inférence du décodeur : Prend 2 entrées, l'une est les états LSTM (sortie du modèle d'encodeur), la seconde est les séquences d'entrée de réponse (celles n'ayant pas la balise <start>). Il affichera les réponses à la question que nous avons introduite dans le modèle d'encodeur et ses valeurs d'état. Le modèle est formé à partir de séquences source et cible données où le modèle prend à la fois la source et une version décalée de la séquence cible comme entrée et prédit la séquence cible entière. Par exemple, une séquence source peut être [1,2,3] et la séquence cible [4,5,6]. Les entrées et sorties du modèle pendant la formation seraient : Figure IV-11 : Example de modèle d’inférence Le modèle est destiné à être appelé de manière récursive lors de la génération de séquences cibles pour de nouvelles séquences source.
  • 65.
    65 La séquence sourceest codée et la séquence cible est générée un élément à la fois, en utilisant un caractère « début de séquence » tel que « _ » pour démarrer le processus. Par conséquent, dans le cas ci-dessus, les paires d'entrée-sortie suivantes se produiraient pendant la formation : Figure IV-12 : Example de modèles inference_encoder et inference_decoder Ici, vous pouvez voir comment l'utilisation récursive du modèle peut être utilisée pour créer des séquences de sortie. Pendant la prédiction, le modèle inference_encoder est utilisé pour coder une fois la séquence d'entrée qui renvoie les états qui sont utilisés pour initialiser le modèle inference_decoder. À partir de là, le modèle inference_decoder est utilisé pour générer des prédictions pas à pas. 3.7 Parler avec notre chatbot(prédit) Tout d'abord, nous avons défini une méthode qui convertit les questions en jetons Integer avec remplissage, puis nous avons pris une question en entrée et prédis les valeurs d'état, après ça nous avons défini les valeurs d'état dans le LSTM du décodeur. Ensuite, nous avons généré une séquence qui contient l'élément <start>, ainsi nous avons entré cette séquence dans l'inférence du décodeur et remplacer l'élément <start> par l'élément prédit par l'inférence decodeur et mette à jour les valeurs d'état. Nous avons effectué les étapes ci-dessus de manière itérative jusqu'à ce que nous ayons atteigne la balise <end> ou la longueur de réponse maximale. Figure IV-13 : L’interface de chatbot
  • 66.
    66 Conclusion Comme vous avezpeut-être remarqué Keras avec Tensorflow offre une solution optimale pour réaliser le chatbot, et en combinant cette api de high Levels avec d’autres technologies ça nous a permet d’implémenter un système capable de réaliser les taches prévues même si au niveau de quelques points les résultats ne sont pas assez bons mais cela revient à la nature complexe de l’image comme déjà cité dans le début de ce rapport.
  • 67.
    67 Conclusion générale Le naturellanguage processing étant un nouveau domaine d'étude, on en sait peu à ce sujet. Il y a encore beaucoup incertitudes que les experts du domaine ne comprennent pas surtout avec la langue arabe. Les chercheurs passent leur carrière à comprendre cette branche de la science des données. En tant que je suis débutant en science des données, ayant 1 an pour réaliser ce projet, entre l'université et le stage à temps partiel, le temps était une limitation majeure dans ce projet. Il existe donc des améliorations majeures qui peuvent être apportées pour améliorer le résultat de cette étude. Premièrement, davantage de recherches pourraient être effectuées sur les processus du langage naturel et appliquées au corpus. Dans le chapitre III, nous avons discuté des différentes formes d’analyse et mentionné que nous n’avons appliqué les processus de langage naturel les plus élémentaires : tokenisation, suppression des mots vides et la suppression caractères spéciaux. Il existe de nombreuses autres méthodes mentionnées au chapitre 3 qui peuvent améliorer le résultat production. Les chatbots sont des systèmes capables de modéliser le langage naturel et d'établir une conversation avec un utilisateur via un protocole de questions / réponses. Il existe trois types d'approches selon sur la liberté dont ils disposent au moment de répondre : basée sur des règles, basée sur la récupération et basée sur la génération. Les deux premières approches sont les plus utilisées de nos jours en raison de son efficacité à l'époque de maintenir une conversation de domaine proche. Les modèles génératifs, en revanche, se présentent comme une puissante alternative dans le sens qu'ils peuvent mieux gérer une conversation sur un sujet ouvert. Ils sont très liés à l'idée de IA forte, pas d'intervention humaine au moment de répondre, tout est appris par la machine. Des résultats prometteurs ont été obtenus dans les modèles de chatbot génératifs en appliquant des techniques de traduction avec des architectures codeur / décodeur RNN. Dans cette thèse, il a montré que les modèles de chatbot basés sur des architectures codeur / décodeur utilisant exclusivement l'attention surpasse les modèles RNN. Il est important de mentionner que tous les modèles présentés dans ce projet façonnent et imitent langage humain mais n'appliquent aucune logique à leurs réponses. C'est pourquoi la plupart des réponses ne sont pas cohérents entre eux et le modèle final manque de "personnalité". Les architectures d’Encodeur / décodeur sont une approche très intéressante pour résoudre le dernier problème. Entre l'encodeur et décodeur, un bloc logique pourrait être ajouté. Ensuite, une fois qu'une phrase d'entrée a été encodée, appliquez un raisonnement pour calculer ce qu'il est censé répondre. Enfin, toutes les informations sont transmises au décodeur qui modélise une réponse en langage naturel pour décrire ce que le bloc logique a raisonné. L'intuition de la physique pour analyser les modèles d'apprentissage profondeur nous a amenés à explorer les preuves transition de phase critique dans le processus de formation. Autrement dit, si la transition du modèle de « non appris » à « appris » est une transition de phase critique analogue à de nombreux processus physiques. De l’analyse limitée de notre travail, de telles preuves font défaut. Cela pourrait être purement l’absence d’une phase « critique » transition ou il se pourrait que les modèles que nous avons employés ne fonctionnent tout simplement pas bien à la fin, ce qui signifie ils n'ont pas encore vraiment atteint la phase « apprise ». D'autres modèles ou méthodes numériques peuvent
  • 68.
    68 être appliqués d'explorerdavantage la nature du processus d'évolution pendant la formation du modèle, et cela pourrait être futur travail. Nous espérons qu'à l'avenir, alors que nous effectuerons davantage de recherches sur les outils nécessaires pour construire le chatbot très capable, nous auront une meilleure compréhension de la science des données et des réseaux de neurones, avec la possibilité de se marier théories de la physique pour accélérer les progrès de l'intelligence artificielle. Avec un fonctionnement pleinement chatbot basé génératif connecté à un domaine ouvert, nous pourrons réaliser ce qui a été discuté dans les derniers chapitres et encore plus!
  • 69.
    69 BIBLIOGRAPHIE & WEBOGHRAPHIE ✓(Cho et al., 2014) Cho, K., Van Merriënboer, B., Gulcehre, C., Bahdanau, D., Bougares, F., Schwenk, H., & Bengio, Y. (2014). Learning phrase representations using RNN encoder-decoder for statistical machine translation. arXiv preprint arXiv:1406.1078. ✓ (Shannon, 2017) Shannon, M. (2017). Optimizing expected word error rate via sampling for speech recognition. arXiv preprint arXiv:1706.02776. ✓ (Said et al. ,2013) Said, A., El-Sharqwi, M., Chalabi, A., & Kamal, E. (2013, June). A hybrid approach for Arabic diacritization. In International Conference on Application of Natural Language to Information Systems (pp. 53-64). Springer, Berlin, Heidelberg. ✓ (Al‐Sughaiyer et al., 2004) Al‐Sughaiyer, I. A., & Al‐Kharashi, I. A. (2004). Arabic morphological analysis techniques: A comprehensive survey. Journal of the American Society for Information Science and Technology, 55(3), 189-213. ✓ (Awajan, 2007) Awajan, A. (2007). Arabic text preprocessing for the natural language processing applications. Arab Gulf Journal of Scientific Research, 25(4), 179-189. ✓ (Darwish et al. ,2016) Darwish, K., & Mubarak, H. (2016, May). Farasa: A new fast and accurate Arabic word segmenter. In Proceedings of the Tenth International Conference on Language Resources and Evaluation (LREC'16) (pp. 1070-1074). ✓ Traitement du langage naturel avec la langue arabe https://www.researchgate.net/publication/277424016_Arabic_Natural_Language_Processing ✓ La méthode complète pour mettre en place un projet de chatbot dans votre service client. https://www.eloquant.com/blog/la-methode-complete-pour-mettre-en-place-un-projet-de- chatbot-dans ✓ Avalverde, D. Une brève histoire des chatbots. https://pcc.cs.byu.edu/2018/03/26/abrief-history-of-chatbots/ ✓ Architecture de chatbot. https://medium.com/@surmenok/chatbot-architecture-496f5bf820ed ✓ Comment construire un chatbot. https://chatbotslife.com/how-to-build-a-chatbot-from-zero-a0ebb186b070 ✓ Compréhension intuitive des incorporations de mots : compter les vecteurs dans Word2Vec. https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-countword2veec/ ✓ Créer un chatbot doté d’une intelligence artificielle (IA). https://www.imagescreations.fr/comment-mettre-en-place-un-chatbot/