Transfert en N étapes

From Apertium
Jump to navigation Jump to search

In English

L'idée d'un transfert en N étapes est d'étendre apertium-interchunk pour qu'il puisse "regrouper" des fragments, par exemple NP CC NP → NP

C'est quelque-chose comme l'idée de fragmentation d'états finis en cascade, comme décrit par Abney (1995).

Exemples

1. The girl with the telescope shouted at the boy who saw the dog in the field.

(La fille avec le télescope cria au garçon qui vit le chien dans le champ).

Le transfert courant basé sur des fragments devrait normalement fragmenter ceci en :

[The girl] [with] [the telescope] [shouted] [at] [the boy] [who] [saw] [the dog] [in]  [the field]
[La fille] [avec] [le telescope]  [cria]    [au] [garçon] [qui] [vit] [le chien] [dans] [le champ]
 NP         PREP   NP              V        PREP  NP        REL   V     NP       PREP    NP

C'est une analyse assez peu profonde, avec d'autres étapes de fragmentation, on pourrait unifier quelques uns de ces tronçons dans des phrases plus cohérentes. Donc par exemple la prochaine étape pourrait être d'unifier PREP NP → PP alors NP PP → NP, alors V NP → VP et ensuite NP REL VP → NP. Nous avons terminé avec une analyse plus "profonde" et cohérente qui pourrait ressembler à quelque-chose comme :

 The girl  with   the telescope    shouted  at    the boy   who   saw   the dog  in    the field
 La fille  avec   le telescope     cria     au    garçon    qui   vit  le chien  dans  le  champ
 DET NOM   PREP   DET NOM          V        PREP  DET NOM   REL   V     DET NOM  PREP  DET NOM    *
 NP        PREP   NP               V        PREP  NP        REL   V     NP       PREP  NP         (PREP NP → PP)
 NP        PP                      V        PP              REL   V     NP       PP               (NP PP → NP)
 NP                                V        PP              REL   V     NP       PP               (V NP → VP)
 NP                                V        PP              REL   VP                              (NP REL VP → NP)
 NP                                V        NP

Ça ne nous donnerait pas davantage de "pouvoir de transfert", comme les règles seraient encore à états finis, et non-récursives, mais ça rendrait certaines taches plus faciles. Probablement on n'atteindrait pas 5 niveaux d'inter fragmentation, mais même avoir un niveau de plus pourrait pas mal aider.

2. My country's largest shopping centres

Le transfert courant fragmente ceci en :

