Representation av avvikelseannotationer

Dan Rosén juni 2017

Här har jag skrivit ner resultatet av min efterforskning av hur annotationerna borde representeras. En kort sammanfattning är att vi behöver:

  • Ett ord kan behöva många annotationer (tex både särskrivning och stavfel)

  • Annoteringar kan spänna över flera ord, både i källan och i hypotesen

  • Längre ordföljdsändringar borde endast skapa en annotation på de förflyttade orden och inte de fixa.

Lättast representeras allt detta som en alignad parallellkorpus med annotationerna på bågarna (alignmenten).

Jag illustrerar här nedan (med hjälp av ascii-konstverk och ASK-hänvisningar) anledningar till detta.

Jag lyfter också fram några samt beskriver något klurigt fall, hur många ord som är på fel plats vid V2-avvikelse samt vad som ska göras om ett ord i källan borde annoteras men ändå inte vara med i hypotesen.

Fler än en annotation per båge/länk

Här argumenterar jag för att flera avvikelser kan förekomma samtidigt.

Ett konstruerat exempel:

             SPL
rödbok hylla ---> röd bokhylla
             PART

Det här borde annoteras som både ihopskrivning, PART, och särskrivning, SPL.

Vi kan också ha en felstavning, ORT samtidigt som särskrivning:

         SPL
bok hyla --> bokhylla
         ORT

Detta illustrerar att vi kan vilja ha flera annotationer på samma koppling.

Annoteringar över ordgränserna

Här argumenterar jag att vi kommer behöva annoteringar som går över ordgränserna. Med andra ord: vi annoteringar som inte ett enskilt ord/token är ansvarig för.

Exempel: särskrivning

Titta på nominalfrasen

person nummer

Här kan man tänka sig tre analyser. De två första använder överflödigt ord, R:

    person nummer
      \      |
  SPL  \     x  R
        \
     personnummer
    person nummer
       |     /
    R  x    /  SPL
           /
     personnummer

Den sista använder endast särskriving, SPL:

    person nummer
    \_____ _____/
          V       SPL
          |
     personnummer

Den sista analysen borde vara den korrekta och det illustrerar att vi behöver korrigeringar som går över ordgränser. Det jag menar är att annoteringen inte kan sättas fast på person eller nummer, som det skulle behövas i en tabulär/tokeniserad representation (som exv CoNLL). Det vore dock också fel att sätta ut två annoteringar eftersom det endast handlar om en avvikelse.

För att förtydliga, med en ASK-xml-liknande representation ser dessa tre exempel ut så här:

<sic corr="personnummer" type="SPL">person</sic><sic corr="" type="R"> nummer</sic>
<sic corr="" type="R">person </sic><sic corr="personnummer" type="SPL">nummer</sic>
<sic corr="personnummer" type="SPL">person nummer</sic>

Och vi ser här tydligt att i det sista fallet spänner sic-taggen över två ord.

Exempel: hjälpverb

Titta på dessa två analyser av fick --> skulle få. I den första är skulle word missing, M:

Vi gick dit för att jag        fick personnummer .
                                |
                         M .    | F
                           |    |
Vi gick dit för att jag skulle  få  personnummer .

En annan analys är

Vi gick dit för att jag    fick   personnummer .
                            |
                         ___^___  F, M
                        /       \
Vi gick dit för att jag skulle få personnummer .

Men min poäng här är att (mål)annotationen här spänner över flera ord. (Att det är just annotationen av målet/hypotesen är i sig inte så viktig eftersom situationen naturligtvis är symmetrisk: det går att föreställa sig exempel där för många hjälpverb använts.)

Exempel: bestämdhet

Denna normalisering kan också analyseras på två olika sätt.

   De väder  var inte bra
   |    |
 R x    |
        |
      Vädret var inte bra

   De väder  var inte bra
   \___ __/
       V
       |
     Vädret  var inte bra

(Orelaterat men intressant: notera att vi här inte vill en annotering för fel skiftläge, CAP)

Med en annan normalisering finns också två olika analyser, en analys med två annotationer:

