JeuWeb - Crée ton jeu par navigateur
Agent "intelligent" - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Agent "intelligent" (/showthread.php?tid=1711)

Pages : 1 2


Agent "intelligent" - SakuraKage - 03-09-2007

Bonsoir a tous,
Dans l'optique de mon site, j'aimerais crée un "agent intelligent"
Ce que j'aimerais plus précisement c'est qu'il puisse repondre a des question basic a l'aide d'une base de donnée.
Exemple :
ID => 1
Reponse => Je vais bien et vous ?
Question => Comment allez vous tu vas ?

Question posée => Comment tu vas ?

Ce que j'aimerais savoir faire c'est a analysé le texte et le decomposer en mot, exemple

Mot 1 = Comment
Mot 2 = Tu
Mot 3 = Vas
Mot 4 = ?

et d'aller chercher la reponse dans la base de donnée en analysant tout les resultat, exemple :

ID => 1
Reponse => Je vais bien et vous ?
Question => Comment allez vous tu vas ?

ID => 2
Reponse => Il est 16h
Question => Quel heure est il ?

Il faut que le programme fait les comparaison une a une par exemple
Question posée => Comment tu vas ?

Premiere analyse :
ID => 1
Comment = 1
Tu = 1
vas = 1
? = 1

Addition = 4

Deuxieme analyse :

ID => 2
Comment = 0
Tu = 0
Vas = 0
? = 1

Addition = 1

Dans se cas la le programme choisis l'ID 1 et affiche la reponse.

Déja pensez vous qu'il est possible de faire se genre de chose ? en théorie sa a l'air faisable.

J'aimerais vraiment avoir de l'aide la dessus car c'est un projet qui me tien vraiment a coeur mais je n'ai pas le niveau pour.

Merci d'avance pour votre aide.


RE: Agent "intelligent" - Batista69 - 04-09-2007

Salut

Tu pourrais faire une requete dans la BDD avec where par exemple :

SELECT * FROM tbl_question WHERE question="$quest";


RE: Agent "intelligent" - SakuraKage - 04-09-2007

Le probleme avec cet methode c'est qu'il faut que ca corresponde lettre pour lettre par exemple :

Comment va tu ?
et
Comment vas tu ?
et
Comment tu vas ?

son trois phrase differente pour la machine, et donc de cet facon la il faudrai codé un nombre incalculable d'evenement.

Alors que la methode que j'essaye de reussir a coder c'est un "explode" de notre question

--> Comment tu vas ?

donc explosé ca donne
Mot1 = Comment
Mot2 = Tu
Mot3 = vas
Mot 4 = ?

ensuite il faut que le code reussisse a exploser aussi ce qui se trouve dans "question" dans la base de donnée qui ressemble a :

"Comment tu vas va sa ca ?" et qu'il compte les occurence -->
Comment = 1
Tu = 1
Vas = 1
? = 1
D'additioner => 1 + 1 + 1 + 1 = 4

De faire la meme chose pour la phrase d'apres et ainsi desuite pour toutes les phrase dans la base de donnée.
Une fois que ceci est fait le programme doit comparer les calcul et afficher la reponse ou le plus de resultat correspond.


RE: Agent "intelligent" - naholyr - 04-09-2007

Tu n'arriveras de toute façon jamais à faire un analyseur lexicographique satisfaisant, comment répondras-tu à «comment allez-vous à l'heure qu'il est ?», si ton agent répond sans cesse «je n'ai pas compris votre question, merci de reformuler» ça va vite gonfler les utilisateurs Wink
Du coup tu seras obligé de mettre à côté − sous forme de liste déroulante par exemple − une liste des questions qu'il comprend. Et du coup ils n'utiliseront plus que ça car beaucoup plus pratique, et ton système sera sous-utilisé Wink

Ma conclusion : à moins d'un travail de titan, ou à moins que ça ne soit déjà fait, tu arriveras à un résultat mitigé, et soit quasiment inutilisable soit sous-utilisé. Ce qu'il faut que tu définisses d'entrée de jeu c'est la tolérance aux erreurs, afin que les joueurs soient au courant, parce qu'en plus aujourd'hui les trois quarts ne savent pas écrire «comment vas-tu» sans faute…


RE: Agent "intelligent" - SakuraKage - 04-09-2007

Pour l'heure c'etait un des premier exemple qui m'es passé par la tete, je sais qu'il ne pourra jamais repondre a cet question.

Mais en fait ce Bot sera utilisé comme un PNJ normalement donc il aura evidemment un panel de reponse assez limité, mais es necessaire pour l'imerssion dans le jeu.

et pour le "comment vas-tu ?" c'est tres simple

dans "question" dans la base de donnée il suffit de marquer

Comment tu vas va sa ca ?"

de cet facon

Comment va tu ?
Comment tu va ?
comment tu vas ?
Comment vas tu ?
Comment sa va ?
Comment ca va ?

seron tous interprété.


RE: Agent "intelligent" - Amrac - 04-09-2007

