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

Langages fonctionnels Discussion :

Quel langage pour le Langage Naturel ?


Sujet :

Langages fonctionnels

  1. #21
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Points : 17
    Points
    17
    Par défaut Projet Généalogie de raisonnement en langage naturel
    Pour être concret, considérons le projet suivant de raisonnement en langage naturel dans le domaine de la Généalogie.

    Le programme doit accepter et assimiler toutes les phrases du genre:
    * Jean est le fils de Marc
    * Isabelle est la sœur de Marc
    * et la majeure partie des phrases décrivant une généalogie

    Le programme devra savoir inférer sur ces connaissances pour par exemple répondre "Isabelle" à la question "Qui est la tante de Jean ?"
    * et répondre à la majorité des questions possibles sur une généalogie

    Projet simple, bien défini, et qui utilise pas mal de fondamentaux.

  2. #22
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Points : 17
    Points
    17
    Par défaut
    On voit déjà poindre des subtilités comme:
    * Jean est le fils de Marc et Myriam => réclame la maitrise des noms masculins et féminins, pas bien compliqué (sans parler des ambiguïtés en cas de couple homosexuel avec mère porteuse)

    * John est l'oncle de Jean => comment va et doit réagir le programme face au fait que l'on ne sait pas si c'est du côté du Père ou de la Mère ? Le programme va-t-il l'ignorer et gérer cette ambiguïté ? Va-t-il poser la question pour lever l'ambiguïté ?

    Mais bon j'avais promis de ne pas me prendre le choux sur les cas particuliers sinon on n'y arrivera jamais, donc certes on considèrera ces cas particuliers parce qu'ils sont intéressants à aborder, mais on ne perdra pas de temps dessus.

  3. #23
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Points : 17
    Points
    17
    Par défaut Outils utilisés
    Je propose de réaliser le projet avec les outils suivants, d'abord le 1, et une fois bien avancé ensuite avec le 2:

    1) Prolog => je viens d'installer SWI-Prolog

    2) Protégé => je viens d'installer la v°4.3 avec GraphViz (pas de décision pour le raisonneur pour le moment)

    En parallèle pour le côté ludique je vais installer un générateur vocal (text to speech) et la reconnaissance vocale:
    * soit Dragon de Nuance qui fait les deux => je l'installe demain
    * soit la génération vocale avec Windows en ajoutant une voix française et avec yRead3, ou avec dSpeech, et la reconnaissance vocale avec un autre outil: vos conseils d'outil open source sont les bienvenus (CVoiceControl? Speaker? AVSR? CMU Sphinx?)
    * à moins qu'il soit plus judicieux de démarrer d'emblée avec un package de développement comme le Speech SDK de Microsoft, ou le Nuance NDEV Mobile Developer Program (mais a priori trop orienté téléphone portable) ? (à creuser)

  4. #24
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Hercule78 Voir le message
    Ceci dit, certains langages sont beaucoup plus pratiques que d'autres pour certaines choses (je me vois mal faire de la logique des prédicats en Logo des années 1970 ;o).
    Ben si! Il se trouve que j'ai justement écrit un moteur d'inférence d'ordre 1 en LOGO (en 1984)!

    Ceci dit, je me vois mal faire ce genre de chose en assembleur!

    Il y a quand même des langages de plus haut niveau que d'autres!


    En effet, reproduire l'intelligence humaine paraît ambitieux (le mot est faible), ce n'est pas mon propos, je comptais me limiter à l'intelligence d'un enfant de quelques années, et dans un domaine bien défini (circonscrit).
    Surtout dans les premières années de sa vie, un enfant éprouve son intelligence à travers son corps.
    Il passe une énorme partie de son temps à expérimenter pour comprendre et contrôler cette machine complexe (son corps et tous ses capteurs, ses émotions, son ressenti, etc.) ainsi que son environnement (ses parents, le monde extérieur, etc.).

    Peut-être faudrait-il partir de là?

    En d'autres termes: démarrer avec un outil le plus pratique possible qui puisse rapidement m'amener à me casser les dents sur ces difficultés. Je crois qu'il faut que je tâtonne, reprendre mes vieux travaux en Prolog, creuser Protégé, voir si Cogui/Cogitant apporte un plus, me souvenir de leurs limites puis les contourner.
    Lorsque j'ai le choix sur un projet, je prends le langage avec lequel je suis le plus à l'aise (en l'occurrence lisp).
    Il y a 20 ou 30 ans, pour gérer des listes, lisp et smalltalk étaient largement supérieurs aux autres langages.
    C'était vraiment la galère de gérer une simple liste en Fortran, Pascal ou C.
    Maintenant, tous les langages (java C++ etc.) ont des bibliothèques permettant de gérer efficacement les collections.
    Ce n'est donc plus un critère de sélection.

    Mon expérience (assez faible avec prolog) est que la puissance de son moteur fonctionne parfaitement pour des exemples simples (à base de parcours d'arbres, par exemple). Mais, dès que le problème est plus complexe, j'ai eu l'impression (peut-être fausse et due à mon manque d'expérience) que je devais plus me battre contre qu'avec le moteur prolog!

    Mais, si tu es suffisamment à l'aise, go for it!

    Bref, mon premier problème n'est pas la difficulté du sujet, c'est le manque de temps...
    Amha, il va en falloir un sacré paquet!

    et merci pour tes posts et les autres qui me motivent à aller de l'avant.
    Tiens-nous au courant de tes avancements! Ne serait-ce que de ton plan d'action!
    Et bon courage!

  5. #25
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Points : 17
    Points
    17
    Par défaut Langage pour le traitement du langage naturel
    Trois ans déjà depuis le dernier post, et 7 ans depuis le premier ! Je vous tiens au courant du peu de progrès réalisé (par manque de temps):
    Au-delà du fait que tous les langages conviendront, vu que tous disposeront à peu près d'un parser et d'un solver, mon choix du langage ira vers Haskell, ou Javascript.

    Sauf que voyant les années qui s'écoulent, si j'ajoute l'apprentissage d'un nouveau langage, je vais continuer à piétiner, donc je me demande si le plus intelligent ne serait pas -et certains d'entre vous me l'avaient dit- de garder Prolog pour le moment, que je connais, pour apporter des résultats rapides et motivants en reprenant mes travaux des années 1990...ces résultats m'inciteront à libérer plus du temps. Après, basculer sur un autre langage moins coincé que Prolog ne sera pas une grosse difficulté.

    Entre-temps j'ai creusé la création de chatbot sur Messenger en javascript avec wit.ai: cette détection d'intention dans des phrases approchantes de celles enseignées au système ne correspond pas du tout à mon projet.

    En Prolog open source je n'avais trouvé en 2014 que SWI-Prolog, c'est bien ma seule option aujourd'hui en Prolog ?
    Merci et bonne continuation à tous !

  6. #26
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Points : 17
    Points
    17
    Par défaut L'énigme d'Einstein
    J'oubliais: l'étape 1 de mon projet était de le limiter à la Généalogie, comprendre les phrases qui décrivent une généalogie, ensuite inférer de nouvelles connaissances (par ex si on sait qui est la soeur du père, alors on sait qui est la tante) et pouvoir les exprimer en langage naturel.

    Je suis tombé par hasard sur l'énigme d'Einstein: "L'anglais habite la maison rouge", "Le suédois possède un chien", etc, etc...Qui élève les poissons ?
    J'ai essayé de voir si mon système pouvait interpréter ces phrases en prédicats et résoudre l'énigme. La réponse est: presque (on achoppe par ex un peu sur la notion de "maison du milieu" même si l'on sait qu'il y a 5 maisons).
    Mais cela me conforte dans l'idée que ma démarche est plutôt bonne.

    Je garde donc ces 2 POCs: la généalogie et l'énigme d'Einstein.

Discussions similaires

  1. Quel langage pour le Langage Naturel ?
    Par Hercule78 dans le forum Intelligence artificielle
    Réponses: 38
    Dernier message: 10/05/2014, 02h38
  2. Débat : Quel est le meilleur langage pour coder en open-source ?
    Par Katleen Erna dans le forum Actualités
    Réponses: 15
    Dernier message: 17/08/2009, 10h54
  3. Quel est le meilleur langage pour la portabilité : Windows & Linux (voire Mac) ?
    Par iubito dans le forum Débats sur le développement - Le Best Of
    Réponses: 57
    Dernier message: 26/11/2007, 23h45
  4. Quels sont les meilleurs langages pour créer une application non-web (en local) ?
    Par Skeud007 dans le forum Langages de programmation
    Réponses: 11
    Dernier message: 31/08/2007, 16h33
  5. Réponses: 4
    Dernier message: 12/05/2007, 00h55

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