Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer une Chatbot avec Python

26 juin 2019 à 22:00:53

Bonjour ,

Je me tourne vers vous pour apprendre a coder une Chatbot avec python en effet je voudrais une sorte d'assistant virtuel à qui on pourrait poser des questions et qui nous répondrait sans qu'il parle bien sur.Je voudrais savoir qu'elle bibliothèques utilisé, comment le faire etc ... 

Merci d'avance. 

  • Partager sur Facebook
  • Partager sur Twitter
26 juin 2019 à 23:35:08

Oula ça risque d'être sport !

D'abord tu dois absolument connaître tensorflow, la librairie d'IA qui te servira à construire ton modèle, ensuite va jeter un coup d'œil au modèles déjà existants (github est ton ami). Pour répondre à la question "comment le faire ?" Bah sincèrement c'est un des projets que j'ai fait qui a été le plus compliqué pour moi.. Tu dois t'y connaître en data science (ou au moins avoir des bonnes bases en python) car tu devra récupérer et parler un jeu d'entraînement pour ton IA.. Mais surtout : tu vas galérer. C'est vraiment pas simple et je ne saurais te recommander de commencer plus simple en IA (un programme capable de faire de la reconnaissance d'image type SSD 300 c'est déjà UNE GROSSE ÉTAPE). Sinon si tu tiens absolument à commencer bah tiens :

https://www.google.com/url?sa=t&source=web&rct=j&url=%23&ved=2ahUKEwj9naj9jIjjAhVbBGMBHdwZBVMQwqsBMAR6BAgFEAU&usg=AOvVaw0VTJzWxrN8ZFOD4xbU2nov

  • Partager sur Facebook
  • Partager sur Twitter
26 juin 2019 à 23:43:49

Tout d'abord merci pour ta réponse, Donc si je comprends bien c'est un gros challenge mais n'y aurait-il pas un autre language de programmation adaptée à l'IA sur lequel je pourrais commencé et qui n'est pas très compliqué.
  • Partager sur Facebook
  • Partager sur Twitter
26 juin 2019 à 23:55:47

Si tu veux faire un truc évolué, ce sera compliqué, quel que soit le langage.

Faire un chatbot simple qui a une banque de questions avec les réponses, ou même un truc plus évolué qui peut aller chercher des réponses sur le web, c'est faisable, c'est même assez simple à faire pour un programmeur qui a un peu d'expérience, mais au delà de ça, ce sera forcément beaucoup de recherches et de travail, et tu as peu de chances de trouver des gens au point là dessus sur un forum d'aide aux débutants comme ici.

Tu en es où au niveau de ton expérience en programmation ?

-
Edité par LoupSolitaire 26 juin 2019 à 23:56:10

  • Partager sur Facebook
  • Partager sur Twitter

Blond, bouclé, toujours le sourire aux lèvres...

27 juin 2019 à 0:06:15

Je voudrais faire comme t'as dis un chatbot avec une banque de question et reponses.

Sa fait 6 mois que je fais du python, j'ai deja fait quelques petit algorithme et un jeu sur pygame.

  • Partager sur Facebook
  • Partager sur Twitter
27 juin 2019 à 10:11:35

Un ChatBot qu'est-ce que c'est ? C'est un programme qui "traite du langage" et "choisi une réponse" en fonction "d'une entrée".

Il faut bien dissocier le traitement du langage (NLP en anglais pour Natural Language Processing) et le modèle.

Si tu t'y connais en machine learning (si c'est pas le cas, alors forme toi car c'est la base pour un ChatBot, il y a plein de cours de qualités et gratuits), cela revient à dire que ton X = message d'entrée et ton Y = Message de sortie.

------------------------------------------

Maintenant, un modèle de machine learning ne prend que des valeurs numériques en compte, il faut donc un moyen pour transformer ton message en valeurs numériques. C'est là où le NLP entre en jeux, il va servir à transformer les "mots" ou "phrases" en vecteur numérique (vectorisation).

Il y a plusieurs librairies qui te permettent de faire ça, personnellement j'utilise NLTK : https://www.nltk.org/  car c'est simple et efficace.

Pour le modèle lui même, Tensorflow ou Scikit-learn sera très bien. Personnellement je préfère Scikit-learn car c'est une API de vraiment haut niveau (donc facile d'implémenter les modèles pour du prototypage rapide) et qui possède beaucoup de choix de modèle (contrairement à Tensorflow qui est spécialisé dans les réseaux de neurones).

-------------------------------------------

En bref, je te conseille :

1) De te former sur le machine learning (si tu ne t'y connais pas).

2) De te former sur Scikit-learn et/ou Tensorflow (fait 2/3 mini projets pour prendre en main).

3) De te former sur le NLP en général (savoir ce que c'est la "tokenization" etc...)

4) De te former sur NLTK pour mettre en pratique ce que t'as appris sur le NLP.

Une fois que c'est fait (et ça va prendre du temps) :

1) Tu créer une base de connaissance réponse (c'est à dire tes différentes réponses prévues)

2) Tu créer une base de connaissance question (avec beaucoup de variation pour une même question)

3) Tu créer ton modèle avec Scikit-learn ou Tensorflow

4) Tu entraîne ton  modèle avec X = tes questions (passées par NLTK pour la vectorisation) et Y = l'id tes réponses dans ta base de connaissance (ex: 1 = "Nous somme ouvert du lundi ...", 2 = "Notre politique de remboursement est ...")

5) T'as plus besoin de répondre manuellement à tes clients :), ton modèle va mapper les questions (sous forme de vecteur) vers les bonnes réponses.

Il faut garder en tête que cette approche est limitée aux réponses que t'as mis dans ta base de connaissance, c'est donc un problème de classification.

Pour un ChatBot plus évolué avec réponses non prédéfinies, c'est une toute autre histoire. Mais si t'arrive déjà à faire ça, tu pourra être fier de toi!

Si t'as des questions, hésite pas :) !

  • Partager sur Facebook
  • Partager sur Twitter

Try->Fail->Learn->Converge to success :{\displaystyle Q[s,a]:=(1-\alpha )Q[s,a]+\alpha (r+\gamma ~max_{a'}Q[s',a'])}