Difference between revisions of "Multi-mots"

From Apertium
Jump to navigation Jump to search
(suite traduction)
(correction traduction)
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Multiwords|In English]]
== Apperçu ==

== Aperçu ==


[[lttoolbox (français)]] présente actuellement trois mécanismes pour créer des multi-mots, de complexité variable :
[[lttoolbox (français)]] présente actuellement trois mécanismes pour créer des multi-mots, de complexité variable :
Line 8: Line 10:
#* <pre>analyse : ^record players/record player<n><pl>$</pre>
#* <pre>analyse : ^record players/record player<n><pl>$</pre>
# '''<code><g/></code>''' est utilisé (en combinaison avec <code><b/></code>) quand vous avez une inflection au milieu du mot, et une partie invariante à la fin
# '''<code><g/></code>''' est utilisé (en combinaison avec <code><b/></code>) quand vous avez une inflection au milieu du mot, et une partie invariante à la fin
#* <pre>entrée : <e><i>café</i><par n="house__n"/><p><l><b/>au<b/>lait</l><r><g><b/>with<b/>milk</g></r></p></e></pre>
#* <pre>entrée : <e><i>café</i><par n="house__n"/><p><l><b/>au<b/>lait</l><r><g><b/>au<b/>lait</g></r></p></e></pre>
#* <pre>analyse : ^café au lait/café<n><sg># au lait$</pre>
#* <pre>analyse : ^café au lait/café<n><sg># au lait$</pre>
#* <pre>analyse : ^cafés au lait/café<n><pl># au lait$</pre>
#* <pre>analyse : ^cafés au lait/café<n><pl># au lait$</pre>
Line 155: Line 157:
* Transfert (ex. dans le bidix)
* Transfert (ex. dans le bidix)
* Génération
* Génération
* Multi-mots de tête initiale, et de tête finale (ex: adj + nom et verbes de phrase (?))
* Head initial, and head final multi-mots (e.g. adj+noun and phrasal verbs)


;Problèmes :
;Problèmes :


* How to resolve <code><nowiki>^zračna# luka<adj><f><sg><nom><n><f><gen><pl>$</nowiki></code> in the bidix?
* Comment résoudre <code><nowiki>^zračna# luka<adj><f><sg><nom><n><f><gen><pl>$</nowiki></code> dans le bidix ?


;Solutions:
;Solutions:


* Have two paradigms for each adjective, one with tags, one without. (bad)
* Avoir deux paradigmes pour chaque adjectif, un avec balises, un sans. (mauvais)
::This would leave us with: ^zračna luka<n><f><gen><pl>$ (basically an orthographic paradigm).
::Cela nous laisserait avec : ^zračna luka<n><f><gen><pl>$ (essentiellement un paradigme orthographique).
* Have more than one entry per multi-word &mdash; this is done in <code>apertium-es-ca</code>, see "dirección general", "direcciones generales". (bad)
* Avoir plus d'une entrée par multi-mot &mdash; ce qui est fait dans <code>apertium-es-ca</code>, voir "dirección general", "direcciones generales". (mauvais)
* Avoir un paradigme paramétré, qui quand il est appelé dans un sens émet un paradigme avec des symboles, et dans l'autre sens émet un paradigme sans symboles.
* Have a parameterised paradigm, that when called one way outputs a paradigm with symbols, and another way outputs a paradigm without symbols.
::Ça devrait être seulement dans un sens, le problème viendrait quand on essaierait de générer. Comment récupère-on l'adjectif pour l'accorder avec le nom ?
::This would only be one way, the problem would come when we try and generate. How do we get the adjective to agree with the noun?


=== Le hack espagnol ===
=== Le hack espagnol ===


This is how it is taken care of in the current <code>apertium-es-ca</code> pair, which is tenable just about for Spanish, but for Slavic languages no chance.
Voici comment c'est pris en compte dans la paire actuelle <code>apertium-es-ca</code>, ce qui est tenable pour l'espagnol, mais n'a aucune chance de marcher avec les langues slaves.


<pre>
<pre>
Line 190: Line 192:
=== Le hack polonais ===
=== Le hack polonais ===


L'analyseur polonais utilise les [[fichiers metadix et métaparadigmes]] pour résoudre le problème des multi-mots, ce qui n'est pas souhaitable :
The Polish analyser uses [[Metadix]] to solve the multi-mot problem, though this is less than desirable:


