18

Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

Génération automatique de textes en langue naturelle

Pierre TAKLA

11 mai 2011

LIG 1 : équipe GETALP 2

Encadrant : François Portet

1 Introduction

La génération automatique de textes en langue naturelle (GATLN ) est une branche duTraitement Automatique des Langues Naturelles (TALN ). Elle a pour but la conception delogiciels capables de produire un texte compréhensible et adapté à la tâche et à l'utilisateur [15].Ces logiciels prennent en entrée des informations non linguistiques. Par exemple ils peuventprendre des données météorologiques (température, mouvement des nuages) ou des donnéesmédicales (dates des interventions, problèmes, thérapies).Et en sortie, ils peuvent produire undocument, un rapport, des explications, des messages d'aides et encore bien d'autres types detextes [3]. Le logiciel a besoin de connaître la langue à traiter et le domaine d'application.En e�et, une langue est tellement vaste et riche en possibilité, qu'il est aujourd'hui impossiblede concevoir un système indépendant des domaines d'applications. Ainsi, un des domaines deprédilection de la GATLN est la météo (cf. Figure 1 page 2). Ce domaine a la particularitéd'être extrêmement présent dans l'industrie de la GATLN (généralement sous la forme de textesà trous complétés) tout en constituant un terrain extrêmement di�cile lorsque la taille et lacomplexité des concepts à générer augmentent.

1. Laboratoire d'Informatique de Grenoble : http://www.liglab.fr2. Groupe d'étude pour la Traduction/le Traitement Automatique des Langues et de la Parole : http://

getalp.imag.fr

1

Page 2: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

Figure 1 � Exemple d'utilisation réelle de SimpleNLG dans la météo.Le logiciel prend en entrée des données sur la prévision de la quantité de pollen en Écosse et donneen sortie une image représentative de ces données et un résumé qui contient les informationsconsidérées comme importante.

Voici d'autres exemples d'utilisation de la GATLN dans l'industrie :� Multimeteo [4] : système de prévisions météorologiques (fonctionne avec plusieurs langues)� SUMTIME [11] : donne un résumé des prévisions météorologiques� analyse des performances de moteurs [14]� et même dans le domaine de la �nance [1] réputée pour ses exigences

Plus récemment, ces techniques ont également été utilisées comme auxiliaires pour les utilisateursayant des besoins particuliers de communication [12] et en unités de soins intensifs pour aide àla décision [10] [9].Ainsi, la GATLN [2] permet :

� d'automatiser la production de document (bulletin météorologique, rapport d'expérience,lettres, ...)

� de présenter des informations d'une manière adapté à l'utilisateur (données médicales,aveugles, ...)

� d'aider à la prise de décision rapide� de synthétiser la parole (téléphone)� de se distraire (génération automatique de blague, d'histoire, de poésie, ...)� de faire bien d'autres choses encore ...

Page 2/18

Page 3: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

La GATLNdoit résoudre plusieurs problèmes [6] :� Quoi dire ?Il y a souvent une quantité importante de données à traiter. Toutes n'ont pas la mêmeimportance. Il faut donc extraire de ces données uniquement les informations les pluspertinentes.

� Comment le dire ?Une fois que l'on sait quoi dire, il faut le dire de manière compréhensible pour l'utilisateur�nal.

Il existe une grande profusion de systèmes de génération 3. Dernièrement, SimpleNLG 4 a étéproposé pour cette dernière tâche (comment le dire ?). SimpleNLG est un système de générationrelativement simple. Il a une couverture grammaticale assez faible, mais il ne nécessite pas uneconnaissance approfondie de la théorie syntaxique pour pouvoir être mis en oeuvre.

Exemple d'utilisation de SimpleNLG cette fois-ci dans le domaine médical : Le projet anglaisThe BabyTalk Project 5 sur lequel a travaillé l'encadrant de ce TER 6 (François Portet) [10]. Lorsde la surveillance des patients, des données graphiques sont produites en grandes quantités. Ledé� est donc de générer un résumé textuel à partir de données graphiques a�n de faciliter leursexploitations. A�n de consolider la terminologie utilisée par les di�érents modules d'analyse desgraphiques et de génération de texte, une ontologie a été créée. Elle oblige à �xer les concepts etpermet de raisonner. Le résumé comporte environ 20 évènements qui sont sélectionnés grâce à uncoe�cient d'importance. Celui-ci est attribué selon des informations expertes et des heuristiques.La génération du texte est faite avec SimpleNLG. L'évaluation a été faite sur place avec dupersonnel médical comme utilisateurs. SimpleNLG a donc fait ses preuves en tant que systèmede génération en langue anglaise.

Le but de ce TER est de modi�er SimpleNLG pour qu'il puisse e�ectuer dans une moindremesure la même chose en français. On peut alors se demander pourquoi partir d'un logicielanglais ? La France est-elle si reculée en terme de GATLN ? Tout d'abord, voici un bref résuméde la GATLN en France : Génération du langage naturel en France

La France a joué un rôle dans la communauté de la GATLN depuis ses débuts [5] et atoujours une communauté active dans ce domaine [3] [8]. La GATLN est rapidement passéedes laboratoires aux industries, par exemple Watch System Assistance 7 a développé le logicielEasyText 8. Cependant, la communauté française de la GATLN est actuellement relativementfaible. Les français sont souvent absents des grands événements de la GATLN (INLG 9 etENLG 10). En France, au sein même des conférences sur le TALN, la GATLN est souventdélaissée. Ceci est un signe indiquant que la France est peut-être en train de prendre du retarddans ce domaine, où de nombreux dé�s doivent être abordés, tels que la génération de documentsde grande taille et sur les moyens les plus e�caces de communiquer des informations sous formede texte à un lecteur.

Des équivalent de SimpleNLG existe en français 11 mais sont beaucoup plus compliqué à

3. Pour une liste exhaustive des systèmes de génération : http://www.nlg-wiki.org pour une liste exhaustive4. Page du projet SimpleNLG : http://code.google.com/p/simplenlg/5. The BabyTalk Project : http://www.csd.abdn.ac.uk/research/babytalk/)6. Travail d'Étude et de Recherche7. Watch System Assistance est une société française : http://www.watchsystance.com/8. EasyText est un logiciel d'écriture automatique de commentaires en français à partir de tableaux de chi�res

sur les investissements publicitaires.9. International Natural Language Generation Conference10. European Workshop on Natural Language Generation11. Le projet Genl : http://projects.haskell.org/GenI/

Page 3/18

Page 4: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

intégrer dans des logiciels.Toutes les notions de linguistiques utiles à la compréhension de cette article sont présentés

en annexe (cf. Annexe A page 12). Les notions fondamentales de la programmation orientéesobjet seront supposées connues. Celles-ci seront utiles pour comprendre une petite partie de cerapport (la partie justement intitulé "Orienté objet"), mais n'est pas nécessaire pour comprendrele reste du rapport.

2 SimpleNLG

SimpleNLG se présente sous la forme d'une API (application programming interface) Javaconçu pour faciliter la génération en langue naturel. Il a été initialement développé à l'Universitéd'Aberdeen (Département d'informatique). Il est important de comprendre que SimpleNLG estune bibliothèque (un ensemble de fonctions/méthodes mis à disposition de l'utilisateur) et nonune application à elle seule.

2.1 Fonctionnement interne de SimpleNLG

Comme le montre le schéma situé à la page page suivante, on peut distinguer 6 modulesprincipaux dans SimpleNLG :

Page 4/18

Page 5: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

Figure 2 � Fonctionnement interne de SimpleNLG

Page 5/18

Page 6: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

2.1.1 Module syntaxique

Le module syntaxique est utilisé pour construire la syntaxe du texte par la création dedi�érents types de proposition, (e.g. proposition nominal, proposition verbal, locution adjective).L'appel du module de réalisation sur ces éléments les remplacera par leurs formes de base(children -> child). Le module syntaxique contient également un certain nombre de typesénumérés pour représenter les caractéristiques particulières (sexe, mode, temps).

2.1.2 Module morphologique

Le module morphologique transforme les formes de base. Il gère la pluralisation et lechangement de temps. Par exemple, "Mary chases Charles." est au présent. Si nous voulionsle mettre au passé, le module de morphologie permettrait de transformer "chases" en "chased"de sorte que la phrase deviendrait "Mary chased Charles."

2.1.3 Module orthographique

Le module orthographique prend le texte de base et ajoute la ponctuation et la capitalisation.Par exemple, "the courier delivered the green bicycle to Mary" deviendrait "The courier deliveredthe green bicycle to Mary." La première lettre de la phrase est en majuscule et la phrase setermine par un point.

2.1.4 Module d'agrégation

Le module d'agrégation fait le lien entre les phrases, généralement par l'utilisation de �and�,�or� et �but�.

2.1.5 Module de réalisation

Le module de réalisation e�ectue essentiellement le lien entre les modules mentionnés ci-dessus. Elle fait appel à chaque module à tour de rôle pour produire le résultat �nal.

2.1.6 Module de formatage

Permet de produire un texte brut sous forme XML ou HTML.

2.2 Utilisation de SimpleNLG

On commence par charger un lexique (deux formats de lexique s'o�rent à nous : le XML etla base de données. Nous utiliserons uniquement le XML car un �chier XML est plus simple àmanipuler qu'une base de données). Ensuite, on peut commencer à "écrire" ce que l'on veut.On créer des noms, des adverbes, des verbes. On peut modi�er leurs propriétés (genre, nombre,temps, forme pronominale ...). Les propriétés dépendent évidemment du type de l'objet (cf.Annexe D page 15). On crée une phrase (Sujet, verbe et éventuellement complément). On peutmodi�er les propriétés de la phrase (forme interrogative, forme négative, forme passive, ...)

On crée ainsi plusieurs phrases.On relie les phrases entres-elles par des conjonctions (mais, ou, et, donc ...). On structure les

phrases (document, section, paragraphe, liste).On appelle le Module de réalisation (cf. Section 2.1.5 page 6) qui nous donne le résultat

attendu : un texte respectant toutes les règles de la langue anglaise (cf. Annexe B pour unexemple complet de code utilisant SimpleNLG page 13).

Page 6/18

Page 7: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

2.3 Le lexique

Comme vu précédemment, SimpleNLG utilise un lexique qui contient la connaissance de lalangue cible. La première étape pour faire fonctionner SimpleNLG en français est donc d'obtenirun lexique de la langue française utilisable par SimpleNLG.

2.3.1 Structure du lexique

De nombreuses bases lexicales existent, mais aucune n'est reconnue nativement parSimpleNLG. En e�et, le lexique doit avoir une forme particulière :

<lexicon >

<word>

<!-- word #1 -->

<base>eat</base>

<category >verb</category >

<id>E0024352 </id>

<present3s >eats</present3s >

<intransitive/>

<past>ate</past>

<pastParticiple >eaten</pastParticiple >

<presentParticiple >eating </presentParticiple >

<transitive/>

</word>

<word>

<!-- word #2 -->

</word>

<word>

<!-- word #3 -->

</word>

.

.

.

<word>

<!-- last word -->

</word>

</lexicon >

En réalité, le lexique ne doit pas contenir de commentaire( ce qui apparait en bleu et qui estcompris entre les balises "< !�" et "�>"). Mais à la place, on doit trouver les informations surle "word" comme pour le "word #1".

2.3.2 Amélioration envisageable de la structure du lexique

2.3.2.a Indication de la langue

Une amélioration envisageable serait d'indiquer dans la balise <lexicon> la langue etl'encodage 12 du lexique. Ainsi, la première ligne deviendrait pour un lexique anglais britannique :

12. Connaître l'encodage d'un �chier est nécessaire pour le décoder/lire. Pour le moment, SimpleNLG considèreque tous les �chiers sont encodés en UTF-8. Certaines langues ne peuvent être encodées en UTF-8.

Page 7/18

Page 8: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

<lexicon language=en_GB encodage=UTF -8>

et pour un lexique français (France métropolitaine) :

<lexicon language=fr_FR encodage=UTF -8>

Ainsi, SimpleNLG saurait immédiatement (le chargement du lexique étant la première étape)dans quelle langue il doit travailler.

2.3.2.b Propriétés di�érentes entre un lemme et ses formes �échies

Un autre problème subsiste, dans la représentation actuelle d'un "word", un lemme et sesforme �échies possèdent obligatoirement les mêmes propriétés. Mais dans un souci d'adaptabilitéaux autres langues, il est important de pouvoir di�érencier les propriétés d'une forme �échie despropriétés de la forme de base. Donc voici la structure que je proposerai pour le lexique :

<word>

<base>

<!-- Ensemble des propriétés du lemme -->

</base>

<inflectedWord >

<!-- Ensemble des propriétés de la forme fléchie #1

qui diffèrent avec celles de la forme de base -->

</inflectedWord >

<inflectedWord >

<!-- Ensemble des propriétés de la forme fléchie #2

qui diffèrent avec celles de la forme de base -->

</inflectedWord >

</word>

2.3.2.c Cohérence

On pourrait également s'interroger sur la pertinence de l'utilisation du mot clé word. Carce qui est compris dans cette balise représente bien plus qu'un simple mot. En e�et, cela régittoutes les formes �échies d'un lemme, ainsi que sa relation et son comportement avec les autreslemmes. On aurait donc préféré une balise lexicalEntry. De même, une balise lemmatizedFormserait préférable en lieu et place de la balise base. Mais ceci tient plus du détail qu'autre chose.

2.3.3 Conversion d'un lexique déjà existant

Nous allons donc transformer un dictionnaire existant pour qu'il soit reconnu par SimpleNLG.Notre choix s'est porté sur le Le�f 13 (Lexique des Formes Fléchies du Français) [13]. Ce dernierà l'avantage d'être bien fourni et sous licence libre LGPL-LR (Lesser General Public LicenseFor Linguistic Resources). Cependant, il est structuré d'une manière trop complexe pour un nonlinguiste et n'est pas assez documentéSagot2006. En e�et, ce dictionnaire semble être destinéaux linguistes et est incompréhensible pour la plupart des gens (dont je fais partie) qui n'ontpas de connaissances particulières en linguistique. Voici un extrait du Le�f :

13. Page o�cielle du Le�f : http ://atoll.inria.fr/∼sagot/le�f.html

Page 8/18

Page 9: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

< 100 v [pred='précéder__1<Suj:cln|scompl|sinf|sn,Obj:(cla|sn)>',@pers,cat=v,@PS3]

précéder__1 Default PS3 %actif

<- 100 poncts [] <-__1 Default %default

Nous avons donc tenté de contacter le créateur du Le�f (Benoît Sagot 14), mais malgré nostentatives répétées pour avoir plus d'informations nous n'avons jamais eu de réponse.

Nous avons donc tout simplement ignoré une grande partie du Le�f dans l'attented'une réponse de son créateur. Les éléments que nous avons "déchi�rés" et transforméspour qu'ils soient compréhensibles par SimpleNLG sont uniquement les points essentielssuivants : Verbe : mode, temps, personne (1°,2°,3°), singulier/pluriel, intransitif/transitif (direct-indirect) Nom propre : genre (masculin/féminin), nombre (singulier/pluriel) Nom commun :genre (masculin/féminin), nombre (singulier/pluriel) Nous avons donc totalement délaissé lesexpressions, adverbes, pronoms et bien d'autres car le déchi�rement du Le�f nous a déjàtrop retardés. De plus, les quelques données déjà déchi�rées sont su�santes pour avancer avecSimpleNLG. Voici donc un exemple de nom propre du Le�f que nous avons mis en forme pourplus de clarté et en partie "déchi�rés".

France 100 np [pred='France_____2<Suj:(sn)>',@loc,cat=np,@fs]

France_____2 Default fs %default

� France : le lemme

� np indique qu'il s'agit d'un nom propre

� pred='France_____2 indique son lemme d'origine

(ici c'est lui même, il ne s'agit donc pas d'une forme fléchie)

� @loc indique qu'il s'agit d'un lieu, d'une localité

@fs : féminin singulier

Remarque : Le ____2 permet de di�érencier un lemme d'un autre lemme qui possède lamême orthographe (par exemple France le pays et France le prénom).

Comme on peut le voir, il y a beaucoup de donnés que nous n'arrivons pas encore àcomprendre, mais pourtant, on en comprend assez pour continuer.

2.4 Adaptation à d'autres langues

SimpleNLG possède une couverture grammaticale uniquement destiné à produire un texteun anglais (cf. Annexe C page 14). Bien que peu étendue, elle su�t la plupart du temps. Noussouhaitons donc mettre à pro�t les capacités de SimpleNLG en le modi�ant pour qu'il puisseproduire un texte en français.

2.4.1 Problèmes de conception

Une analyse du code source de SimpleNLG révèle plusieurs biais de conceptions quiapparaissent comme un gros obstacle à son adaptation à d'autres langues. Or un des développeursde SimpleNLG (Albert GATT) souhaite adapter SimpleNLG à sa langue natale (le maltais).Ainsi, SimpleNLG sera certainement amené à fonctionner avec d'autres langues dans le futur.Donc au lieu de simplement modi�er le code pour le faire fonctionner en français, nous allonsproposer des solutions pour résoudre les problèmes de conceptions. Solution que les développeurs

14. Benoît Sagot : chercheur en TAL (traitement automatique des langues) à l'INRIA

Page 9/18

Page 10: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

du projet décideront de mettre en place dans la version o�cielle de SimpleNLG ou non. Cecifacilitera grandement le travail futur de ceux qui veulent adapter SimpleNLG dans une autrelangue.

2.4.2 Orientée Objet

L'API fournie par SimpleNLG est codé en JAVA. JAVA est un langage orienté objet. Unebonne programmation orientée objet suppose l'application de principes qui n'ont pas été toutle temps respectés ici [7]. Le plus grand problème de conception est certainement l'utilisationà outrance de l'opérateur instanceof (cf. Annexe F page 17). Son utilisation rend di�cile lacompréhension de la structure du code et prouve justement qu'un gros problème existe surcette structure. Un moyen de régler ce problème serait une meilleure utilisation de l'héritage.Ainsi, dans l'exemple donné en annexe, il faudrait pour chaque instanceof de NLGElement,redé�nir la méthode realise. Ainsi, la méthode donnée en annexe s'écrirait en une uniqueligne : element.realised() . Et surtout, le code serait beaucoup moins déroutant et plus facileà comprendre (et donc à modi�er). Il existe plusieurs cas comme celui là dans SimpleNLG.Corriger l'ensemble de ces biais de conceptions demandera beaucoup d'e�ort aux développeurs,mais à mon avis, en vaut largement la peine.

2.4.3 Les pronoms

Les pronoms sont gérés par un tableau à 3 dimensions (cf. Annexe E page 16). Ainsi, lespronoms sont codés "en dur" (hard-coded). Il serait préférable de les mettre dans un �chierexterne (typiquement un �chier XML qui ressemblerait au �chier XML du lexique). De plus, lecode possède encore des pronoms codés en dur qui ne font même pas appel au tableau. Encoreun raccourci de conception.

2.4.4 En dur

Plusieurs lemmes (autres que les pronoms) sont également codés en dur. Il en va de mêmeque le comportement par défaut des lemmes comme par exemple de rajouter un 's' à la �nd'un verbe pour le mettre à la troisième personne du singulier (en anglais). Les développeursdécrivent eux-mêmes ce procédé comme une "quick-and-dirty routine for getting morph variants.It should be replaced by something better !" 15. Ce que nous leurs proposons de faire, est d'inclureégalement ces règles dans le �chier XML avec les pronoms.

2.4.5 D'autres défauts

D'autres défauts de conception sont présents dans SimpleNLG mais ne gênent pasdirectement son adaptation à d'autres langues. De plus, les développeurs sont déjà aux courantsde la plupart de ces défauts qui sont donc amenés à disparaitre dans les prochaines versions.

2.4.6 La documentation du code

Les développeurs de SimpleNLG ont fourni beaucoup d'e�ort pour que leur logiciel soit leplus simple possible pour les utilisateurs �naux. En e�et, il existe une bonne documentation etun tutoriel 16 assez complet et simple à comprendre expliquant comment utiliser SimpleNLG. Enrevanche, l'intérieur de la bibliothèque SimpleNLG n'a pas forcément été aussi soignée. Ceci rend

15. méthode rapide et sale pour obtenir des variantes morphologiques. Devrait être remplacé par quelque chosede mieux !16. Tutoriel de SimpleNLG : http://code.google.com/p/SimpleNLG/wiki/Tutorial

Page 10/18

Page 11: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

très di�cile ma tâche. De plus, aucun commentaire n'est présent dans l'ensemble du code (ouquelques rares commentaires destinées aux développeurs eux-mêmes et que seuls eux peuventcomprendre).

Au moment de développer leur logiciel, les développeurs ne pensaient certainement pasque celui-ci aurait un tel succès. De ce fait, de mauvaises habitudes de développement se sontinstallées rendant di�cile la tâche des intervenants extérieurs (comme moi). C'est un biais biencourant en recherche où les logiciels qui évoluent très rapidement sont peu maintenus et ne sontpas à visée commerciale. C'est pourquoi les développeurs devraient fournir un e�ort particulierà mieux documenter le fonctionnement interne de leur bibliothèque. De manière générale, leslinguistes (que ce soient les développeurs de SimpleNLG ou le créateur du Le�f ) devraients'ouvrir au reste du monde, a�n que nous puissions les aider dans leurs tâches. En e�et, ledomaine de la génération automatique en langue naturel intéresse de plus en plus de monde. Ilserait dommage de ne pas en pro�ter.

3 Conclusion

Pour faciliter l'utilisation de SimpleNLG dans une autre langue, il est nécessaired'externaliser du code toutes les informations relatives à la langue dans un �chier à part. Ainsi,on pourrait facilement imaginer un unique logiciel fonctionnant avec une multitude de langues.En e�et, il su�rait que le lexique indique la langue cible. Ensuite, en fonction de la langue,SimpleNLG utilisera le �chier approprié.

La di�culté réside dans la construction de ce �chier de con�guration et de son analyse parSimpleNLG. Autant il serait simple de le faire pour les lemmes, autant il serait plus compliqué dele faire pour dé�nir les règles des modules syntaxique et morphologique. Le module d'agrégationet orthographique devraient être assez simple à con�gurer tant les possibilités sont faibles dansce module. Quant aux modules de réalisation et de formatage, aucune con�guration ne devraitêtre nécessaire car ils utilisent uniquement les résultats des autres modules sans introduire derègles spéci�ques à la langue. Une perspective intéressante serait d'inventer un méta-langagequi permettrait aux linguistes de dé�nir les caractéristiques propres de leurs langues. Autant,cela semble réalisable pour les langues proches (langues latines par exemple), autant il seradi�cile de le faire fonctionner pour des langues d'origine très di�érentes (français et mandarin).L'élaboration de ce langage de con�guration doit évidemment se faire par des linguistes quidoivent au préalable étudier sa faisabilité. Des discussions sont en cours (avec Ehud Reiter etAlbert Gatt) pour étudier ce qu'il adviendra des remarques établies tout au long de ce document.

Personnellement, j'ai beaucoup apprécié travailler au LIG au sein de l'équipe GETALP.Bien que les thèmes abordés au GETALP sont très éloignés de ceux vers lesquels je souhaitem'orienter, ce TER m'a permis de me faire une idée concrète et personnel du travail dans unlaboratoire de recherche. Je tiens tout naturellement à remercier mon encadrant François Portet,mais aussi Ehud Reiter et Albert Gatt pour l'ensemble de leurs travaux et d'avoir été disponibleset ouverts à mes suggestions.

Page 11/18

Page 12: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

A Notions utiles

Pour la bonne compréhension de cette article, il est important de se mettre d'accord sur lesens de certains termes qui n'ont pas le même sens pour un linguiste que dans la vie courante.Surtout que certains termes sont employés de manière très variable même parmi les linguistes.

Mot Point de vu d'un linguiste Sens courant

Agrégation Action de regrouper des éléments Concours de recrutement desprofesseurs de l'enseignementpublic d'État en France.

Lemme Le lemme est l'unité autonomeconstituante du lexique d'unelangue. C'est une suite de caractèresformant une unité sémantique etpouvant constituer une entrée dedictionnaire

Mot

Lexique Le lexique d'une langue constituel'ensemble de ses lemmes

Un lexique est un ensemble demots liés à un domaine

Grammaticale Qui respecte les règles de productiond'un énoncé propres à une languedonnée

Qui a rapport à la grammaire

Morphologie Étude de la forme des mots eninterne 17 ou en externe 18

Étude de la forme extérieuredes êtres vivants

D'autres termes de linguistique sont à connaître (certains le sont certainement déjà) dontvoici les dé�nitions 19 :

Mot Dé�nition

Dérivationlexicale

Elle permet de former de nouveaux mots à partir de lemmes auxquelson ajoute des a�xes. Par exemple, le pré�xe re- combiné avec lelemme donner donne le nouveau lemme redonner.

Forme �échie Les mots sous forme �échie comportent un radical et une ou plusieursdésinences. Les désinences sont les porteurs d'indications de nombreet de genre (pour les noms, adjectifs et déterminants), de personnes,de temps et de mode (pour les verbes). Ainsi, lisions est constituédu radical lis- issu du lemme lire, de la désinence temporelle i etde la désinence personnelle -ons tandis que rattes est lui formé parrat(radical) + te (féminin) + s (pluriel). La �exion ne crée pas denouveaux lemmes, au contraire de la dérivation lexicale.

Grammaire Ensemble des règles qui régissent le fonctionnement écrit et oral d'unelangue

Orthographe Manière d'écrire les mots correctementSyntaxe Partie de la grammaire qui dé�nit les relations entre les éléments

d'une phrase

17. L'étude des mots en interne rend compte des relations qui existe entre di�érentes formes d'un même lemme.18. L'étude des mots en externe rend compte des relations qui existe entre di�érents mots du lexique.19. Dé�nitions inspirées de http://getalp.imag.fr/homepages/schwab/pmwiki/pmwiki.php?n=Recherche.

Glossaire

Page 12/18

Page 13: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

B Exemple d'utilisation de SimpleNLG

1 import simplenlg . framework . * ;2 import simplenlg . lexicon . * ;3 import simplenlg . realiser . english . * ;4 import simplenlg . phrasespec . * ;5 import simplenlg . features . * ;67 // load a l e x i c on8 Lexicon lexicon = new XMLLexicon ( " l e x i qu e . xml" ) ;9 // f a c t o r y based on l e x i c on10 NLGFactory nlgFactory = new NLGFactory ( lexicon ) ;1112 // c r e a t e s en t ence s13 // "John did not go to the b igge r park . He played f o o t b a l l the r e . "14 // c r e a t e an Noun15 NPPhraseSpec thePark = nlgFactory . createNounPhrase ( " the " , "park" ) ;16 // c r e a t e AdjP17 AdjPhraseSpec bigp = nlgFactory . createAdjectivePhrase ( " b ig " ) ;18 // use comparative form (" b igge r ")19 bigp . setFeature ( Feature . IS_COMPARATIVE , t rue ) ;20 // add adj as mod i f i e r in NP21 thePark . addModifier ( bigp ) ;22 // c r e a t e a Prepo s i t i on23 PPPhraseSpec toThePark = nlgFactory . createPrepositionPhrase ( " to " ) ;24 // s e t Prepo s i t i on ob j e c t25 toThePark . setObject ( thePark ) ;26 // c r e a t e sentence27 SPhraseSpec johnGoToThePark = nlgFactory . createClause ( "John" , "go" , toThePark ) ;28 // s e t t ense29 johnGoToThePark . setFeature ( Feature . TENSE , Tense . PAST ) ;30 // s e t negated31 johnGoToThePark . setFeature ( Feature . NEGATED , t rue ) ;3233 // c r e a t e a sentence DocumentElement from SPhraseSpec34 DocumentElement sentence = nlgFactory . createSentence ( johnGoToThePark ) ;3536 // below c r e a t e s a sentence DocumentElement by concatenat ing s t r i n g s37 StringElement hePlayed = new StringElement ( "he played " ) ;38 StringElement there = new StringElement ( " the re " ) ;39 WordElement football = new WordElement ( " f o o t b a l l " ) ;40 DocumentElement sentence2 = nlgFactory . createSentence ( ) ;41 sentence2 . addComponent ( hePlayed ) ;42 sentence2 . addComponent ( football ) ;43 sentence2 . addComponent ( there ) ;4445 // now c r ea t e a paragraph which conta in s these s en tence s46 DocumentElement paragraph = nlgFactory . createParagraph ( ) ;47 paragraph . addComponent ( sentence ) ;48 paragraph . addComponent ( sentence2 ) ;4950 // c r e a t e a r e a l i s e r .51 Realiser realiser = new Realiser ( lexicon ) ;52 NLGElement realised = realiser . realise ( paragraph ) ;53 // p r in t the r e s u l t : John did not go to the b igge r park . He played f o o t b a l l the r e .54 System . out . println ( realised . getRealisation ( ) ) ;

Page 13/18

Page 14: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

C Couverture grammaticale de SimpleNLG

Figure 3 � Couverture grammaticale de SimpleNLG

Page 14/18

Page 15: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

D Propriétés et valeurs disponibles dans SimpleNLG

Figure 4 � Propriétés et valeurs disponibles dans SimpleNLG

Page 15/18

Page 16: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

E Pronoms dans SimpleNLG

E.1 De�nition

1 /* Tableau a 3 dimensions o rgan i s e a i n s i :2 * [ S i n g u l i e r / P l u r i e l ] [ Po s s e s s i v e / Re f l e x i v e / Sub j e c t i v e /Object ive ] [ Gender/Person ]3 */4 @SuppressWarnings ( " n l s " )5 p r i va t e s t a t i c f i n a l String [ ] [ ] [ ] PRONOUNS = {6 { { " I " , "you" , "he" , " she " , " i t " } ,7 { "me" , "you" , "him" , " her " , " i t " } ,8 { "myse l f " , " y ou r s e l f " , " h imse l f " , " h e r s e l f " , " i t s e l f " } ,9 { "mine" , " yours " , " h i s " , " hers " , " i t s " } ,10 { "my" , "your" , " h i s " , " her " , " i t s " } } ,11 {12 { "we" , "you" , " they" , " they" , " they" } ,13 { "us" , "you" , "them" , "them" , "them" } ,14 { " ou r s e l v e s " , " you r s e l v e s " , " themse lves " , " themse lves " ,15 " themse lves " } ,16 { " ours " , " yours " , " t h e i r s " , " t h e i r s " , " t h e i r s " } ,17 { "our" , "your" , " t h e i r " , " t h e i r " , " t h e i r " } } } ;

E.2 Utilisation

Seule méthode où est utilisé le tableau des pronoms

1 /* Methode e f f e c t u an t l a morphologie des pronoms */2 pub l i c s t a t i c NLGElement doPronounMorphology ( InflectedWordElement element ) {3 String realised = nu l l ;4 i f ( ! element . getFeatureAsBoolean ( InternalFeature . NON_MORPH ) . booleanValue ( ) ) {5 Object genderValue = element . getFeature ( LexicalFeature . GENDER ) ;6 Object personValue = element . getFeature ( Feature . PERSON ) ;7 Object discourseValue =element . getFeature ( InternalFeature . DISCOURSE_FUNCTION ) ;8 i n t numberIndex = element . isPlural ( ) ? 1 : 0 ;9 i n t genderIndex = ( genderValue i n s t an c e o f Gender ) ? ( ( Gender ) genderValue )10 . ordinal ( ) : 2 ;11 i n t personIndex = ( personValue i n s t an c e o f Person ) ? ( ( Person ) personValue )12 . ordinal ( ) : 2 ;13 i f ( personIndex == 2) {personIndex += genderIndex ; }14 i n t positionIndex = 0 ;15 i f ( element . getFeatureAsBoolean ( LexicalFeature . REFLEXIVE ) . booleanValue ( ) ) {16 positionIndex = 2 ;17 } e l s e i f ( element . getFeatureAsBoolean ( Feature . POSSESSIVE ) . booleanValue ( ) ) {18 positionIndex = 3 ;19 i f ( DiscourseFunction . SPECIFIER . equals ( discourseValue ) )20 positionIndex++;21 } e l s e {22 positionIndex = ( DiscourseFunction . SUBJECT . equals ( discourseValue ) &&23 ! element . getFeatureAsBoolean ( Feature . PASSIVE ) . booleanValue ( ) )24 | | ( DiscourseFunction . OBJECT . equals ( discourseValue ) && element

25 . getFeatureAsBoolean ( Feature . PASSIVE ) . booleanValue ( ) )26 | | DiscourseFunction . SPECIFIER . equals ( discourseValue )27 | | ( DiscourseFunction . COMPLEMENT . equals ( discourseValue ) && element

28 . getFeatureAsBoolean ( Feature . PASSIVE ) . booleanValue ( ) ) ? 0 : 1 ;29 }30 /* Ut i l i s a t i o n i c i */31 realised = PRONOUNS [ numberIndex ] [ positionIndex ] [ personIndex ] ;32 } e l s e33 realised = element . getBaseForm ( ) ;34 StringElement realisedElement = new StringElement ( realised ) ;35 realisedElement . setFeature ( InternalFeature . DISCOURSE_FUNCTION , element

36 . getFeature ( InternalFeature . DISCOURSE_FUNCTION ) ) ;37 re turn realisedElement ;38 }

Page 16/18

Page 17: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

F Mauvaise utilisation de instanceof

1 pub l i c NLGElement realise ( NLGElement element ) {2 NLGElement realisedElement = nu l l ;34 i f ( element != nu l l5 && ! element . getFeatureAsBoolean ( Feature . ELIDED ) . booleanValue ( ) ) {67 i f ( element i n s t an c e o f DocumentElement ) {8 List<NLGElement> children = element . getChildren ( ) ;9 ( ( DocumentElement ) element ) . setComponents ( realise ( children ) ) ;10 realisedElement = element ;1112 } e l s e i f ( element i n s t an c e o f PhraseElement ) {13 realisedElement = realisePhraseElement ( ( PhraseElement ) element ) ;1415 } e l s e i f ( element i n s t an c e o f ListElement ) {16 realisedElement = new ListElement ( ) ;17 ( ( ListElement ) realisedElement ) . addComponents ( realise ( element18 . getChildren ( ) ) ) ;1920 } e l s e i f ( element i n s t an c e o f InflectedWordElement ) {21 String baseForm = (( InflectedWordElement ) element )22 . getBaseForm ( ) ;23 ElementCategory category = element . getCategory ( ) ;2425 i f ( t h i s . lexicon != nu l l && baseForm != nu l l ) {26 WordElement word = (( InflectedWordElement ) element )27 . getBaseWord ( ) ;2829 i f ( word == nu l l ) {30 i f ( category i n s t an c e o f LexicalCategory ) {31 word = th i s . lexicon . lookupWord ( baseForm ,32 ( LexicalCategory ) category ) ;33 } e l s e {34 word = th i s . lexicon . lookupWord ( baseForm ) ;35 }36 }3738 i f ( word != nu l l )39 ( ( InflectedWordElement ) element ) . setBaseWord ( word ) ;40 }41 realisedElement = element ;4243 } e l s e i f ( element i n s t an c e o f WordElement ) {44 InflectedWordElement infl=new InflectedWordElement ( ( WordElement ) element ) ;4546 f o r ( String feature : element . getAllFeatureNames ( ) )47 infl . setFeature ( feature , element . getFeature ( feature ) ) ;4849 realisedElement = realise ( infl ) ;5051 } e l s e i f ( element i n s t an c e o f CoordinatedPhraseElement ) {52 realisedElement = CoordinatedPhraseHelper . realise ( th i s ,53 ( CoordinatedPhraseElement ) element ) ;5455 } e l s e {56 realisedElement = element ;57 }58 }5960 i f ( realisedElement i n s t an c e o f ListElement ) {61 i f ( ( ( ListElement ) realisedElement ) . size ( ) == 1)62 realisedElement = (( ListElement ) realisedElement ) . getFirst ( ) ;63 }64 re turn realisedElement ;65 }

Page 17/18

Page 18: Génération automatique de textes en langue naturelle · 2011. 5. 25. · Génération automatique de textes en langue naturelle Pierre AKLAT 11 mai 2011 LIG 1: équipe GETALP 2

Références

[1] S. Ahmad, P.F.C Oliveira, and K. Ahmad. Summarization of multimodal information. InProc. of the 4th Int. Conf. on Language Resources and Evaluation, 2004.

[2] Bateman. Natural Language Generation : an introduction and open-ended review of thestate of the art. 2002.

[3] Bateman and Zock. Natural language generation : The oxford handbook of computationallinguistics. Oxford University Press, 2003.

[4] J. Coch. Génération multilingue de bulletins météréologiques : le logiciel multimeteo. InGAT-99, 2éme Colloque Francophone de Génération automatique de Textes, 1999.

[5] L. Danlos. Génération automatique de textes en langues naturelles. Paris, 1985.

[6] Laurence Danlos and Laurent Roussarie. Ingénierie des Langues, chapter La générationautomatique de textes, page 354 p. Traité IC2 (Information, communication et commande).Hermès, Paris, 2000.

[7] Jym Feat and Gilles Bernard. Langage naturel et intelligence arti�cielle. HistoireÉpistémologie Langage, 10(1) :161�170, 1988.

[8] C. Gardent and Y. Parmentier. Semtag, une architecture pour le développement etl'utilisation de grammaires d'arbres adjoints à portée sémantique. In TALN 2007, Toulouse,France, 2007.

[9] A. Gatt, F. Portet, E. Reiter, J. Hunter, S. Mahamood, W. Moncur, and S. Sripada. Fromdata to text in the neonatal intensive care unit : Using nlg technology for decision supportand information management. In AI Communications 22, 2009.

[10] F. Portet, E. Reiter, A Gatt, J. Hunter, S. Sripada, Y. Freer, and C. Sykes. Automaticgeneration of textual summaries from neonatal intensive care data. Arti�cial Intelligence,2009.

[11] E. Reiter, S. Sripada, J. Hunter, J. Yu, and I. Davy. Choosing words in computer-generatedweather forecasts. In Arti�cial Intelligence, 2005.

[12] E. Reiter, R. Turner, N. Alm, R. Black, M. Dempster, and A. Waller. Using nlg to helplanguage-impaired users tell stories and participate in social dialogues. In Proc. of the 12thEuropean Workshop on Natural Language Generation (ENLG-09), Athens, Greece, 2009.

[13] Benoît Sagot. The le�f, a freely available and large-coverage morphological and syntacticlexicon for french. In LREC, 2010.

[14] J. Yu, E. Reiter, J. Hunter, and C. Mellish. Choosing the content of textual summaries oflarge time-series data sets. In Natural Language Engineering, 2007.

[15] M. Zock and G. Sabah. La génération automatique de textes : trente ans déjà , ou presque.Langages, 26(106) :8�35, 1992.

Page 18/18