[My country]['s] [largest shopping centres] (les plus grands centre commerciaux de mon pays)
NP          GEN  NP

Une étape intermédiaire du transfert pourrait avoir une règle pour joindre NP + GEN + NP pour créer un simple fragment NP. Ça éviterait le gros travail consistant à spécifier dans la première étape les nombreuses combinaisons de mots différentes qui peuvent former un NP.

Dans cet exemple, la tête du nouveau NP serait le second NP d'origine, ce qui signifie que l'information morphologique du nouveau fragment serait que "largest shopping centres" (au pluriel) and non celui de "my country" (singulier). Cette information est importante pour que la prochaine étape du transfert (le module interchunk courant) puisse effectuer quelques opérations de concordance :

              [My country]['s] [largest shopping centres] [will prepare] (...)
 1st stage:    NP<sg>      GEN  NP<pl>                     V
 2nd stage:    NP<pl>                                      V
 3rd stage:    NP<pl>                                      V<pl>

Test implémentation


de	Jacob Nordfalk <jacob.nordfalk@gmail.com>
vers	Apertium-stuff <apertium-stuff@lists.sourceforge.net>
date	12. apr. 2009 02.51
sujet	Transfert 4 étapes expérimental introduit dans Apertium !
envoyé par	gmail.com
	
skjul detaljer 02.51 (2 minutter siden)
	
Svar
	
	
Cher tous,

J'ai prit la liberté d'ajouter le support pour le transfert simple en n étapes, en ajoutant 5 lignes simples de code à Apertium aujourd'hui.

Les lignes que j'ai ajouté à Apertium peuvent être vues ici :
http://apertium.svn.sourceforge.net/viewvc/apertium?view=rev&revision=9616

Basiquement, j'ai ajouté le support d'une nouvelle partie :

<clip pos="3" part="x_pgcontent"/>

qui donne le CONTENU A l'INTERIEUR d'un fragment.
donc à partir de ^adj_nom<SN><nom>{^granda<adj><sg><2>$ ^hundo<n><m><sg><2>$}$
on obtient ^granda<adj><sg><2>$ ^hundo<n><m><sg><2>$

Ça peut être utilisé pour regrouper des fragments.

Je vais mettre un exemple ici :
http://apertium.svn.sourceforge.net/viewvc/apertium?view=rev&revision=9613

Essayez
big black cat's nice blue eyes
belaj bluaj okuloj de granda nigra kato

<SN>{granda nigra kato} <GEN>{de} SN{belaj bluaj okuloj}    ->    <SN>{belaj bluaj okuloj de granda nigra kato}


Bien sûr, le nom part="x_pgcontent" est temporaire (eXpérimental) et ne devrait pas être comptabilisé,

Mais je vais vous demander de le laisser dans Apertium jusqu'à ce que quelqu'un fasse une sorte d'amélioration ('propre') du support du transfert en n étapes.

Comme la grammaire de l'Espéranto est simple, ce très simple support du transfert en n étapes est satisfaisant pour la plupart des taches (et peut réellement faire une grosse différence dans cette paire de langue).

Dans l'intervalle je vais l'utiliser pour améliorer la paire anglais-espéranto, et gagner de l'expérience au sujet du transfert en n étapes pour partager avec la communauté Apertium (et pour que vous l'essayiez, vous devez le mettre sur le svn d'apertium et l'installer avec le patch, bien sûr),

J'ai déjà identifié les problèmes suivants :

- Support des majuscules (Big black cat's nice blue eyes  -> belaj bluaj okuloj de Granda nigra kato)

- Support de référence de balise (une option pour décompresser les <2> et <3>).
  Ça ne devrait pas toujours arriver, comme il est quelquefois bon de garder les <2> et <3> et quelquefois non.
  Je peux donner quelques exemples là dessus sur demande.


Jacob

Exemple de travail

Dans la paire is-en :

spectie: Á morgun kemur maðurinn sem hann sá í gær.
spectie: ^Á morgun<ADV>{^tomorrow<adv>$}$ ^come<SV><@+FMAINV><pres><p3><sg>{^come<vblex><3><4><5>$}$ ^det_nom<SN><@←SUBJ><sg>{^the<det><def><3>$
         ^man<n><3>$}$ ^sem<REL>{^that<rel><an><mf><sp>$}$ ^prn<SN><@SUBJ→><p3><m><sg>{^prpers<prn><subj><p3><m><sg>$}$
         ^see<SV><@+FMAINV><past> <p3><sg>{^see<vblex><3>$}$ ^í gær<ADV>{^yesterday<adv>$}$^sent<SENT>{^..<sent>$}$
spectie: (chunker, t1x)
spectie:
spectie: ^Á morgun<ADV>{^tomorrow<adv>$}$ ^come<SV><@+FMAINV><pres><p3><sg>{^come<vblex><3><4><5>$}$ ^sn_rel_sn_v_adv<SN><@←SUBJ><sg>{^the<det>
         <def><3>$ ^man<n><3>$ ^that<rel><an><mf><sp>$ ^prpers<prn><subj><p3><m><sg>$ ^see<vblex><past>$ ^yesterday<adv>$}$^sent<SENT>{^..<sent>$}$
spectie: (interchunk1, t2x)
spectie:
spectie: ^Á morgun<ADV>{^tomorrow<adv>$}$ ^sn_rel_sn_v_adv<SN><@←SUBJ><sg>{^the<det><def><3>$ ^man<n><3>$ ^that<rel><an><mf><sp>$ ^prpers<prn><subj>
         <p3><m><sg>$ ^see<vblex><past>$ ^yesterday<adv>$}$ ^come<SV><@+FMAINV><pres><p3><sg>{^come<vblex><3><4><5>$}$^sent<SENT>{^..<sent>$}$
spectie: (interchunk2, t3x)
spectie:
spectie: ^Tomorrow<adv>$ ^the<det><def><sg>$ ^man<n><sg>$ ^that<rel><an><mf><sp>$ ^prpers<prn><subj><p3><m><sg>$ ^see<vblex><past>$ ^yesterday<adv>$
         ^come<vblex><pres><p3><sg>$^..<sent>$
spectie: (postchunk, t4x)
spectie:
spectie: <rule comment="REGLA: SN_SUBJ_R REL SN_SUBJ_L FMAINV ADV → SN">
spectie:
spectie: c'est la règle dans t2x

Sortie traduite : Tomorrow the man that he saw yesterday comes.

Références