<pre>
<pre>
<pardef n="kamie/ń [nazębn]y__n">
<pardef n="kamie/ń [nazębn]y__n">
<e>
<e>
<p>
<p>with the following entries
<l>ń<b/></l>
<l>ń<b/></l>
<r>ń<b/></r>
<r>ń<b/></r>
Line 220: Line 222:
</pre>
</pre>


avec les entrées suivantes :
with the following entries:


<pre>
<pre>
Line 229: Line 231:
=== Le hack nynorsk ===
=== Le hack nynorsk ===


(See [https://sourceforge.net/mailarchive/message.php?msg_name=e94dc08d0910291130p14f4cbc0l87e15d138840b074%40mail.gmail.com this mailing list discussion for alternative versions.])
(Voir [https://sourceforge.net/mailarchive/message.php?msg_name=e94dc08d0910291130p14f4cbc0l87e15d138840b074%40mail.gmail.com cette discussion sur mailing list pour les versions alternatives.])


'''What we want:'''
'''Ce qu'on veut :'''


anbefale<vblex> => rå til
anbefale<vblex> => rå til
Line 238: Line 240:
publisere<vblex> helst<adv> daglig<adv> => gje helst dagleg ut
publisere<vblex> helst<adv> daglig<adv> => gje helst dagleg ut


Par exemple, on veut qu'un verbe simple Bokmål soit traduit en verbe à particule, et que chaque chaîne suivant des adverbes soit placée entre le verbe (infléchi) et les particules (non infléchies / invariantes).
ie. we want a simple Bokmål verb translated into a particle verb, and any following string of adverbs should be placed between the (inflected) verb and the (uninflected/invariant) particle.


'''The hack:'''
'''Lhe hack:'''


For generation we don't actually need the multi-mots in monodix (but it doesn't hurt). We have the regular multi-mot entry in bidix:
Pour la génération on n'a pas besoin actuellement des multi-mots dans le monodix (mais ça ne fait pas de mal). On a l'entrée multi-mot régulière dans le bidix :
<pre>
<pre>
<e> <p><l>rå<g><b/>til</g></l><r>anbefale</r></p><par n="vblex"/></e>
<e> <p><l>rå<g><b/>til</g></l><r>anbefale</r></p><par n="vblex"/></e>
</pre>
</pre>


and the transfer rule that matches "vblex adv" writes
et la règle de transfert qui reconnait "vblex adv" s'écrit


<out>
<out>
Line 261: Line 263:
</out>
</out>


Donc maintenant le transfert nous donnera le résultat suivant :
So now transfer will give us the following result:
<pre>
<pre>
echo ^anbefale<vblex><pret>$ ^ikke<adv>$ | apertium-transfer apertium-nn-nb.nb-nn.t1x nb-nn.t1x.bin nb-nn.autobil.bin
echo ^anbefale<vblex><pret>$ ^ikke<adv>$ | apertium-transfer apertium-nn-nb.nb-nn.t1x nb-nn.t1x.bin nb-nn.autobil.bin
^rå<vblex><pret>$ ^ikkje<adv>$ ^# til$
^rå<vblex><pret>$ ^ikkje<adv>$ ^# til$
</pre>
</pre>
Thus we have three "lemma" which need dictionary entries in generation, the first to ("rå" and "ikkje") are in there already as regular simple entries, the last one is "# til", which we add in this manner:
Ainsi on a trois "lemmes" qui utilisent les entrées de dictionnaire pour la génération, le premier pour ("rå" et "ikkje") y sont déjà comme entrées régulière simple, le dernier est "# til", qu'on ajoute de cette manière :


<pre>
<pre>
<e lm="# til" r="RL"><p><l>til</l><r># til</r></p></e>
<e lm="# til" r="RL"><p><l>til</l><r># til</r></p></e>
</pre>
</pre>
Ugly, but it works. And since there are not very many such particles, the Nynorsk monodix doesn't need ''that'' many ugly entries.


Moche, mais ça fonctionne. Et comme il n'existe pas beaucoup de ces particules, le monodix Nynorsk n'a pas besoin de ''tellement'' d'entrées laides.


Of course, the Nynorsk monodix could also have "regular" entries for multi-mots with inner inflection for catching "rå til" when there are no adverbs between the two, but we won't be able to ''analyse'' "rå ikkje/helst/dagleg til" with the above method.
Bien sûr, le monodix Nynorsk pourrait aussi avoir des entrées "régulières" pour les multi-mots avec inflection interne pour prendre "rå til" quand il n'y a pas d'adverbes entre les deux, mais on ne sera pas capable d'''analyser'' "rå ikkje/helst/dagleg til" avec la méthode ci-dessus.


== Voir aussi ==
== Voir aussi ==

Latest revision as of 16:45, 3 September 2018

In English

Aperçu[edit]

lttoolbox (français) présente actuellement trois mécanismes pour créer des multi-mots, de complexité variable :

  1. insertion simple de blancs ; utilisez-le si vous voulez un mot avec un espace interne, mais seulement l'inflection à la fin
    • entrée : <e><i>record<b/>player</i><par n="house__n"/></e>
    • analyse : ^record player/record player<n><sg>$
    • analyse : ^record players/record player<n><pl>$
  2. <g/> est utilisé (en combinaison avec ) quand vous avez une inflection au milieu du mot, et une partie invariante à la fin
    • entrée : <e><i>café</i><par n="house__n"/><p><l><b/>au<b/>lait</l><r><g><b/>au<b/>lait</g></r></p></e>
    • analyse : ^café au lait/café<n><sg># au lait$
    • analyse : ^cafés au lait/café<n><pl># au lait$
  3. <j/> est utilisé quand vous voulez que le multi-mot soit séparé en deux unités lexicales, chacune avec sa propre analyse (ensemble de tags), où chaque partie peut varier indépendemment
    • entrée : <e>wr</i><par n="wr/ite__vblex"/><p><l><b/>about</l><r><j/>about<s n="pr"/></r></p></e>
    • analyse : ^write about/write<vblex><inf>+about<pr>/write<vblex><pres>+about<pr>$
    • analyse : ^writes about/write<vblex><pri><p3><sg>+about<pr>$

Plus d'information là dessus dans Utilisation simple et documentation (esp. sec.3.1.2.6).


Les multi-mots suivants ne sont pas très bien supportés pour l'instant:

  • Multi-mots d'accord : multi-mots complexes où deux parties (ou plus) montrent une sorte d'accord / dépendance des balises (ou ceux où certaines combinaisons de balises sont illégales)
    • lt-mwpp prend un fichier qui spécifie quelles combinaisons de lemmes sont multi-mots, et quelles balises doivent s'accorder, et générer toutes les combinaisons légales dans le format .dix de lttoolbox
  • Multi-mots discontinus : multi-mots qui ont un nombre arbitraire de mots sans relations entre eux, par exemple les verbes séparables dans les langues Germaniques

(mais voir les hacks ci-dessous)

Utilisation simple[edit]

Utilisation simple de <g/> et <b/>[edit]

Il y a un exemple de l'anglais à l'espéranto avec inflexion interne suivie par une partie invariante avec des espaces.

Dans en.dix on trouve

<e lm="become"><i>bec</i><par n="bec/ome__vblex"/></e>
<e lm="become acquainted">
  <i>bec</i>
  <par n="bec/ome__vblex"/>
  <p>
    <l><b/>acquainted</l>  
    <r><g><b/>acquainted</g></r>    
  </p>
</e>
<e lm="become acquainted with">
  <i>bec</i>
  <par n="bec/ome__vblex"/>
  <p>
    <l><b/>acquainted<b/>with</l>
    <r><g><b/>acquainted<b/>with</g></r>
  </p>
</e>

Donc become est conjugué comme un verbe normal et le reste est fixe (invariant). Notez que <b/> est un espace et que les mots fixes sont à l'intérieur de <g> </g>.

En espéranto, "become" (devenir) est "iĝi" (ou "fariĝi"), "become acquainted" (prendre connaissance) est "konatiĝi" et "become acquainted with" (prendre connaissance de) est "konatiĝi kun". Le iĝi/konatiĝi devrait être conjugué comme become. Ainsi, les entrées du bidix sont

<e><p><l>iĝi<s n="vblex"/></l><r>become<s n="vblex"/></r></p></e>
<e><p><l>konatiĝi<s n="vblex"/></l><r>become<g><b/>acquainted</g><s n="vblex"/></r></p></e>
<e><p><l>konatiĝi<g><b/>kun</g><s n="vblex"/></l><r>become<g><b/>acquainted<b/>with</g><s n="vblex"/></r></p></e>

Et le monodix espéranto

<e lm="iĝi"><i>iĝ</i><par n="verb__vblex"/></e>
<e lm="konatiĝi"><i>konatiĝ</i><par n="verb__vblex"/></e>
<e lm="konatiĝi kun">
  <i>konatiĝ</i>
  <par n="verb__vblex"/>
  <p>
    <l><b/>kun</l>
    <r><g><b/>kun</g></r>
  </p>
</e>	

Notez comment l'anglais fixe les mots <g><b/>acquaintedwith</g> devient <g><b/>kun</g>

Notez aussi que vous avez besoin au moins d'une règle de transfert de verbe pour vous assurer que la partie invariante ("lemq") est mise après les balises morphologiques (a_verb, temps):

    <rule comment="VBLEX">
      <pattern>
	<pattern-item n="vblex"/>
      </pattern>
      <action>
        <out>
          <lu>	    
            <clip pos="1" side="tl" part="lemh"/>
            <clip pos="1" side="tl" part="a_verb"/>
            <clip pos="1" side="tl" part="temps"/>
            <clip pos="1" side="tl" part="lemq"/>
          </lu>
        </out>
      </action>
    </rule>

Utilisation simple de <j/>[edit]

La documentation donne l'exemple suivant du monodix :

<e lm="del" r="LR"> 
  <p> 
    <l>del</l> 
    <r>de<s n="pr"/><j/>el<s n="det"/><s n="def"/><s n="m"/><s n="sg"/></r> 
  </p> 
</e> 

(C'est marqué r="LR" et donc sera utilisé seulement dans l'analyse.) Quand "del" est lu, la sortie de l'analyseur est

^del/de<pr>+el<det><def><m><sg>$

C'est passé comme ça au tagger, mais apertium-pretransfer le remplace par

^de<pr>$ ^el<det><def><m><sg>$^

avant l'examen du bidix.

Les cas compliqués[edit]

Il est possible d'avoir des combinaisons multi-mot plutôt complexes.

    <e lm="zračna luka">
      <i>zračn</i>
      <par n="zračn/a__adj"/>
      <p>
        <l><b/>luk</l>
        <r><g><b/>luk</g></r>
      </p>
      <par n="stolic/a__n"/>
    </e>
$ echo "zračna luka" |  lt-proc sh-mk.automorf.bin 
^zračna luka/zračna<adj><f><sg><nom># luka<n><f><gen><pl>/zračna<adj><f><sg><nom># luka<n><f><nom><sg>$

$ echo "zračna luka" |  lt-proc sh-mk.automorf.bin  | apertium-tagger -g sh-mk.prob 
^zračna<adj><f><sg><nom># luka<n><f><gen><pl>$

$ echo "zračna luka" |  lt-proc sh-mk.automorf.bin  | apertium-tagger -g sh-mk.prob  | apertium-pretransfer
^zračna# luka<adj><f><sg><nom><n><f><gen><pl>$
Vous avez besoin de considérer
  • Analyse
  • Transfert (ex. dans le bidix)
  • Génération
  • Multi-mots de tête initiale, et de tête finale (ex: adj + nom et verbes de phrase (?))
Problèmes 
  • Comment résoudre ^zračna# luka<adj><f><sg><nom><n><f><gen><pl>$ dans le bidix ?
Solutions
  • Avoir deux paradigmes pour chaque adjectif, un avec balises, un sans. (mauvais)
Cela nous laisserait avec : ^zračna luka<n><f><gen><pl>$ (essentiellement un paradigme orthographique).
  • Avoir plus d'une entrée par multi-mot — ce qui est fait dans apertium-es-ca, voir "dirección general", "direcciones generales". (mauvais)
  • Avoir un paradigme paramétré, qui quand il est appelé dans un sens émet un paradigme avec des symboles, et dans l'autre sens émet un paradigme sans symboles.
Ça devrait être seulement dans un sens, le problème viendrait quand on essaierait de générer. Comment récupère-on l'adjectif pour l'accorder avec le nom ?

Le hack espagnol[edit]

Voici comment c'est pris en compte dans la paire actuelle apertium-es-ca, ce qui est tenable pour l'espagnol, mais n'a aucune chance de marcher avec les langues slaves.

    <e lm="dirección general">
      <p>
        <l>dirección<b/>general</l>
        <r>dirección<b/>general<s n="n"/><s n="f"/><s n="sg"/></r>
      </p>
    </e>
    <e lm="dirección general">
      <p>
        <l>direcciones<b/>generales</l>
        <r>dirección<b/>general<s n="n"/><s n="f"/><s n="pl"/></r>
      </p>
    </e>

Le hack polonais[edit]

L'analyseur polonais utilise les fichiers metadix et métaparadigmes pour résoudre le problème des multi-mots, ce qui n'est pas souhaitable :

<pardef n="kamie/ń [nazębn]y__n">
  <e>
    <p>with the following entries
      <l>ń<b/></l>
      <r>ń<b/></r>
    </p>
    <i><prm/></i>
    <p>
      <l>y</l>
      <r>y<s n="n"/><s n="mi"/><s n="sg"/><s n="nom"/></r>
    </p>
  </e>
  <e>
    <p>
      <l>nia<b/></l>
      <r>ń<b/></r>
    </p>
    <i><prm/></i>
    <p>
      <l>ego</l>
      <r>y<s n="n"/><s n="mi"/><s n="sg"/><s n="gen"/></r>
    </p>
  </e>
  [etc.]
</pardef>

avec les entrées suivantes :

<e lm="kamień nazębny"><i>kamie</i><par n="kamie/ń [nazębn]y__n" prm="nazębn"/></e>
<e lm="kamień szlachetny"><i>kamie</i><par n="kamie/ń [nazębn]y__n" prm="szlachetn"/></e>

Le hack nynorsk[edit]

(Voir cette discussion sur mailing list pour les versions alternatives.)

Ce qu'on veut :

anbefale<vblex> => rå til
anbefale<vblex> ikke<adv> => rå ikkje til
publisere<vblex> => gje ut
publisere<vblex> helst<adv> daglig<adv> => gje helst dagleg ut

Par exemple, on veut qu'un verbe simple Bokmål soit traduit en verbe à particule, et que chaque chaîne suivant des adverbes soit placée entre le verbe (infléchi) et les particules (non infléchies / invariantes).

Lhe hack:

Pour la génération on n'a pas besoin actuellement des multi-mots dans le monodix (mais ça ne fait pas de mal). On a l'entrée multi-mot régulière dans le bidix :

 <e>       <p><l>rå<g><b/>til</g></l><r>anbefale</r></p><par n="vblex"/></e>

et la règle de transfert qui reconnait "vblex adv" s'écrit

      <out>
        <lu>
          <clip pos="1" side="tl" part="lemh"/>
          <clip pos="1" side="tl" part="a_verb"/>
          <clip pos="1" side="tl" part="temps"/>
        </lu>
        
        <lu><clip pos="2" side="tl" part="whole"/></lu>
        
        <lu><clip pos="1" side="tl" part="lemq"/></lu>
      </out>

Donc maintenant le transfert nous donnera le résultat suivant :

 echo ^anbefale<vblex><pret>$ ^ikke<adv>$ | apertium-transfer apertium-nn-nb.nb-nn.t1x nb-nn.t1x.bin nb-nn.autobil.bin
 ^rå<vblex><pret>$ ^ikkje<adv>$ ^# til$

Ainsi on a trois "lemmes" qui utilisent les entrées de dictionnaire pour la génération, le premier pour ("rå" et "ikkje") y sont déjà comme entrées régulière simple, le dernier est "# til", qu'on ajoute de cette manière :

   <e lm="# til" r="RL"><p><l>til</l><r># til</r></p></e>

Moche, mais ça fonctionne. Et comme il n'existe pas beaucoup de ces particules, le monodix Nynorsk n'a pas besoin de tellement d'entrées laides.

Bien sûr, le monodix Nynorsk pourrait aussi avoir des entrées "régulières" pour les multi-mots avec inflection interne pour prendre "rå til" quand il n'y a pas d'adverbes entre les deux, mais on ne sera pas capable d'analyser "rå ikkje/helst/dagleg til" avec la méthode ci-dessus.

Voir aussi[edit]