IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Free Pascal Discussion :

Création d'une (pseudo) conversation artificielle


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 47
    Par défaut Création d'une (pseudo) conversation artificielle
    Bonjour à tous,

    Voilà, je suis débutant (et le mot est faible), c'est-à-dire que je connais juste les bases (writeln; readln; if then else; for to do ) et pas vraiment plus; pour vous situer mon niveau, le programme le plus complexe que j'ai fait, c'est un programme de calcul de moyenne avec coef tout simple
    et j'aimerais essayer de créer un programme de questions-réponses
    du genre (et je sais que ça ne marche pas mais c'est ce que je visualisais au départ).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    program conversation;
    var a : integrer;
    begin
     writeln('posez votre question');
     readln(a)
      begin
       if a=quel ages as tu then
        writeln('j ai 18 ans');
      if a=comment tu t appelles then
       writeln('je m appelle loupsio'); 
     end.
     else
      writeln('je n ai pas compris votre question posez la differemment');
    end.
    Sauf que je n'arrive pas à savoir comment faire pour comparer la phrase écrite par la personne ( donc appelée "a") et les phrases pré-enregistrées.

    Je suis conscient qu'il me manque sûrement plein de choses, sûrement même des erreurs qui vous paraissent simples mais je suis vraiment débutant, et je suis là pour en apprendre un peu plus

  2. #2
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour

    Que penses-tu avant toute chose de lire les tutoriels disponibles sur le site ?

  3. #3
    Membre très actif
    Avatar de joreveur
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 293
    Par défaut
    Bonjour,

    à mon avis si tu veux comparer une phase libre d'un utilisateur à des phrases pré-enregistrées tu n'es pas près d'y arriver car il y aurait trop de possibilités..

    Il vaut peut-être mieux que l'utilisateur choisisse dans une liste préétablie .. (question fermée ...)

    exemple sommaire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    program conversation;
    var rep,repfinale:string;
        flag:integer;
     
    begin;
      flag:=0;
      while flag=0 do
      begin
        Write('Tu as les yeux : bleus, verts ou noirs  ? ');
        readln(rep);
        if ((rep='bleus') or (rep='verts') or (rep='noirs')) then flag:=1;
      end;
      repfinale:=rep;
      //----------------
      flag:=0;
      while flag=0 do
      begin
        Write('Tu es un homme ou une femme ? ');
        readln(rep);
        if ((rep='homme') or (rep='femme'))  then flag:=1;
      end;
      //------------------
      repfinale:='tu es un(e) '+rep+' aux yeux '+repfinale;
      writeln(repfinale);
    end.
    je ne sais pas si ça peut t'aider ...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 47
    Par défaut
    (désolé krachik, c'est vrai que j'ai oublié mea culpa )

    pereirja,je n'ai pas testé ton exemple, mais si j'ai bien compris le pc pose la question (ici le pc demdande la couleur des yeux de l'utilisateur) et l'utilisateur y répond?
    moi j'aimerai faire l'inverse, l'utilisateur pose une question et l'ordi y répond

  5. #5
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour

    Si je comprend bien ce que tu veux faire, c'est de communiquer avec l'ordinateur, toi lui posant des questions, lui te répondant.

    Le moyen de plus simple et facile est celui que tu as commencé, et qui sera sans le plus long a coder parce que les conditions if vont s'enchainer. Ton code devrait donc etre de ce genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    program conversation;
       var question:string;
    begin
      writeln('posez votre question');
      readln(question);
     
      if (question = 'quel ages as tu') then
         writeln('j ai 18 ans')
      else if (question = 'comment tu t appelles') then
         writeln('je m appelle loupsio')
      else 
         writeln('je n ai pas compris votre question posez la differemment');
     
      readln
    end.
    Quand tu fais la comparaison, ça doit être string et string. Pour aller plus loin,tu peux stocker soit dans un fichier ou tableau les réponses possible de l'ordinateur suivant les questions posées et développer un algorithme de recherche et là on va rentre dans le vrai AI.

    Mais vu que tu débutes, il faut voir ce que tu veux obtenir

  6. #6
    Membre très actif
    Avatar de joreveur
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2010
    Messages : 293
    Par défaut
    bonjour

    la probabilité que l'utilisateur pose une question connue de l'ordinateur est bien faible... et la coparaison de chaines (strings) est assez ardue mais pas impossible.
    entre :
    Quel est ton nom ?
    Peux-tu me dire ton nom ?
    dites moi votre nom
    etc...
    sans parler du temps, de la grammaire, de la syntaxe...
    il faudrait repérer les mots clé et suggérer une question
    du style
    "peux tu me dire ton nom ?"
    l'ordinateur pourrait trouver le mot clé nom
    et re-proposer la question
    "Vous voulez savoir mon nom je suppose ?"
    et là l'utilisateur répondrait oui ou non et en fonction de sa réponse on continue...

  7. #7
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par pereirjo Voir le message
    bonjour

    la probabilité que l'utilisateur pose une question connue de l'ordinateur est bien faible... et la coparaison de chaines (strings) est assez ardue mais pas impossible.
    entre :

    sans parler du temps, de la grammaire, de la syntaxe...
    il faudrait repérer les mots clé et suggérer une question
    du style
    "peux tu me dire ton nom ?"
    l'ordinateur pourrait trouver le mot clé nom
    et re-proposer la question
    "Vous voulez savoir mon nom je suppose ?"
    et là l'utilisateur répondrait oui ou non et en fonction de sa réponse on continue...
    les jeux de rôles des années 80 s'en sortaient pas trop mal

    pour ceux qui ne connaissent pas, ce sont des jeux avec parfois une partie graphique en haut de l'écran et en bas la saisie des actions que le programme interprète


    bon ok, bien souvent le programme ne supportait pas une grammaire très évoluée "ouvre porte", mais quelques uns sortaient du lot pour interpréter des phrases comme "ouvre la porte verte avec la clé rouge"

    Quoi qu'il en soit il est assez bluffant de voir ce qu'on peut faire avec quelque recherche de mots

    "tu" -> et si on parlait plutôt de toi ?
    "femme" -> vaste sujet que les rapports entre hommes et femmes
    "argent" -> ne dit-on pas que l'argent ne fait pas le bonheur ?

    évidemment il ne sera pas possible d'avoir une conversation philosophique avec le programme (encore que), mais le dialogue ne sera pas forcément plus illogique que celui qu'on parfois deux êtres humains
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Réponses: 14
    Dernier message: 09/04/2004, 13h44
  2. [amc designer] création d'une base postgresql
    Par david42 dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 12/03/2004, 11h08
  3. Création d'une base avec IbConsole
    Par Lucien dans le forum Outils
    Réponses: 3
    Dernier message: 02/03/2004, 18h34
  4. création d'une batabse .gdb
    Par jejestyle dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/02/2004, 00h29
  5. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo