Vous êtes sur la page 1sur 3

Algorithme morphologique de Pitrat

December 8, 2009

Prsentation gnrale e e e

Comment programmer lalgorithme morphologique de Pitrat en CAML? Dans ce dcument, il ne sera question que de la gnration des formes chies. e e e Rappelons le fonctionnement gnral de lalgorithme1 . e e Lalgorithme sappuie sur trois chiers de racines, de conjugaisons et de terminaisons. Ces trois chiers utilisent un format de donnes particulier. e * chier des mots nom_du_mot sa_conjugaison suite_ordonnes_de_racines e TENIR, VENIR, TIEN, TEN, TIENN, TIN, T^N. I * chier des terminaisons nom_de_terminaison VIP; VII; NMF; suite_de_terminaisons S,S,T,ONS,EZ,ENT AIS,AIS,AIT,IONS,IEZ,AIENT _,E,S,ES

* chier des conjugaisons : relations entre les racines et les terminaisons. nom_conjug [nom_gr1 suite_term] VENIR,IP,VIP,1,1,1,2,2,3 ; ARBRE,NOM-ADJ,NM,1,0,1,0 BALLE,NOM-ADJ,NF,0,1,0,1 AMOUR,NOM-ADJ,NMF,1,0,0,1 ... [nom_grN suite_term] II,VII,2,2,2,2,2,2; ...

Le fonctionnement gnral de cet algorithme peut se rsumer au schma suivant : e e e e


1 Pour plus de dtails sur lalgorithme de Pitrat, on peut consulter le livre de G. Sabah: Intelligence Articielle e te le Langage : Processus de comprhension, pp 25-35, Herm`s 1989 e e

Une solution
le chier des racines est une liste o` chaque lment est une liste de 7 lments : le premier u ee ee pour le verbe (tenir), le deuxi`me pour se conjuge comme (venir) et les autres sont les e direntes formes des racines "tenir";"venir";"tien";"ten";"tienn";"tin";"t^n" e let tenir_racines=["tenir";"venir";"tien";"ten";"tienn";"tin";"t^n"];; let venir_racines=["venir";"venir";"vien";"ven";"vienn";"vin";"v^n"];; let racines = venir_racines::tenir_racines::[];; le chier des conjugaisons est une liste o` chaque lment est une liste de 9 lments : le preu ee ee mier reprsente le se conjuge comme (venir), le deuxi`me pour le temps et le mode de cone e jugaison (ip pour le prsent de lindicatif), le troisi`me reprsente le nom des terminaisons, e e e de liaison avec le chier des terminaisons (vip) et les six derniers lments reprsentent les ee e indices des racines. let let let let venir_conjug_ip=["venir";"ip";"vip";"1";"1";"1";"2";"2";"3"];; venir_conjug_ii=["venir";"ii";"vii";"2";"2";"2";"2";"2";"2"];; venir_conjug_ps=["venir";"ps";"vps";"4";"4";"4";"5";"5";"4"];; venir_conjug = venir_conjug_ip::venir_conjug_ii::venir_conjug_ps::[];;

Nous avons choisi de stocker les donnes dans des listes de listes. Ainsi : e

le chier des terminaisons est une liste o` chaque lment est une liste de 7 lments : le u ee ee premier reprsente le nom des terminaisons (vip) et les six autres lments les terminaisons e ee ("s";"s";"t";"ons";"ez";"ent") let let let let vip_term = ["vip";"s";"s";"t";"ons";"ez";"ent"];; vii_term = ["vii";"ais";"ais";"ait";"ions";"iez";"aient"];; vps_term = ["vps";"s";"s";"t";"mes";"tes";"rent"];; terms=vip_term::vii_term::vps_term::[];;

Implmentation de lalgorithme e

Exercice 1: Ecrire une fonction get line racine de type (string list list -> string -> string list) qui renvoie une liste correspondante ` un verbe donn en argument. a e 2

get_line_racine racines "tenir";; - : string list = ["tenir"; "venir"; "tien"; "ten"; "tienn"; "tin"; "t^n"] Exercice 2: Ecrire une fonction get line conjug de type (string list list -> string -> string -> string list) qui renvoie une liste correspondante ` un verbe et un temps-mode de conjugaison donns en arguments. a e get_line_conjug venir_conjug "venir" "ip";; - : string list = ["venir"; "ip"; "vip"; "1"; "1"; "1"; "2"; "2"; "3"] Exercice 3: Ecrire une fonction get line term de type a (string list list -> string -> string list) qui renvoie une liste correspondante ` un mot de conjugaison donn en argument. e get_line_term terms "vip";; - : string list = ["vip"; "s"; "s"; "t"; "ons"; "ez"; "ent"] Exercice 4: Ecrire une fonction conjuger de type string -> string -> unit) qui ache les formes de conjugaison du verbe et du temps-mode donns en arguments. e conjuger "tenir" "ii";; tenais tenais tenait tenions teniez tenaient - : unit = ()

Vous aimerez peut-être aussi