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.
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.
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.
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.
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.)
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.
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.
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
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>
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.
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.
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)
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.
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.
[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.