De  väder  var inte bra
 |    |
Det vädret var inte bra

och en analys med en annotation:

De  väder  var inte bra
\___ ___/
    V
    |
 ___^____
/        \
Det vädret var inte bra

Även här är det alltså värdefullt och korrektast att bågar är many-to-many för att kunna specifiera vilken analys som görs.

Ordföljd

Här argumenterar jag för att XML på ASK-stil är olämplig som initial representation och borde ersättas med en representation likt en parallelkorpus med explicita bågar som kan vara many-to-many.

Jag tar upp två exempel, ett där två intilligande ord ska bytas plats och ett där ett ord ska flyttas över många token.

Exempel: transponering av två ord (V2)

En dag jag vaknade

Vilken del är i fel ordföljd? Här finns fyra möjligheter. Alternativ ett är att jag är på rätt plats:

En dag         jag vaknade
           _____|____/
          /     |
En dag vaknade jag

Eller så är vaknade på rätt plats:

En dag jag vaknade
         \____|____
              |    \
En dag     vaknade jag

Eller så ska båda byta plats:

En dag jag vaknade
        \___/___
           /    \
En dag vaknade jag

Eller så ska båda orden bytas ut samtidigt:

En dag jag vaknade
       \____ ____/
            V
            |
        ____^____
       /         \
En dag vaknade jag

Detta kanske vi kan svara på genom att fråga oss om jag söker på fel ordföljd i den här meningen, ska träffen vara på vaknade, jag, jag vaknade, eller ska det vara två träffar, en på vardera ord?

Dessa låter sig inte så lätt representeras i "ASK-liknande" XML, men det går att göra så här: (Relevanta feltyper är O och subtypen INV, men jag skriver inte med dem nu)

En dag <sic corr="vaknade "></sic>jag<sic corr=""> vaknade</sic>
En dag <sic corr="">jag </sic>vaknade<sic corr=" jag"></sic>
En dag <sic corr="">jag</sic><sic corr="vaknade"></sic> <sic corr="">vaknade</sic><sic corr="jag"></sic>
En dag <sic corr="vaknade jag">jag vaknade</sic>

(En irriterande sak med XML-representationen är att man måste se till att alla blanksteg blir rätt.)

I de första tre behövs några slags identifierare för att se vilka förflyttningar som hänger ihop. Tex så här för den första meningen:

En dag <sic corr="vaknade " id="1" from_id="2"></sic>jag<sic corr="" id="2" to_id="1"> vaknade</sic>

Nu satte jag identifierare på båda taggarna, men naturligtvis behövs bara en av dem.

Detta illustrerar att XML på ASK-stil är irriterande att ha som initial representation och borde överges för en parallellkorpusrepresentation. Första meningen kan skrivas så här:

<source>
<w id="s-1">En</w>
<w id="s-2">dag</w>
<w id="s-3">jag</w>
<w id="s-4">vaknade</w>
</source>
<target>
<w id="t-1">En</w>
<w id="t-2">dag</w>
<w id="t-3">vaknade</w>
<w id="t-4">jag</w>
</target>
<links>
<link from="s-1" to="t-1" type="unchanged"/>
<link from="s-2" to="t-2" type="unchanged"/>
<link from="s-3" to="t-4" type="unchanged"/>
<link from="s-4" to="t-3" type="O"/>
</links>

Länkarna för de andra meningarna blir så här:

<link from="s-1" to="t-1" type="unchanged"/>
<link from="s-2" to="t-2" type="unchanged"/>
<link from="s-3" to="t-4" type="O"/>
<link from="s-4" to="t-3" type="unchanged"/>
<link from="s-1" to="t-1" type="unchanged"/>
<link from="s-2" to="t-2" type="unchanged"/>
<link from="s-3" to="t-4" type="O"/>
<link from="s-4" to="t-3" type="O"/>
<link from="s-1" to="t-1" type="unchanged"/>
<link from="s-2" to="t-2" type="unchanged"/>
<link from="s-3 s-4" to="t-3 t-4" type="O"/>

Notera att i den sista beskrivs en 2-till-2 båge.