Je trouve que ta méthode est un peu difficile car tu va devoir 'essayer' de couvrir toutes les possibilitées. Autrement dit il te faudrait un numero unique pour chaque type de question, et si on dit 'Comment tu vas aujourd'hui?' on peut se retrouver sur une autre question qui vaut 5...

Je viens d'écrire un pavé pour expliquer une possibilitée de méthode, puis j'ai pensé a un schéma de base de données:

Je précise que le but est pour l'instant de répondre aux questions.
On a une table mot:
ID auto increment
Mot varchar 250.

Dans cette table, on met toute sorte de mots (sexe, parapluie, temps, chapeau, slipe).
Pour pouvoir répondre a des questions comme: "Aime tu le sexe? Fait-il beau? Comment tu vas?" il faut d'abord apprendre a ton programme s'il aime le sexe, si il connait le temps, et qu'il sache lui même comment il va.

Perso, j'essayerais d'associer chaque mot a des verbes.

De la sorte on aurait (plus ou moins) la table:
ID
Mot
Aimer Int
Faire Int
Avoir Int
Manger Int
... En bref, il faudrait avoir plus ou moins tout les verbes :/

Quand tu enregistrerais le mot sexe tu aurais par exemple:
ID: '' (auto increment)
Mot: 'sexe'
Aimer: 1 (ou false comme tu veux)
Faire: 0
Avoir: 0
Manger: 0
... Et pour chaque verbe, un oui ou un non.
Je conseil aussi de mettre par défaut la valeur -1, qui corresponderais a 'Je ne sais pas'. Ainsi quand tu rentre un mot, tu ne dois pas faire tout les verbes par oui ou non, mais tu peut laisser vide. (le programme est pas obligé de tout savoir des le début)


Ensuite, je pense qu'il faut différenciée la personne concernée.
J'ajouterais donc un sujet:
ID:
Mot:
Personne:
"....." (les verbes)
De la sorte, on sais si Michel aime le sexe ou s'il en a un.

Biensure, pour que le programme est du répondant, il faut qu'il est beaucoup beaucoup d'information.

Ensuite, on analyse les phrases:
-1 On a le ?, c'est bien une question
-2 Pour les questions simple, cela commence par un verbe, je propose dans un premier temps de pouvoir répondre aux questions du style: 'Verbe Sujet Mot'. Tu la sorte: Aime tu le sexe?

Je passerais par une phase d'analyse:
-Aime: Verbe aimer
-tu: Il s'agit du programme.
-le: connais pas, j'ignore.
-sexe: Mot.

Ainsi, on aurait quelque chose comme:
SELECT aimer from "TableDesMots" WHERE sujet='Agent Intelligent' AND Mot='sexe'
On obtient alors soit true: Dans ce cas on peut répondre par l'affirmative.
Soit false, le négatif,
ou soit -1, un simple 'Je ne sais pas'.

Mais un bon programme doit connaitre tout les verbes, les temps qui leurs son associé, les régles de grammaires etc etc ...
En fait, tu dois lui faire passer tout le primaire.


Je te conseillerais de t'orienté vers quelque chose de communautaire, le tout serait que lorsque le programme ne connais pas quelque chose, la personne qui pose la question est la possibilitée de lui apprendre ce que c'est.

Aprés, dans 2 ans, tu pourras intégrer le SMS Tongue


RE: Agent "intelligent" - Amrac - 04-09-2007

Le temps que je poste une réponse, vous en avez fait 2 ... Tongue


RE: Agent "intelligent" - Amrac - 04-09-2007

Désoler de faire 3 réponses a la suite, mais vue que vous avez écrit entre temps je suis amené a proposer autre chose.

Puisqu'il ne s'agit que d'un PNJ dans un jeu, et pas d'une IA 3éme génération, je propose d'opter pour une liste de question comme le propose Naholyr.

Par contre, a la place d'afficher une liste avec toutes ces questions, je pense qu'il serait sympa de laisser un simple champ vide remplie automatiquement par de l'ajax (comme les champs qui facilitent les recherches de pseudos/emails).

Ainsi le joueur débute sa question:
"Commen..." Hop, le programme propose déjà une série de question commencant par 'Commen....)

Ca donne l'impression que le programme prend le pas sur l'humain et anticipe ses questions Tongue


RE: Agent "intelligent" - Byleth - 04-09-2007

Ton système me parait demander énormément de ressource pour enfin de compte laisser un nombre de réponses limitées :
A la question "Comment vas tu?", si les joueurs reçoivent en permanence "Je vais bien merci", il vont vite être soulé et ne même plus la poser...


RE: Agent "intelligent" - SakuraKage - 04-09-2007

Je tiens d'abord a vous remercier pour vos reponse.

J'ai apres des heures et des heures de travail reussi a trouver comment on fait avec la methode que j'ai decrite ( comptage de mot )

Cet methode est amplement suffisante dans le cas d'un jeu ou l'IA est un PNJ.

Ne vous en faites pas vous saurez bientot ce que je prepare ^-^

Encore une fois merci de votre aide.