Aller au contenu


Photo
- - - - -

Un chatterBot qui "apprend"


2 réponses à ce sujet

#1 Doubrovski

Doubrovski

    Nouveau membre

  • Membres
  • 3 messages

Posté 19 mai 2014 - 02:27

Bonjour,

J'ai commencé depuis un moment un projet d'agent conversationnel, en ayant pour objectif de programmer un système comparable à de "l'apprentissage", du moins enregistrer dans certaines situations des informations venant de l'utilisateur.
L'interface est en javascript/jQuery et techniques Ajax, le moteur en PHP.

J'essaie de suivre certaines pistes afin de trouver un compromis :
→ analyse lexicale : lemmatisation,
→ analyse syntaxique : nature des mots et attribution d’une catégorie grammaticale,
→ analyse sémantique : utilisation de « synsets » à la Wordnet (Synonym Set) pour attribuer des sens à des mots,
→ utilisation de la phonétique pour palier aux problèmes orthographiques
→ algorithmes de recherche dans un arbre, neurones formels, algorithmes génétiques, systèmes mutli-agents… etc
→ mimer l'utilisateur (réutiliser des questions/réponses)
etc

Le but est d'opter pour un compromis, un système qui s'inspire d'une technologie prometteuse, tout en restant simple.

Mes plus gros problèmes :
-organiser le déroulement du code, l'ordre des phases d'analyse et de calcul
-organiser la BDD ? (mots, lemmes, réponses, questions, sujets, concepts, synonymes, mots à remplacer...). comment stocker le moins de choses possible ?

Pour l'instant ma piste principale est de privilégier la méthode de sélection d'une réponse, plutôt que de compter entièrement sur des contenus en base de donnée. Autrement dit, une fois qu'on a sélectionné toutes les réponses qui correspondent aux mots clés de la question, on utilise un algorithme génétique pour les départager. C'est déjà beaucoup plus évolutif qu'un simple lien entre mot clé et réponse. Reste a définir ce qui fait la valeur d'un mot d'une phrase (ex sa présence dans la base de donnée).

Je viens donc vous demander conseil. J'imagine que sur ce forum, vous avez déjà des avis sur les méthodes à employer, ou sinon, connaissez vous des bons ouvrages compréhensibles qui vulgarisent un peu la discipline ?

Merci !
  • Doubrovski aime ceci

#2 flx

flx

    Nouveau membre

  • Membres
  • 1 messages

Posté 03 juillet 2014 - 09:18

Bonjour Doubrovski,

Les chatterbots qui apprennent est un vaste sujet !

Avant même d'apprendre, il faut pouvoir répondre correctement. Ce qui sous-entend de faire une analyse des phrases en entrée :

1 - une simple recherche sur des mots clés ne suffit pas, on arrive souvent à des contre-sens
[Comment distinguer le verbe sourire (conjugué à la première personne du singulier, je "souris"] du nom commun la "souris" ?]
2 - une recherche plus compliqué avec des structures de phrases à trou, mais cela oblige à avoir une liste de phrases canevas très importante.

3 - faire une analyse lexicale, syntaxique, sémantique; pour déterminer le sujet, le verbe, les compléments, ....
C'est la solution qui me semble la plus adaptée pour espérer aller plus loin dans la recherche de réponses adaptées, mais cela demande beaucoup d'efforts au départ.


Si tu choisis de faire le traitement de type 3, pour continuer, il me semble ensuite qu'il faut comparer ces informations (sujet, verbe, compléments)
avec un réseau sémantique (cela reste mon avis perso, il y a surement d'autres solutions ).
Et dans ce cas, tu vas avoir à mettre en oeuvre des algorithmes de recherche dans un arbre, .... Tu peux même envisager d'ajouter des relations
dans ton réseau sémantique en fonction des phrases de l'utilisateur (ça c'est la phase d'apprentissage, qui va te permettre d'étendre tes connaissances).

Pour les réponses, tu peux choisir un système automatique, ou faire le processus inverse : sélectionner un sous-ensemble de ton réseau sémantique comme réponse,
le traduire sous forme de phrase en choisissant un sujet, un verbe, ...

Je ne sais pas si ma réponse est utile, le sujet est vraiment très vaste avec une multitude de solutions possibles.

#3 Doubrovski

Doubrovski

    Nouveau membre

  • Membres
  • 3 messages

Posté 17 juillet 2014 - 09:47

Merci pour cette réponse, je n'y croyais plus, c'est un peu mort ici :)/>

Depuis j'ai testé plusieurs pistes pour finalement me lancer dans un système de "phrases à trous", phrases "fonctions", à l'aide d'expressions régulières. Ça fonctionne, mais il faudrait beaucoup plus de modèles pour que ce soit intéressant...
Je suis à un stade où je ne peux plus continuer sans l'aide de bases de données énormes, qu'il s'agisse de dictionnaire, synsets, ou autre moyen de donner du sens à des mots...
Je pense que je vais m'en tenir là, je n'ai pas vraiment l'intention d'y consacrer ma vie compte tenu de ce que ça peut apporter en retour. Au final la plupart des chatBot sont frustrants et n'occupent l'attention des utilisateurs que quelques instants. C'est passionant de s'intéresser à l'IA ou au TALN... mais le niveau de recherche est aujourd'hui très élevé, on ne peut pas arriver à grand chose seul avec du PHP.



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users