Conversion from UD to SUD

This page describes the process used in the conversion from UD to SUD. It also explains how this can be adapted to languages specificities.

The main sequence

Defining rules for reversing relations is tricky mainly for two reasons:

Choosing the order when reversing relations

To constraint the order, a numeric level is given to each edge to be reversed and then:

  1. edge with the smallest level have higher priority
  2. if two edges have the same level and are on the same side of the head, the closest one has higher priority
  3. if two edges have the same level and are on both sides of the head, the one after the head has higher priority.

By default, the 4 relations case, cop, aux and mark (and their subtypes) are given the level 10.

We give below examples of conversions with multiple reversing of relations. In Japanese or in German, the default rules are applied. The order can be changed by adding different levels to specific relations before calling the strategy reverse_relations.main (see examples below for French and Wolof).

Japanese

In Japanese all UD relations case, cop, aux and mark are left-headed. The constraint 2 applies.

ud_logo sud_logo
japanese_ud_ex japanese_ud_ex

German

In German, there are many cases with edges on both sides. Contraint 3 applies here:

ud_logo sud_logo
german_ud_ex german_sud_ex

French

In French, levels are set to:

From the UD annotation:

french_example_ud

The universal conversion produces:

french_example_ud_default

And the conversion with the French specific levels (see GitHub):

french_example_ud_specif

Wolof

In Wolof, the lemma na must always be the head of the whole structure, so it must be the last relation to be reversed. This can be specified with a rule:

rule na {
  pattern { e: V -[aux]-> A; A[lemma="na"] }
  commands { e.level = 100 }
}

From the UD annotation:

wolof_example_ud

The universal conversion produces:

wolof_example_ud_default

And the conversion with the new na rule produces (see GitHub):

wolof_example_ud_specif

More examples of na as the head of a double aux construction: Grew-match.

Lifting dependencies

TODO