web-dev-qa-db-fra.com

Comment créer un chat-bot intelligent?

Je sais que c'est toujours un problème ouvert, donc je ne m'attends pas à voir des réponses complètes ici. Je veux juste trouver quelques approches pour résoudre le problème suivant:

J'ai un modèle (supposons que c'est la mémoire du bot), et différents mots sont associés à différents objets dans le modèle. Parler avec le bot, c'est comme exécuter des requêtes sql avec une base de données. La langue est un protocole formalisable très dur. Et nous ne pouvons pas simplement écrire un million de lignes de code pour implémenter un vrai langage. Mais je pense qu'il est absolument possible de mettre en place un mécanisme d'auto-apprentissage. Comment peut-il être mis en œuvre? Est-il possible de mettre en œuvre l'apprentissage "à partir de zéro" ou "à partir de quelques mots de base"? Je veux juste entendre vos idées.

En fait, l'anglais est une langue très stricte et c'est l'une des langues les plus faciles à expérimenter avec l'IA. De nombreuses autres langues vous permettent de changer l'ordre des mots (par exemple). Et dans certains cas, un ordre modifié peut changer le sens entier ou simplement ajouter une intonation. Je n'ai vraiment aucune idée de comment enseigner un bot à ces choses.

33
Roman

La première étape, en prenant ce jeu au niveau suivant, c'est ...

... pour avoir une vision très claire de l'art antérieur!

(et pardonnez-moi de dire que la question ne suggère pas que vous ayez un aperçu aussi approfondi de la question [et que vous n'êtes pas seul, comptez-moi ;-)])

Même, et peut-être en particulier, si votre intention est d'appliquer des techniques et des modèles complètement nouveaux, il semble important de passer en revue la littérature sur les pratiques actuelles et passées. En plus d'identifier éventuellement des éléments qui peuvent être adaptés ou réutilisés dans une nouvelle implémentation, une étude du domaine fournira une compréhension approfondie de la nature du problème [s].

J'ai personnellement essayé -à diverses et multiples occasions! - soit l'approche naïve soit l'approche sophomorique pour s'attaquer à des problèmes largement définis. Avec l'approche naïve, on n'a qu'une très légère idée de la véritable nature et de la portée du problème. Le sophomorique nous voit mieux équipés de connaissances de domaine et également d'outils connexes, mais cela peut aussi être trompeur car sans une compréhension plus approfondie, nous avons tendance à mal lire/mal comprendre le nouveau matériel qui nous est proposé et à abuser également de certains outils ( un peu comme le gars qui est "bon avec un marteau" pour qui beaucoup de choses ressemblent à un clou ...)

Il est particulièrement facile de commettre ces erreurs dans le domaine de la PNL. C'est parce que

  • Le bon sens semble être tout ce qu'il faut: après tout, un enfant, dont la langue maternelle est l'anglais, comprend des subtilités comme
    "Il est pas vraiment un expert"
    "Il est vraiment pas un expert"
    (petit clin d'œil à la référence du PO à la commande de Word en anglais)
  • Nous vivons à une époque passionnante, en termes de technologie et de connaissances: puissance de traitement, langage et outils de programmation, techniques mathématiques, disponibilité de corpus abordables ... pour ne nommer que quelques-unes de ces choses qui rendent ce moment dans le temps si spécial.

Loin de moi l'idée de vous décourager dans votre entreprise de chat-bot, j'espère juste que ce long et générique exposé encouragera à regarder avant de sauter, car cela vous fera vraiment gagner du temps à long terme, je pense deux façons:

  • vous fournir quelques cadres de références (encore une fois, même si votre intention est de "sortir des sentiers battus")
  • peut-être vous inciter à redéfinir le problème, par exemple en le limitant à des domaines particuliers de conversation (sport, santé, ou vie sur un campus universitaire particulier ...) ou en se concentrant sur un aspect particulier du problème (conscience sémantique, douceur , grammaire à consonance naturelle, utilisation de formes familières ...)

Bonne chance ;-)

22
mjv

Découvrez implémentation de MegaHAL pour quelques idées. Nous avons utilisé une variante de ce bot pendant des siècles dans une chaîne IRC de la nôtre, et il semble parfois être le mélange intelligent de plusieurs de nos personnalités dominantes.

8
Cory Petosky

Vous "entraînez" le bot - chaque fois que le bot répond, vous classez (ou le testeur) la réponse - si la réponse est bonne/logique - donnez un rang élevé, si la réponse est mauvaise ... un rang bas/négatif.

utiliser le classement à l'avenir pour choisir la réponse, et c'est ainsi que le bot apprend ...

6
Dani

Il y a une grande description de Eliza dans Paradigmes de la programmation de l'IA . Vous devriez pouvoir implémenter un simple bot Eliza en quelques jours de travail.

Ce n'est pas un algorithme d'apprentissage, mais il est surprenant de voir à quel point les réponses peuvent être réalistes à partir de quelque chose d'aussi simple.

4
Jeff Foster