Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonctionnement Eliza

3 janvier 2019 à 14:31:17

Bonjour, je suis actuellement entrain de chercher à recréer l' "IA" Eliza et j 'ai trouvé des codes sources sur le web mais j'aimerais me casser la tête moi même sans adapter un vulgaire code source dans mon langage.

Je me demandais donc si quelqu'un pouvait me donner, dans un langage humain, le fonctionnement de ce robot thérapeute car je n'ai pas trouvé son fonctionnement.

Amicalement,

Nhayku.

  • Partager sur Facebook
  • Partager sur Twitter
3 janvier 2019 à 17:05:05

C'est pas vraiment compliqué. Elle ne fait que récupérer les informations clef d'une phrase et les poser sous forme interrogative.

Si tu veux reproduire le même comportement, il faut s’intéresser au domaine "NLP" (traitement du language). Essaie de concevoir en premier lieu des petites fonctions qui récupère par exemple les "adjectifs" ou "verbes" d'une phrase, des API existent déjà ;).

Ensuite essaie de faire une IA basique de synthétisation de texte (résumé). Et ensuite, tu récupère cette synthèse et tu la mets sous forme interrogative. 

Et quand c'est flou, mets juste "Dis m'en plus..." comme Eliza x).

-
Edité par WorstDevEver 3 janvier 2019 à 17:06:37

  • 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'])}

3 janvier 2019 à 20:06:50

Merci pour ta réponse !

Dans un premier lieu cela voudrait dire d'analyser la question de l'utilisateur et de comparer la saisie avec un tableau de verbes ou adjectifs et voir s'il y'a correspondance ?

Parce que dans le cas où c'est ce que tu entends, je ne vois pas comment faire autrement que "si l'utilisateur dit ca, alors reponds ca sinon "dis m'en plus" " à savoir une vieux switch infini pas propre de centaines de proposition ?  

-
Edité par Nhayku 3 janvier 2019 à 20:17:36

  • Partager sur Facebook
  • Partager sur Twitter
7 janvier 2019 à 9:02:20

Non, il n'y a rien à coder en "dur" niveau questions/réponses (enfin très peu).

Tout provient du contexte de la phrase. En fait, il n'y a aucune "intelligence" dans le sens strict du terme.

Dans la phrase "je suis psychologiquement malade", nous avons un sujet "je", un verbe "être" conjugué, un adverbe "psychologiquement" et un adjectif "malade". 

Maintenant, t'as des API, comme "NLTK" en python, qui extrait toutes ces informations du texte. 

Chaque mot va être compartimenté et étiqueté (et oui, 90% du boulot est déjà fait, pour cela que python est magique).

Tu prend donc n'importe quelle phrase, et tu la tourne de façon interrogative.

pourquoi/comment/etc : + input sujet + input verbe + input adverbe + input adjectif.

Il faut juste faire un mappage "je" => "es-tu" dans la question, "tu" => "suis-je".

Et ça nous donne : pourquoi es-tu psychologiquement malade?

Je te donne ici un exemple simpliste, bien évidement Eliza est plus complexe, dans le sens ou il faut rajouter de la profondeurs dans les questions. En rajoutant des morceaux de phrases pré-conçues du genre "pense-tu être la cause de : input adjectif en format nom (malade => maladie)". Encore une fois, me semble-t-il, NLTK permet à partir d'un mot "malade" d'avoir son nom (malade) etc...

Le point important est : ne pense pas que Eliza "comprend" ce que tu dis, c'est juste du traitement de langage. Donc une fois de plus, étudie le "NLP", et tu comprendra tout seul ^_^ .

(Hésite pas si t'as d'autres questions).

-
Edité par WorstDevEver 7 janvier 2019 à 9:13:11

  • 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'])}