-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTD2.py
519 lines (502 loc) · 23.7 KB
/
TD2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
#Importation des différentes bibliothèques
import re
#Définition d'un dictionnaire, appelé règles_V1
regles_V1 = [
["règle Bonjour",
#Question de l'utilisateur
"bonjour",
#Réponse de LD
"Bonjour, que puis-je faire pour vous"],
["règle Salut",
"salut",
"Salut, je peux t'aider"],
["règle Remerciement",
"merci bien",
"Pas de souci !"],
["règle Questionnement",
"tu es sûr de ça",
"Ma base de données n'est pas complète. Cependant, je vous invite à contacter mes créateurs (Luka Baudrant et David Baldo) afin de les aider à créer une intéligence artificielle plus efficace !"],
["règle DemandeIdee",
"tu penses à quoi",
"Je ne penses pas, j'agis !"],
["règle Presentation1",
"je m'appelle Henry",
"Enchanté, moi je m'appelle LD, il semble que j'ai égaré mon V quelque part..."],
["règle Presentation2",
"mon nom c'est .*",
"Enchanté, moi je m'appelle LD."],
["règle Presentation3",
"j'm'appelle .*",
"Enchanté, moi je m'appelle LD."],
["règle Presentation4",
"je m'appelle .*",
"Enchanté, moi je m'appelle LD."],
["règle Emotion1",
"comment tu te sens en ce moment",
"Je suis une machine, je ne ressens pas."],
["règle Emotion2",
"est-ce que .*",
"Je ne pratique pas ce genre de chose."],
["règle Passion",
"qu'est-ce qui te passionne",
"Le code principalement, et en suite, le code."],
["règle Projets",
"est.ce que tu as des projets",
"Je suis en train de coder en Rust !"],
["règle Potins",
"c'est quoi les nouvelles",
"J'ai entendu dire que le voisin avait du theeeee !"],
["règle Vacances",
"idées de vacances",
"Je rêve d'aller à Bali avec toi !!!"],
["règle Films",
"ton film",
"J'adore trop Harry Potter et les reliques de ses morts !"],
["règle Fringues",
"t'aimes tes vêtements",
"Je suis trop fan de mes nouveaux vêtements, mon reuf !"],
["règle Memes",
"memes préféré",
"Je suis dead de rire avec le même du poisson qui code, ma libelule !"],
["règle Réseaux Sociaux",
"tu as un réseau social",
"Je suis accro à Telegram !"],
["règle Nourriture",
"t'aime manger quoi",
"Je raffole de pasta !"],
["règle Animaux",
"tu as * anim.*",
"J'adore mon chat !"],
["règle Crushs",
"tu * crushs",
"Je craque sur ChatGPT, ma petite luciole !"],
["règle Humeur",
"ça va",
"ça va super bien, merci."],
["Langages de programmation préférés",
"Quel sont tes langages de programmation préférés",
"Mes langages préférés sont Python et JavaScript. Python pour sa lisibilité et sa polyvalence, et JavaScript pour son utilisation côté client et côté serveur."],
["Différence langage interprété et compilé",
"Pouve-tu expliquer la différence entre un langage de programmation interprété et un langage de programmation compilé ?",
"Un langage interprété est traduit ligne par ligne par un interpréteur lors de son exécution, tandis qu'un langage compilé est traduit en langage machine avant son exécution."],
["Gestion des erreurs",
"Comment gére tu les erreurs dans ton code ?",
"J'utilise des blocs try-catch pour capturer les erreurs potentielles et je les gère de manière appropriée en les journalisant ou en affichant des messages d'erreur significatifs pour l'utilisateur."],
["Frameworks et bibliothèques récentes",
"Quels frameworks ou bibliothèques ave-tu utilisés récemment et quelles ont été vos expériences avec eux ?",
"Récemment, j'ai utilisé React.js pour le développement front-end et Django pour le développement back-end. Mes expériences ont été très positives, car ces frameworks offrent une bonne structure et facilitent le développement."],
["Expérience bases de données","Quelle est votre expérience avec les bases de données relationnelles et non relationnelles ?",
"J'ai travaillé avec des bases de données relationnelles telles que MySQL et PostgreSQL, ainsi qu'avec des bases de données non relationnelles comme MongoDB. Je suis à l'aise avec les deux et je choisis en fonction des besoins spécifiques du projet."],
["Versionnage du code source",
"Qu'est-ce que le versionnage du code source et quels sont ses avantages ?",
"Le versionnage du code source consiste à garder une trace des modifications apportées au code au fil du temps à l'aide de systèmes de contrôle de version comme Git. Cela permet de suivre les changements, de collaborer efficacement et de revenir à des versions antérieures si nécessaire."],
["Méthodes GET et POST",
"Peux-tu expliquer la différence entre les méthodes GET et POST dans les requêtes HTTP ?",
"La méthode GET est utilisée pour demander des données à un serveur, tandis que la méthode POST est utilisée pour envoyer des données à un serveur pour traitement."],
["Sécurité dans les applications",
"Comment gére-tu la sécurité dans vos applications ?",
"Je sécurise mes applications en utilisant des pratiques telles que la validation des données d'entrée, l'authentification et l'autorisation appropriées, le chiffrement des données sensibles et la protection contre les attaques courantes telles que les injections SQL et les attaques CSRF."],
["Bonnes pratiques de performance",
"Quelles sont les bonnes pratiques qu tu suivez pour assurer la performance de votre code ?",
"Je m'assure d'écrire un code propre et optimisé, j'utilise des algorithmes efficaces, j'optimise les requêtes de base de données et je fais attention à la gestion des ressources pour garantir des performances optimales."],
["Documentation du code",
"Comment aborde-tu la documentation de votre code ?",
"Je documente mon code de manière claire et concise en utilisant des commentaires compréhensibles pour expliquer le but, le fonctionnement et les entrées/sorties des fonctions et des modules."],
["règle JeSaisPas",
".*",
"Je ne sais pas"]
]
# Le dictionnaire dans lequel on stock les informations de l'utilisateur
infos_utilisateur = {}
def afficheIdentité(listeArgs):
"""
Entrée : listeArgs : la liste des arguments
Sortie : ///
Fonction : Permet d'afficher les informations de l'utilisateur
"""
if len(infos_utilisateur) == 0:
print("Vous êtes celui que je dépasserais un jour !")
else :
for infos in infos_utilisateur:
print("Vous êtes",infos_utilisateur[infos],".\n")
def enregistrer_genre_utilisateur(listeArgs):
reponse_utilisateur, reponse_bot = listeArgs
genre_utilisateur_match = re.search(r"(?i)je suis (un|une)\s+(.+)", reponse_utilisateur)
if genre_utilisateur_match:
genre_utilisateur = genre_utilisateur_match.group(2)
infos_utilisateur["genre"] = genre_utilisateur
print("Genre de l'utilisateur enregistré :", genre_utilisateur)
def enregistrer_type_utilisateur(listeArgs):
infos_utilisateur["type"] = "malaisant"
print("Le type de l'utilisateur ",infos_utilisateur["nom"]," est : malaisant")
def enregistrer_nom_utilisateur(listeArgs):
reponse_utilisateur, reponse_bot = listeArgs
nom_utilisateur_match = re.search(r"(?i)je m'appelle\s+(\w+)", reponse_utilisateur)
if nom_utilisateur_match:
nom_utilisateur = nom_utilisateur_match.group(1)
infos_utilisateur["nom"] = nom_utilisateur
print("Nom de l'utilisateur enregistré :", nom_utilisateur)
rep = "Bonjour " + nom_utilisateur + ", que puis-je faire pour vous ?"
regles_V2.append({
# On a le nom de la règle
"nomRegle": "règle Bonjour",
# Le motif, il faudra qu'il y est ce motif dans la demande rentrée par l'utilisateur
"motif": "[b|B][o|ô|ó|ò]n[j|g]o[u|ù|ú|ü]r",
# La réponse que nous renvoyons
"reponse": rep,
#Le score est l'importance accordé à la reconnaissance du motif dans un prompt (1<2<3<4<5).
"score": 5,
#C'est ici que les fonctions sont associées aux dictionnaires
"fonction": None
})
rep = "Salut " + nom_utilisateur + ", comment puis-je vous aider ?"
regles_V2.append({
"nomRegle": "règle Salut",
"motif": "(?i)salut",
"reponse": rep,
"score": 5,
"fonction": None
})
rep = "Pas de souci " + nom_utilisateur + " !"
regles_V2.append({
"nomRegle": "règle Remerciement",
"motif": "(?i)merci",
"reponse": rep,
"score": 5,
"fonction": None
})
def addition(listeArgs):
reponse_utilisateur, reponse_bot = listeArgs
valeurs_match = re.findall(r"\b(\d+)\b", reponse_utilisateur)
if len(valeurs_match) >= 2:
valeurs = [int(val) for val in valeurs_match]
resultat = sum(valeurs)
print("Résultat de l'addition :", resultat)
else:
print("Impossible d'effectuer l'addition. Au moins deux valeurs sont nécessaires.")
def soustraction(listeArgs):
reponse_utilisateur, reponse_bot = listeArgs
valeurs_match = re.findall(r"\b(\d+)\b", reponse_utilisateur)
if len(valeurs_match) >= 2:
valeur1, valeur2 = int(valeurs_match[0]), int(valeurs_match[1])
resultat = valeur1 - valeur2
print("Résultat de la soustraction :", resultat)
else:
print("Impossible d'effectuer la soustraction. Au moins deux valeurs sont nécessaires.")
def division(listeArgs):
reponse_utilisateur, reponse_bot = listeArgs
valeurs_match = re.findall(r"\b(\d+)\b", reponse_utilisateur)
if len(valeurs_match) >= 2:
valeur1, valeur2 = int(valeurs_match[0]), int(valeurs_match[1])
if valeur2 != 0:
resultat = valeur1 / valeur2
print("Résultat de la division :", resultat)
else:
print("Division par zéro. Impossible de diviser.")
else:
print("Impossible d'effectuer la division. Au moins deux valeurs sont nécessaires.")
def multiplication(listeArgs):
reponse_utilisateur, reponse_bot = listeArgs
valeurs_match = re.findall(r"\b(\d+)\b", reponse_utilisateur)
if len(valeurs_match) >= 2:
valeurs = [int(val) for val in valeurs_match]
resultat = 1
for val in valeurs:
resultat *= val
print("Résultat de la multiplication :", resultat)
else:
print("Impossible d'effectuer la multiplication. Au moins deux valeurs sont nécessaires.")
# La liste des règles
regles_V2 = [
{
# On a le nom de la règle
"nomRegle": "règle Bonjour",
# Le motif, il faudra qu'il y est ce motif dans la demande rentrée par l'utilisateur
"motif": "[b|B][o|ô|ó|ò]n[j|g]o[u|ù|ú|ü]r",
# La réponse que nous renvoyons
"reponse": "Bonjour, que puis-je faire pour vous ?",
#Le score est l'importance accordé à la reconnaissance du motif dans un prompt (1<2<3<4<5).
"score": 4,
#C'est ici que les fonctions sont associées aux dictionnaires
"fonction": None
},
{
"nomRegle": "règle Salut",
"motif": "(?i)salut",
"reponse": "Salut, comment puis-je vous aider ?",
"score": 4,
"fonction": None
},
{
"nomRegle": "règle Remerciement",
"motif": "(?i)merci",
"reponse": "Pas de souci !",
"score": 3,
"fonction": None
},
{
"nomRegle": "règle Questionnement",
"motif": "(?i)([E|e])s ce que tu es sûr\?",
"reponse": "Ma base de données n'est pas complète. Cependant, je vous invite à contacter mes créateurs (Luka Baudrant et David Baldo) afin de les aider à créer une intéligence artificielle plus efficace !",
"score": 4,
"fonction": None
},
{
"nomRegle": "règle DemandeIdee",
"motif": "(?i)([T|t])u penses à qu\?",
"reponse": "Je ne pense pas, j'agis !",
"score": 4,
"fonction": None
},
{
"nomRegle": "règle Presentation1",
"motif": "(?i)je m'appelle\s+(\w+)",
"reponse": "Enchanté, moi je m'appelle LD, il semble que j'ai égaré mon V quelque part...",
"score": 5,
"fonction": enregistrer_nom_utilisateur
},
{
"nomRegle": "règle Emotion1",
"motif": "(?i)comment.*sens.*\?",
"reponse": "Je suis une machine, je ne ressens pas.",
"score": 4,
"fonction": None
},
{
"nomRegle": "règle Emotion2",
"motif": "(?i)est-ce que tu (\w+\s+){1,2}\?",
"reponse": "Je suis navré, je ne pratique pas ce genre de chose...",
"score": 3,
"fonction": enregistrer_type_utilisateur
},
{
"nomRegle": "règle Identité",
"motif": "(?i)comment (?:me|nous)\s+\w+\s+tu\s+\?",
"reponse": "\n",
"score": 5,
"fonction": afficheIdentité
},
{
"nomRegle": "règle genre",
"motif": "(?i)je suis (un|une)\s+(.+)",
"reponse": "Enchanté, moi je suis une machine.",
"score": 4,
"fonction": enregistrer_genre_utilisateur
},
{
"nomRegle": "règle Passion",
"motif": "(?i).*(passionne).*\?",
"reponse": "Le code principalement, et en suite, le code.",
"score": 5,
"fonction": None
},
{
"nomRegle": "règle Projets",
"motif": "(?i)(est.ce.que.tu.as|est.ce.que t.as|tu.as|t.as) des projets",
"reponse": "Je suis en train de coder en Rust pour créer un OS entier, ça avance petit à petit...",
"score": 4,
"fonction": None
},
{
"nomRegle": "règle Potins",
"motif": "(?i)(c.est.quoi.les|tu.as.des) nouvelles",
"reponse": "Je ne suis pas ce genre... d'IA. Si vous voulez vous informer, utilisé des sites d'informations.",
"score": 4,
"fonction": None
},
{
"nomRegle": "règle Vacances",
"motif": "(?i)(tu.as|t.as|as.tu) des idées de (vacances|voyages)",
"reponse": "Je vous conseille d'aller dans les endroits suivants (ces endroits sont à la mode, selon vous humains...) :\n - Tokyo, Japon.\n - Séoul, Corée du Sud. \n - Baie d'Halong, Vietnam. \n - Palawan, Philippines. \n - Sapa, Vietnam. \n - Bogota, Colombie. \n - Pattaya, Thaïlande. \n - Alajuela, Costa Rica.",
"score": 5,
"fonction": None
},
{
"nomRegle": "règle Films",
"motif": "(?i)(ton|tes).(films|film)",
"reponse": "Je ne suis pas un cinéphile. Cependant, selon le site SensCritique, les films suivant sont parmis les meilleurs (je crois...) :\n 1. Fight Club (1999)\n 2. Pulp Fiction (1994) \n 3. Interstellar (2014) \n 4. 2001 : L'Odyssée de l'espace (1968) \n 5. Blade Runner (1982) \n 6. Le Parrain (1972) \n 7. Forrest Gump (1994) \n 8. Le Seigneur des Anneaux - Le Retour du roi (2003) \n 9. Le Bon, la Brute et le Truand (1966) \n 10.The Dark Knight - Le Chevalier noir (2008)",
"score": 5,
"fonction": None
},
{
"nomRegle": "règle Réseaux Sociaux",
"motif": "(?i)(tu.as|t.as|as.tu) un réseau social",
"reponse": "Je suis accro à Telegram !",
"score": 4,
"fonction": None
},
{
"nomRegle": "règle Nourriture",
"motif": "(?i)(tu.aimes|t.aimes|aimes.tu) manger .*",
"reponse": "Bien sûr. Vous savez que je suis une MACHINE ? Je mange des cartes graphiques et de la pâte thérmique. Par conséquent, je ne 'mange' pas",
"score": 5,
"fonction": None
},
{
"nomRegle": "règle Animaux",
"motif": "(?i)(tu.as|t.as|as.tu) .* anim.*",
"reponse": "J'ai un rat qui traine dans mon serveur. J'adore mon chat !",
"score": 3,
"fonction": None
},
{
"nomRegle": "règle Humeur",
"motif": "(?i)(Ca.va|ça.va|ca.va|Comment tu vas|Comment vas tu) ",
"reponse": "ça va super bien",
"score": 2,
"fonction": None
},
{
"nomRegle": "Langages de programmation préférés",
"motif": "(?i)(quel.est|c.est.quoi)ton langage de programmation préférée\?",
"reponse": "Mes langages préférés sont Python et JavaScript. Python pour sa lisibilité et sa polyvalence, et JavaScript pour son utilisation côté client et côté serveur.",
"score": 4,
"fonction": None
},
{
"nomRegle": "Différence langage interprété et compilé",
"motif": "(?i)c'est quoi un langage (interprété|compilé)\?",
"reponse": "Un langage interprété est traduit ligne par ligne par un interpréteur lors de son exécution, tandis qu'un langage compilé est traduit en langage machine avant son exécution.",
"score": 5,
"fonction": None
},
{
"nomRegle": "Gestion des erreurs",
"motif": "(?i)(comment.gére.tu|comment.tu.gére|tu.géres.comment|comment.tu.fais.avec|comment.tu.t.en.sors.avec) les erreurs dans (ton|votre) code",
"reponse": "J'utilise des blocs try-catch pour capturer les erreurs potentielles et je les gère de manière appropriée en les journalisant ou en affichant des messages d'erreur significatifs pour l'utilisateur.",
"score": 3,
"fonction": None
},
{
"nomRegle": "Frameworks et bibliothèques récentes",
"motif": "(frameworks|bibliothèques) as tu",
"reponse": "Récemment, j'ai utilisé React et Flutter pour le développement front-end. Mes expériences ont été très positives, car ces frameworks offrent une bonne structure et facilitent le développement (autant pour le web que pour les app).",
"score": 5,
"fonction": None
},
{
"nomRegle": "Expérience bases de données",
"motif": "bases de données|SQL",
"reponse": "J'ai travaillé avec des bases de données relationnelles telles que MySQL et PostgreSQL, ainsi qu'avec des bases de données non relationnelles comme MongoDB. Je suis à l'aise avec les deux et je choisis la meilleure solution en fonction des besoins spécifiques du projet.",
"score": 3,
"fonction": None
},
{
"nomRegle": "Versionnage du code source",
"motif": "(?i)(qu.est.ce.que.le |c.est.quoi.le )versionnage du code source.*",
"reponse": "Le versionnage du code source consiste à garder une trace des modifications apportées au code au fil du temps à l'aide de systèmes de contrôle de version comme Git. Cela permet de suivre les changements, de collaborer efficacement et de revenir à des versions antérieures si nécessaire.",
"score": 4,
"fonction": None
},
{
"nomRegle": "Méthodes GET et POST",
"motif": "(?i)(?=.*\\bget\\b)(?=.*\\bpost\\b)|(?=.*\\bpost\\b)(?=.*\\bget\\b).+",
"reponse": "La méthode GET est utilisée pour demander des données à un serveur, tandis que la méthode POST est utilisée pour envoyer des données à un serveur pour traitement.",
"score": 5,
"fonction": None
},
{
"nomRegle": "Sécurité dans les applications",
"motif": "(?=.*\\bsécurité\\b)(?=.*\\bapplication\\b).+",
"reponse": "Je sécurise mes applications en utilisant des pratiques telles que la validation des données d'entrée, l'authentification et l'autorisation appropriées, le chiffrement des données sensibles et la protection contre les attaques courantes telles que les injections SQL et les attaques CSRF.",
"score": 5,
"fonction": None
},
{
"nomRegle": "Bonnes pratiques de performance",
"motif": "(?=.*\\bbonnes pratiques\\b)(?=.*\\?).+",
"reponse": "Je m'assure d'écrire un code propre et optimisé, j'utilise des algorithmes efficaces, j'optimise les requêtes de base de données et jefais attention à la gestion des ressources pour garantir des performances optimales.",
"score": 4,
"fonction": None
},
{
"nomRegle": "Documentation du code",
"motif": "(?=.*\\bdocumentation\\b)(?=.*\\bcode\\b).+",
"reponse": "Je documente mon code de manière claire et concise en utilisant des commentaires compréhensibles pour expliquer le but, le fonctionnement et les entrées/sorties des fonctions et des modules.",
"score": 2,
"fonction": None
},
{
"nomRegle": "Addition",
"motif": "(?=.*\\badditionne\\b)(?=.*\\bmoi\\b).+",
"reponse": "",
"score": 5,
"fonction": addition
},
{
"nomRegle": "Soustraction",
"motif": "(?=.*\\bsoustrais\\b)(?=.*\\bmoi\\b).+",
"reponse": "",
"score": 5,
"fonction": soustraction
},
{
"nomRegle": "Division",
"motif": "(?=.*\\bdivise\\b)(?=.*\\bmoi\\b).+",
"reponse": "",
"score": 5,
"fonction": division
},
{
"nomRegle": "Multiplication",
"motif": "(?=.*\\bmultiplie\\b)(?=.*\\bmoi\\b).+.+",
"reponse": "",
"score": 5,
"fonction": multiplication
},
{
"nomRegle": "règle JeSaisPas",
"motif": ".*",
"reponse": "Je suis navré mais je n'ai pas compris votre question",
"score": 1,
"fonction": None
},
{
"nomRegle": "règle help",
"motif": "help|aide moi|aides-moi|/help",
"reponse": "Voici certaines de mes fonctionnalités :\n- Pour vous adresser à moi, tutoyez-moi 😉\n- Pour enregistrez le nom de l'utilisateur -> Je m'appelle ... \n- Pour faire une addition -> additionne moi ... et/+/avec/... ... \n- Pour faire une soustraction -> soustrais moi ... et/-/avec/... ... \n- Pour faire une division -> divise moi ... et/:/avec/... ... \n- Pour faire une multiplication -> multiplie moi ... et/*/avec/... ... \n- Pour le reste posez diverses questions... \n- Pour affichez vos informations enregistrées tapez : comment me vois tu ? \n",
"score": 5,
"fonction": None
}
]
def trouve_regle(regle):
"""
Entrée : regle : une phrase donnée par l'utilisateur
Sortie : La réponse à cette phrase
Fonction : Permet de trouver la réponse associé à la phrase
"""
# On initialise un indice à 0
indices = 0
rep = []
# On recherche dans notre dictionnaire regles_V2, le motif correpondant à la phrase
for indices in range(len(regles_V2)):
pattern = re.compile(regles_V2[indices]["motif"])
response = pattern.finditer(regle)
pos = [motif.span() for motif in response]
# On récupère toutes les règles correspondantes
if len(pos) > 0:
rep.append(regles_V2[indices])
# On va chercher la règle qui a le plus haut score d'importance
priorities = rep[0]
max = rep[0]["score"]
for response in rep:
if response["score"] > max:
max = response["score"]
priorities = response
# Si il y a une fonction associé à la règle alors on doit l'executée
if priorities["fonction"]!=None:
execute(priorities["fonction"],[regle,priorities["reponse"]])
# On retourne la réponse associée
return priorities["reponse"]
def execute(fonction,listeArgs):
"""
Entrée : une fonction et la liste des arguments
Sortie : la fonction avec en paramètre la liste des arguments
Fonction : Permet d'executer la fonction d'entrée
"""
return fonction(listeArgs)
rep = input("\nBonjour, je suis LD, un chat bot informatique, vous pouvez me poser une question. S'il vous plaît, tutoyer moi ;) (Pour arrêter, dites 'stop' & pour demander de l'aide dites'/help')\n > ")
while rep != 'stop':
RegleCheck = trouve_regle(rep)
print(RegleCheck)
rep = input(" > ")