TP4- IFT3330 Traitements de la langue naturelle (à rendre avant midi le 13 décembre) Objectif Ce TP vise à vous familiariser avec les processus d'analyses de la langue naturelle, notamment, les analyses morphologique, syntaxique et sémantique. Problème Vous devez réaliser un mini-analyseur du "français" qui fait une analyse en trois étapes concernant respectivement: la morphologie, la syntaxe et la sémantique. Une analyse complète permet de transformer une phrase correcte en une représentation de son sens. Dans ce TP, on utilise la logique comme formalisme de représentation de connaissances. L'analyse morphologique doit pouvoir reconnaître les verbes réguliers du premier groupe (i.e., terminant par -er) conjugués à la troisième personne au singulier et au pluriel, et les noms au singulier et au pluriel. Syntaxe du sous-langage traité L'analyse syntaxique doit reconnaître au moins les phrases des structures suivantes: PH -> GN GV GN -> Det Nom (GP)* GN -> Nom_Propre GV -> Verb_trans GN (GP)* GV -> Verb_int (GP)* GP -> Prep GN GP -> Prep Nom Q -> est-ce que PH où (-)* indique un élément facultatif et qui peut se répéter. Traitements demandés Votre programme doit effectuer les 3 traitements suivants : 1. Traitement morphologique : Votre analyse doit comporte une phase d analyse morphologique, c est-à-dire d analyser la composition d un mot, d effectuer certaines transformations morphologiques, et de consulter le «dictionnaire» afin de connaître toutes les informations sur le mot en entrée. Remarquons ici que vous ne devez pas stocker dans votre dictionnaire toutes les formes de mots, mais seulement les formes «standard» comme montrées dans la liste de vocabulaire plus bas. 2. Analyse syntaxique : Votre analyse syntaxique doit accepter les phrases grammaticalement correctes (selon la petite grammaire définie ci-dessus). En plus, cette analyse doit aussi vérifier les accords en nombre et en genre.
3. Analyse sémantique : Cela consiste à transformer une phrase grammaticalement correcte en une représentation logique. Votre analyseur doit vérifier si la phrase est sémantiquement correcte. Elle ne doit pas réussir à interpréter les phrases non raisonnables comme "une machine mange jean". Pour cela, vous devez définir une hiérarchie des classes de concepts, et un ensemble de contraintes sémantiques, comme «l agent de manger doit être de la classe animé» et «l objet de manger doit être comestible». Vocabulaire Le vocabulaire du "français" minimal que vous devez traiter est le suivant: 1. Verbes: demander (transitif) donner (transitif) manger (transitif) marcher (intransitif) chanter (transitif et intransitif) 2. Noms propres jean marie claude 3. Noms pomme orange fruit personne etudiant (ou étudiant si vous permettez les accents) machine jus chanson 4. Déterminants un une des 5. Préposition a (pour la préposition à) de Exemples Voici quelques phrases qui doivent être reconnues par votre analyseur: 1. jean mange une pomme. 2. jean mange un fruit. 3. jean donne un fruit a marie. 4. jean marche. 5. jean demande une orange a marie.
6. des etudiants mangent des oranges. 7. claude demande un jus d'orange. 8. marie chante des chansons. Les représentations sémantiques créées doivent correspondre aux sens suivants. Cependant, les représentations sémantiques que votre programme produit peuvent être un peu différentes. En expression logique, vos résultats correspondraient aux expressions semblables aux suivantes (des variantes équivalentes sont aussi acceptées): 1. personne(jean), agent(jean, manger), objet(manger, X), pomme(x). 2. personne(jean), agent(jean, manger) objet(manger, X), fruit(x). 3. personne(jean), agent(jean, donner), objet(donner, X), fruit(x), receveur(donner, marie), personne(marie). 4. personne(jean), agent(jean, marcher). 5. personne(jean), agent(jean, demander), objet(demander, X), orange(x), receveur(demander, marie), personne(marie). 6. etudiant(x), agent(x, manger), objet(manger, Y), pomme(y). 7. personne(claude), agent(claude, demander), objet(demander, X), jus(x), constituant(x, Y), orange(y). 8. personne(marie), agent(marie, chanter), objet(chanter, X), chanson(x). Note : une représentation comme la suivante est aussi correcte : 1. personne(jean), manger(jean, X), pomme(x). Remarquez que les représentations suivantes ne sont pas tout à fait correctes en logique de prédicats, mais acceptables pour ce TP : 1. personne(jean), manger(jean, pomme). 2. manger(personne(jean), pomme). Pour simplifier le TP, on suppose que la préposition "de" représente toujours la relation "constituant", et la préposition "a" (ou à) représente la relation "receveur". Réponse aux questions Une fois des phrases sont entrées par l utilisateur, leurs représentations sémantiques sont stockées. Ces représentations correspondent aux «faits» connus. Elles sont ensuite utilisées pour répondre aux questions du type "est-ce que ". La réponse sera «oui» ou «non» selon si les faits saisis nous permettent de déduire une réponse affirmative ou non. Par exemple, une fois la première phrase exemple (jean mange une pomme) est entrée, votre programme doit répondre "oui" aux questions suivantes: "est-ce que jean mange une pomme" "est-ce que jean mange un fruit" La réponse à la deuxième question implique une déduction (une pomme est un fruit). Pour cela, il faut vous servir de la hiérarchie des classes de concepts mentionnée plus haut. Contre-exemples Voici quelques phrases qui doivent être rejetées par votre analyseur, parce qu'elles sont soit syntaxiquement, soit sémantiquement incorrectes: 1. une pomme mange jean. (problème sémantique)
2. jean donne marie a claude. (problème sémantique) 3. une pomme marche. (problème sémantique) 4. jean demande. (problème syntaxique - verbe transitif) 5. jean marche une pomme. (problème syntaxique) 6. des etudiants manges des machines. (problème syntaxique) 7. jean mange un pomme. (problème syntaxique - accord en genre) 8. jean mange une pommes. (problème syntaxique - accord en nombre) Conventions pour votre programme On vous demande de définir les prédicats suivants : analyse(rep_sem, S1, S2) : Ce prédicat analyse une phrase qui correspond à la différence entre S1 et S2, et produit une representation sémantique Rep_Sem. Par exemple, l appel analyse(rep_sem, [jean, mange, une, pomme], []) devrait produire (dans Rep_Sem) une liste similaire à [personne(jean), agent(jean, manger), objet(manger, X), pomme(x)]. interface : Ce prédicat lance une série de communications avec l utilisateur. L utilisateur est demandé à entrer une phrase ou une question sous forme de liste de mots. Il appelle ensuite le prédicat «analyse» pour produire la représentation sémantique correspondante. Si cette analyse est réussie, alors une représentation sémantique est stockée comme un fait acquis (dans le cas d une phrase affirmative) ou la question est répondue (dans le cas d une question). Ce cycle de communications recommence, jusqu à ce que l utilisateur entre le terme fin. À la place d une phrase ou d une question. Pour le stockage des faits saisis, on vous conseille d utiliser le prédicat «fait(rep_sem)». Les phrases et les questions que l utilisateur entre sont sous la forme de liste de mots. Par exemple : [jean, mange, une, pomme]. [est-ce, que, jean, mange, une, pomme]. Remise Comme pour les autres TP, vous devez soumettre un rapport avec votre programme. Dans ce rapport, vous devez décrire les différentes étapes des traitements, et comment ces traitements sont procédés. En particulier, il faut décrire la représentation sémantique choisie, et la façon de créer une telle représentation. Vous devez aussi discuter sur les analyses de langue naturelle, basé sur votre expérience de ce TP. La date limite pour rendre le TP est le 13 décembre, avant midi. Le rapport doit être remis (sur papier ou électroniquement) avant la même date limite. Critères d'évaluation 1. programme = 8 points: - 2 points pour chacune des analyses morphologique, syntaxique et sémantique (2 * 3) - 2 points pour la réponse aux questions (et inférence) 2. rapport = 2 points
3. Chaque jour de retard = 1 point de pénalité. Dans votre rapport, vous devez décrire brièvement votre réalisation (les 3 analyses et la réponse à une question). Si vous apporter des extensions à la grammaire ou au vocabulaire, vous devez décrire ces extensions dans le rapport. Finalement, on vous demande de discuter sur les problèmes de traitements de la langue naturelle à travers ce TP et les exemples que vous avez testés.