För övrigt är ju V2-avvikelser vanligt förekommande. Här kommer några fler exempel jag fann:

När ländade flygplanen jag kollade ute genom fönesteret
     \________/___       \__/___    |           |
             /    \        /    \   |           |
När flygplanet landade kollade jag ut  genom fönstret
När var jag i Iran visste jag inte att jag ska    flytta till sverige och det hänt  plötsligt
     \__/_                                  |                   |               |
       /  \                                 |                   |               |
När jag var i Iran visste jag inte att jag skulle flytta till Sverige och det hände plötsligt

Exempel på lång förflyttning vid fel ordföljd:

Ett illustrerande exempel där ett ord ska flyttas över många andra ord:

Efter en tima  gick jag till ett plats som min faster och min cousin väntade på mig där
           |                  |         |                       |                    |
           |                  |         x                       |                    |
           |                  |          _______________________|____________________/
           |                  |         /                       |
Efter en timma gick jag till en  plats där min faster och min kusin  väntade på mig

Borde alla ord i min faster och min kusin väntade på markeras för ordföljd? Antagligen inte, så det här fallet skiljer sig från de vanligare paren av V2-ord som transponeras.

Här representerar ASK det som att alla ord kommer vara med i ordföljdsfelet. Så här ser det ut om vi fokuserar enbart på ordföljdsannoteringen:

... en plats <sic corr="där min faster och min kusin väntade på mig">som min faster och min kusin väntade på mig där</sic>

Wrong word samtidigt som unidiomatic expression

Den här meningen är klurig att normalisera så låt oss här enbart låta den illustrera ett fenomen som jag tror kan bli vanligt: att ett ord är felstavat, men ändå inte borde vara med i hypotesen. Här är ordet plats:

Alla   får   stressen  varjedag  och i  alla  plats
        |        |         |         |          |
      __^__      |      ___^___      |          |
     /     \     |     /       \     |          |
Alla kan bli stressade varje dag och på alla platser
                                     \______ _____/
                                            V
                                            |
Alla kan bli stressade varje dag och    överallt

Vi vill markera plats som felstavat, men det kommer ändå inte finnas kvar i hypotesen. Behöver vi kanske flera lager av normaliseringar? Så gör Hana et. al. i en Tjeckisk andraspråkskorpus (se sida 5).

Notera att samma problem uppstår när ett ord ska ändras, och sen ska en hel fras ändra plats i. Dvs detta problem uppstår också i samband med ordföljdsavvikelser.

Kongruens

Man skulle kunna annotera annoteringar, en slags meta-annotation eller "sekundärbåge" för tex kongruensfel. Se detta konstruerade exempel:

ett gul äpple
     |
ett gult äpple

Ska vi här ha någon slags "sekundärbåge" eller dyl till äpple?

ett gul äpple
     |    /
     |----
     |
ett gult äpple

Så gör Hana et. al. i en Tjeckisk andraspråkskorpus (se sida 5).

Detta verkar dock ganska jobbigt och jag ser helst att vi slipper det.

Ytterligare exempel: anaforisk genuspanik

Vi diskuterade ett exempel där pronomet hon refererade tillbaka till en bror:

... min bror. Hon ...

Här skulle vi kunna använda sådana här sekundärbågar:

... min bror. Hon ...
          \    |
           ----|
               |
... min bror. Han ...

Intressant och jobbigt är här att bågen spänner över meningsgränsen. (Naturligtvis gör anafora ofta detta)

Övriga annoteringsfrågor, orelaterade till representation

Här är några saker jag funderat på som behövs ta ställning till, men de har inget med datarepresentation att göra.

  1. Hur vet ni vad som är felstavning och vad som är fel böjning? Exempel:

    och så     där frågvna
        |            | ?
    och sådana där frågor

    Här skulle frågvna vara en felstavning av frågorna.

  2. [FL] Non-Swedish word borde nog inte vara med, hur skiljer ni mellan ord som är obegripliga, X, och sådana som kommer från ett annat språk? Om ni inte kan alla språk.