• No results found

Utveckling av ett verktyg för länkning och bedömning av översättningar

N/A
N/A
Protected

Academic year: 2021

Share "Utveckling av ett verktyg för länkning och bedömning av översättningar"

Copied!
35
0
0

Loading.... (view fulltext now)

Full text

(1)

Institutionen för datavetenskap

Department of Computer and Information Science

Examensarbete

Utveckling av ett verktyg för länkning och

bedömning av översättningar

av

Joel Eriksson

LIU­IDA/LITH­EX­G­­15/006­­SE

 2015­03­27

(2)

Linköpings universitet Institutionen för datavetenskap

Examensarbete

Utveckling av ett verktyg för länkning och

bedömning av översättningar

av

Joel Eriksson

LIU-IDA/LITH-EX-G--15/006--SE

2015-03-27

Handledare: Lars Ahrenberg

Examinator: Lars Ahrenberg

(3)

Sammanfattning

Idag finns det m˚anga system f¨or att bed¨oma och tolka ¨

overs¨attningar av texter. Det finns system som l¨ankar delar av en k¨alltext och en ¨overs¨attning, det finns en ¨aven tekniker f¨or att bed¨oma ¨overs¨attningar f¨or ge ett m˚att p˚a hur bra de ¨ar. Ett exempel p˚a en s˚adan teknik ¨ar Token Equivalence Method(TEM). Det finns dock f˚a program, om n˚agra, som utnyttjar b˚ade l¨ankning och bed¨omning p˚a ett s˚adant s¨att att de skulle kunna vara anv¨andbara vid till exempel spr˚akutbildningar. I detta arbete utvecklas just ett s˚adant program. Programmet som skapats kan segmentera och l¨anka parallella texter mot varandra helt automatiskt via inkopplade system. F¨or att ¨oka anv¨andarv¨anligheten s˚a visualiserar programmet ¨

aven l¨ankningen och till˚ater redigering av b˚ade segmentering och l¨ankning. L¨ankningen utnyttjas sedan f¨or att r¨akna ut och visa delar av TEM f¨or att ge ett m˚att p˚a ¨overs¨attningens kvalit´e.

(4)

Inneh˚

all

1 Inledning 1

1.1 Motivering . . . 1

1.2 Syfte . . . 1

1.3 Fr˚agest¨allning och systemkrav . . . 2

1.4 Avgr¨ansningar . . . 2 2 Bakgrund 3 2.1 Token-Equivalence Method . . . 3 2.2 L¨ankningssystem . . . 4 2.2.1 Anymalign . . . 4 2.2.2 GIZA++ . . . 5 2.2.3 Hunalign . . . 5 2.2.4 GMA . . . 5

2.3 System f¨or visualisering och redigering . . . 5

2.3.1 Cairo . . . 5

2.3.2 I*Link . . . 6

2.3.3 Yawat . . . 7

3 Metod 8 3.1 Verktyg och programmeringsspr˚ak . . . 8

3.1.1 Programmeringsspr˚ak . . . 8

3.1.2 L¨ankningssystem . . . 9

3.2 Systemutvecklingsmetodik . . . 9

4 Design och Implementation 10 4.1 Datahantering . . . 10

4.2 Anv¨andargr¨anssnitt . . . 13

4.2.1 Uppl¨agg . . . 13

4.2.2 Menyfunktioner . . . 14

4.2.3 Spara- och ¨oppna-funktioner . . . 15

4.2.4 Vy f¨or meningsuppdelning . . . 16

4.2.5 Vy f¨or meningsl¨ankning . . . 18

4.2.6 Vy f¨or visualisering . . . 19

4.2.7 Visualisering av ordl¨ankning . . . 20

4.2.8 Redigering av ordl¨ankning . . . 22

5 Diskussion och Resultat 23 5.1 Resultat . . . 23

5.2 Diskussion . . . 25

5.2.1 Metod . . . 25

5.2.2 Resultat . . . 26

(5)
(6)

1

Inledning

1.1 Motivering

Idag finns det m˚anga olika s¨att att bed¨oma och tolka ¨overs¨attningar av texter. Man kan till exempel koppla ihop meningar och ord i en

¨

overs¨attning med motsvarande i k¨alltexten. Detta brukar kallas f¨or att l¨anka tv˚a texter och idag finns det ¨aven system som g¨or detta automatiskt. Det finns ¨aven tekniker som anv¨ander sig av denna l¨ankning f¨or att

bed¨oma och ge ett m˚att p˚a hur bra en ¨overs¨attning ¨ar. ¨

Aven om dessa system och tekniker funnits under en viss tid finns det f˚a system som tar tillvara p˚a deras potential. Mer specifikt s˚a finns det inga system som ¨ar utvecklade f¨or den okunnige inom omr˚adet. I spr˚ak- och ¨

overs¨attarutbildningar skulle dessa tekniker kunna t¨ankas vara till stor anv¨andning. Eftersom ¨overs¨attningar ¨ar en stor del av dessa utbildningar s˚a skulle system som hj¨alper, till exempel en l¨arare, att studera en elevs ¨

overs¨attning b˚ade ¨oka f¨orst˚aelse av ¨overs¨attningarna samt spara tid.

1.2 Syfte

Syftet med detta arbete ¨ar att skapa ett program som anv¨ander

existerande system f¨or att l¨anka parallella texter med varandra och sedan visualisera detta p˚a ett ¨oversk˚adligt s¨att. Med tanke p˚a systemens m¨ojliga felmarginal ¨ar det viktigt att l˚ata anv¨andaren av programvaran redigera l¨ankningen p˚a ett l¨atthanterligt s¨att. F¨or att ¨oka anv¨andarv¨anligheten ska programmet till˚ata anv¨andaren att spara en skapad l¨ankning, f¨or att sedan kunna ¨oppna den vid ett senare tillf¨alle.

Programmet ska ¨aven kunna ber¨akna och presentera vissa delar av en teknik som kallas Token-Equivalence Method(TEM). Detta f¨or att ge ett m˚att av kvalit´en p˚a ¨overs¨attningen. TEM hanterar ordl¨ankning och segmentering lite annorlunda ¨an vanliga l¨ankningsmetoder, det ¨ar d¨arf¨or viktigt att systemet anpassas f¨or att st¨odja detta.

En viktig del ¨ar att programmet inneh˚aller ett grafiskt anv¨andargr¨anssnitt som ¨ar anpassat f¨or den okunnige inom omr˚adet. En anv¨andare b¨or allts˚a kunna anv¨anda programmet utan att f¨orst˚a hur bakomliggande tekniker fungerar.

(7)

1.3 Fr˚agest¨allning och systemkrav

F¨or att f˚a en klarare bild av programmet togs en lista av krav p˚a funktionalitet i programmet fram:

• En k¨alltext ska kunna l¨aggas in i systemet • En ¨overs¨attning ska kunna l¨aggas in i systemet

• Automatisk strukturering av texterna i stycken eller meningar med editeringsm¨ojligheter

• Automatisk tokenisering av texterna med editeringsm¨ojligheter • Taggning av ord

• Automatisk l¨ankning av meningar med editeringsm¨ojligheter • Automatisk ordl¨ankning med editeringsm¨ojligheter

• Visualisering av ordl¨ankning och meningsl¨ankning • Visning av TEM-m˚att

Programmet b¨or st¨odja s˚a m˚anga spr˚ak som m¨ojligt och b¨or fungera p˚a Linux i f¨orsta hand men ¨aven Windows och Mac.

Ett par viktiga fr˚agor som beh¨ovs besvaras ¨ar:

• Vilka externa system beh¨ovs och passar b¨ast f¨or ¨andam˚alet? • Hur g˚ar man tillv¨aga f¨or att utveckla ett s˚adant system?

1.4 Avgr¨ansningar

Ett system av denna typ kan t¨ankas inneh˚alla m˚anga olika delar. Bland annat kan n˚agon typ av versionshantering som ger m¨ojlighet att se hur en ¨

overs¨attning ¨andrats i olika versioner beh¨ovas. ¨

Aven ett st¨orre system d¨ar flera ¨overs¨attningar kan kopplas till samma k¨alltext ¨ar ett alternativ. Detta skulle kunna ge, till exempel en l¨arare, m¨ojligheten att se hur en viss del i text ¨oversatts av olika

¨

overs¨attare.

Genom att skapa en server-klient del med m¨ojlighet f¨or inloggning av anv¨andare skulle dessa problem kunna implementeras utan att klienten beh¨over ha tillg˚ang till l¨ankningssystemen lokalt.

P˚a grund av tidsbrist kommer detta arbete fokusera p˚a att v¨alja och koppla samman olika l¨ankningssystem. Sedan skapa ett anv¨andargr¨anssnitt f¨or redigering och visualisering av l¨ankningen som skapas. Dock kan det

(8)

vara en bra id´e att ha dessa m¨ojligheter i ˚atanke vid utveckling av programmet.

2

Bakgrund

2.1 Token-Equivalence Method

Token-Equivalence Method (TEM) ¨ar en metod som togs fram f¨or att f¨ors¨oka betygs¨atta en ¨overs¨attning av en text. Den togs fram av Dr. Ljuba Tarvis i hennes avhandling ”Comparative Translation Assessment:

Quantifying Quality”[1]. Metoden visar b˚ade vilken stil en ¨overs¨attare har och hur stor del av originalet som ¨ar ¨oversatt. F¨or att ber¨akna TEM anv¨ands ett antal ramar som alla r¨aknar olika saker i en ¨oversatt mening[2].

TEM delar upp ord i content(inneh˚all) och formal(formella). Formella ord ¨

ar grammatiska ord och ett ord r¨aknas som inneh˚all om det inte ¨ar grammatiskt. P˚a grund av vad TEM ber¨aknar kan ordl¨ankningen som TEM anv¨ander sig av vara lite annorlunda. Ordl¨ankning sker oftast ¨over samtliga ord, oavsett vilken typ ett ord ¨ar. Under TEM beh¨ovs inte ¨

overfl¨odiga grammatiska ord l¨ankas, d˚a l¨ankningen av dessa ¨ar irrelevant f¨or vad TEM ber¨aknar. Denna typ av l¨ankning ¨ar dock inte n¨odv¨andig s˚a l¨ange dessa grammatiska ord inte r¨aknas. TEM kr¨aver ¨aven att skiljetecken ignoreras vid segmentering, det vill s¨aga att de till˚ats vara kvar.

Basic Content Frame (BCF): R¨aknar antalet ord i originaltexten som har en direkt ¨overs¨attning. Det vill s¨aga ord som inte ¨ar grammatiska och som ¨

ar l¨ankade. Denna ram visar hur stor del av originalet som ¨ar ¨oversatt. Antalet ges i procent.

Optional Content Frame (OCF): R¨aknar antalet av ord i ¨overs¨attningen som inte har en direkt motsvarighet i originalet. ¨Aven h¨ar ska inte grammatiska ord r¨aknas, d˚a dessa ofta f¨oresl˚as eller kr¨avs av ¨

overs¨attningsspr˚aket. Denna ram visar vad som har lagts till i ¨

overs¨attningen. Antalet ges som ett heltal.

Basic Formal Frame (BFF): R¨aknar antalet grammatiska ord i ¨

overs¨attningen. Detta kan s¨aga mycket om en ¨overs¨attares stil. Antalet ges som ett heltal.

Optional Formal Frame 1 (OFF1): R¨aknar hur m˚anga inneh˚alls-ord i ¨

overs¨attningen som ¨ar tolkade i samma ordklass som originalet. Ges i procent.

(9)

samma ordning som i originalet och samtidigt beh˚aller samma syntaktiska funktion. Antalet ges i procent.

Samtliga av dessa ramar kr¨aver att alla ord i en mening ¨ar klassificerade p˚a ett eller annat s¨att. F¨or att ˚astadkomma detta automatiskt kr¨avs sofistikerade tolkningssystem med ordb¨ocker f¨or varje spr˚ak.

2.2 L¨ankningssystem

L¨ankning av parallella texter ¨ar ett s¨att att koppla ihop en k¨alltext och en ¨

overs¨attning med varandra. Tanken ¨ar att l¨ankningen ska visa vilka delar av texterna som motsvarar varandra inneh˚allsm¨assigt. Det ¨ar vanligt att dela upp l¨ankningen i tv˚a olika niv˚aer: meningsniv˚a och ordniv˚a.

Meningsl¨ankning ¨ar, precis som det l˚ater, l¨ankning p˚a meningsniv˚a. Texterna m˚aste h¨ar ha delats upp i meningar och varje mening l¨ankas mot motsvarande mening i motsvarande text. Viktigt att komma ih˚ag ¨ar att en mening inte beh¨over motsvara endast en mening utan flera meningar kan l¨ankas till en. Detta skapar ¨aven m¨ojligheten att flera meningar ¨ar l¨ankade till flera. Dessa typer av l¨ankningar kommer fortfarande att ben¨amnas som meningspar, ¨aven om det handlar om tre meningar eller fler.

Ordl¨ankning ¨ar l¨ankning p˚a ordniv˚a. Meningarna m˚aste h¨ar ha delats upp i ord, ibland fraser, f¨or att ord sedan ska kunna l¨ankas mot

motsvarande. Om en mening ¨ar l¨ankad till fler ¨an en mening s˚a kan dessa hanteras som en enda mening.

2.2.1 Anymalign

Anymalign ¨ar ett system f¨or l¨ankning av ord i en text och det ¨ar skrivet i Python. Det ¨ar baserat p˚a programmet Malign som ¨ar till f¨or att l¨anka molekyl¨ara sekvenser. Det utvecklades av Adrien Lardilleux och Yves Lepage ˚ar 2009. Anymalign anv¨ander sig av statistiska modeller och fungerar d¨arf¨or p˚a i stort sett alla m¨ojliga spr˚ak utan specifika

spr˚akresurser. Det som ¨ar lite speciellt med Anymalign j¨amf¨ort med andra l¨ankningssystem ¨ar att programmet k¨ors s˚a l¨ange anv¨andaren l˚ater det. Ju l¨angre programmet k¨ors, desto fler resultat genererar det. Programmet ¨ar skrivet f¨or att anv¨andas i Linux men fungerar p˚a flera operativsystem som Windows och Mac. [3] [4]

(10)

2.2.2 GIZA++

GIZA++ ¨ar en tillbyggnad av programmet GIZA som utvecklades av ett team p˚a Johns-Hopkins universitet sommaren 1999. GIZA++ anv¨ander statistiska modeller av varierande komplexitet f¨or att l¨anka ord f¨or meningar i tv˚a olika spr˚ak. D˚a dessa modeller ¨ar baserade p˚a statistik s˚a kr¨aver d¨arf¨or GIZA++ inga specifika spr˚akresurser. GIZA++ anv¨ander sig av ett externt verktyg f¨or att segmentera texten i ord innan anrop till sj¨alva l¨ankningssystemet. Denna ordsegmentering f¨oljer i stort sett TEMs krav och kan d¨arf¨or anv¨andas till just detta ¨andam˚al. Programmet ¨ar skrivet i C++ f¨or Linux, men g˚ar att anv¨anda p˚a andra operativsystem.[5]

2.2.3 Hunalign

Hunalign ¨ar ett system f¨or l¨ankning av meningar som utvecklades under the Hunglish Project 2005. Hunalign fungerar b˚ade med och utan specifika spr˚akresurser, utan spr˚akresurser anv¨ander den sig av menings-l¨angd och annan information f¨or att g¨ora en kvalificerad gissning. Det ¨ar skrivet i Portable C++, s˚a det kan i teorin kompileras p˚a n¨astan vilket

operativsystem som helst.[6] 2.2.4 GMA

GMA(Geometric Mapping and Alignment) ¨ar ¨annu ett system f¨or l¨ankning av meningar. Det ¨ar baserat p˚a Smooth Injective Map Recognizer som ¨ar en statistisk algoritm framtagen i samband med skapandet av GMA.[7] Systemet ¨ar framtaget av Dan Melamed ˚ar 1996 och ¨ar skrivet i Java. Det fungerar enligt skaparen b¨ast med spr˚akresurser som till exempel lexikon, men ¨ar inget som kr¨avs. Programmet ¨ar skrivet f¨or Linux och Solaris, men eftersom det ¨ar skrivet i Java b¨or det fungera p˚a ett flertal andra

operativsystem. [8]

2.3 System f¨or visualisering och redigering

2.3.1 Cairo

Cairo ¨ar ett program f¨or visualisering av ordl¨ankning utvecklat ˚ar 2000 av Noah A. Smith och Michael E. Jahr. Programmet l¨aser in en fil med tv˚a meningar med dess l¨ankningsdata. Det visualiserar ordl¨ankning genom att l¨agga tv˚a meningar l¨angs med varandra, antingen horisontellt eller

vertikalt, och ritar sedan streck mellan l¨ankade ord(se figur 1). Det ger ¨

(11)

Figur 1: Visualisering av l¨ankning i Cairo. 2.3.2 I*Link

I*Link ¨ar ett program f¨or hantering av parallella texter utvecklat vid Link¨opings universitet ˚ar 2000. Det kr¨aver tv˚a texter d¨ar meningarna ¨ar l¨ankade sedan innan och l¨ankar sj¨alv p˚a ordniv˚a. I*Link till˚ater anv¨andaren att verifiera alternativt modifiera ordl¨ankningen genom att g˚a igenom alla ord i en mening. Programmet gissar p˚a en l¨ankning mellan ord eller fraser och anv¨andaren accepterar eller ber om en ny gissning. Programmet visualiserar ordl¨ankningen genom att matcha f¨arg p˚a ord som ¨ar l¨ankade, tv˚a ord som ¨ar l¨ankade har med andra ord samma bakgrundsf¨arg(se figur 2). Detta s¨att att visualisera l¨ankning fungerar bra med mindre meningar, men blir l¨att sv˚arf¨orst˚add vid st¨orre meningar. [10]

(12)

2.3.3 Yawat

Yawat(Yet Another Word Alignment Tool) ¨ar ett verktyg f¨or att visualisera och redigera ord- och fras-l¨ankning av parallella texter. Det utvecklades av Ulrich Germann vid University of Toronto. Yawat ger m¨ojlighet att visualisera ordl¨ankning genom att rita streck mellan l¨ankade ord och ¨aven att visualisera som matris. Det som g¨or det unikt ¨ar dess dynamiska visualisering. Denna dynamiska l¨ankning visas genom att byta bakgrundsf¨arg p˚a alla associerade ord, men bara n¨ar muspekaren pekar p˚a ett av orden(se figur 3).

Figur 3: Dynamisk visualisering i Yawat.

Yawat ger ¨aven m¨ojlighet att visualisera l¨ankningen som en matris. H¨ar skapas ett rutn¨at d¨ar meningarna ligger horisontellt respektive vertikalt mot varandra och varje ruta representerar en l¨ank mellan varje ord. En kryssad ruta betyder att tv˚a ord ¨ar l¨ankade. Denna representation anv¨ands ¨

aven f¨or att ge m¨ojlighet att redigera l¨ankningen mellan ord, genom att l˚ata anv¨andaren kryssa i och ur rutor(se figur 4).[11]

(13)

3

Metod

F¨or att skapa programmet kr¨avs f¨orst och fr¨amst att ett antal val g¨ors. Sedan b¨or ¨aven en generell plan tas fram f¨or hur arbetet ska fortg˚a. Planen som togs fram s˚ag ut som f¨oljer.

1. Val av vilket programmeringsspr˚ak programmet ska utvecklas i. 2. Val av de externa system, l¨ankningssystem, som kr¨avs.

3. Ta fram metoder f¨or att anropa och hantera de externa systemens in-och utdata.

4. Ta fram en datastruktur som kan hantera alla data som kr¨avs f¨or programmet.

5. Utveckla ett grafiskt anv¨andargr¨anssnitt som anv¨ander framtagen datastruktur.

3.1 Verktyg och programmeringsspr˚ak

3.1.1 Programmeringsspr˚ak

Valet av programmeringsspr˚ak best¨ams av flera variabler och viktigast i detta fall ¨ar att spr˚aket st¨ods p˚a operativsystemen som kr¨avs. Det ¨ar ¨aven viktigt att det finns bibliotek f¨or utveckling av grafiska gr¨anssnitt

tillg¨angliga d˚a detta avsev¨art underl¨attar utveckling. Det finns m˚anga spr˚ak som st¨odjer operativsystemen som kr¨avs, men f˚a av dessa har ett bibliotek som fungerar ¨over alla plattformar.

Java ¨ar framtaget f¨or att vara s˚a plattformsoberoende som m¨ojligt, detta betyder att ett program i Java kan k¨oras p˚a alla operativsystem utan att beh¨ova kompileras om. Java-kod kompileras till byte-kod och denna byte-kod kan senare k¨oras p˚a vilken Java Virtual Machine(JVM) som helst. En JVM ¨ar en emulerad dator som tolkar kompilerad Java-kod. P˚a grund av detta system s˚a kan ett Java-program k¨oras p˚a alla

operativsystem som har en JVM installerad utan att kompileras om. JavaFX ¨ar en mjukvaruplattform som ¨ar till f¨or att skapa

anv¨andargr¨anssnitt till Java-applikationer. Fr˚an och med Java 8 ing˚ar JavaFX som ett standardbibliotek i Java och med Javas

plattformsoberoende s˚a blir ¨aven JavaFx plattformsoberoende, dock inte helt i samma utstr¨ackning d˚a JavaFX kr¨aver grafiska komponenter av operativsystemet.

(14)

P˚a grund av detta s˚a passar Java och JavaFX utm¨arkt till detta syfte.

3.1.2 L¨ankningssystem

Verktygen som beh¨ovs ¨ar f¨orst och fr¨amst ett l¨ankningssystem p˚a

meningsniv˚a och ett p˚a ordniv˚a. Ut¨over dessa kan det ¨aven kr¨avas ett s¨att att dela upp text i delar s˚a som stycken, meningar och ord. D˚a m˚anga system anv¨ander egen tokenisering kan det vara en bra id´e att b¨orja med att v¨alja dessa.

Som system p˚a meningsniv˚a finns det tv˚a popul¨ara system att v¨alja mellan; Hunalign och GMA. B˚ada dessa system ¨ar i stort sett

plattformsoberoende och kr¨aver inga specifika spr˚akresurser. D˚a ingenting avsev¨art skiljer systemen, utan n˚agon st¨orre utv¨ardering, kan valet baseras p˚a hur l¨att systemen ¨ar att anv¨anda f¨or detta syfte. Utefter detta blev valet Hunalign.

Anymalign och GIZA++ ¨ar tv˚a system f¨or l¨ankning p˚a ordniv˚a. De fyller b˚ada kraven p˚a att st¨odja s˚a m˚anga spr˚ak som m¨ojligt eftersom de ¨ar statistiskt baserade. Eftersom Anymalign st¨ods p˚a fler operativsystem ¨an GIZA++ talar detta f¨or Anymalign, men p˚a grund av Anymaligns

speciella s¨att att exekveras ¨ar GIZA++ att f¨oredra. GIZA++ anv¨ander sig ¨

aven av ett externt program f¨or att dela upp meningar i ord och skapa en ordbok ¨over texten. Detta kan till f¨ordel anv¨andas i programmet.

Eftersom verktygen som valts ut ¨ar skrivna i C++ ¨ar dessa inte helt plattformsoberoende. F¨or att dessa ska fungera p˚a olika operativsystem m˚aste de kompileras f¨or det specifika operativsystemet och i m˚anga fall m˚aste de ¨aven anropas lite annorlunda, till exempel med olika

mapp-avskiljare i Linux och Windows.

3.2 Systemutvecklingsmetodik

Vid utveckling av mjukvara finns det flera olika metoder som man kan arbeta efter. Gemensamt f¨or n¨astan alla dessa metoder ¨ar en m¨angd faser som arbetet g˚ar igenom. I stort sett ¨ar dessa faser som f¨oljande:

kravspecificering, design, implementation och fels¨okning. Dessa faser ¨ar oftast inte helt separerade utan p˚ag˚ar till stor del ¨overlappande med varandra. Kravspecificering involverar bland annat att ta fram en

kravspecifiktion, men ¨aven framtagande av prototyper och dylikt ¨ar vanligt f¨or att ge en klarare bild av det blivande programmet. N¨ar

kravspecifikationen ¨ar klar m˚aste programmet delas upp och en plan f¨or hur kravspecifikationen ska realiseras m˚aste tas fram. Detta brukar kallas

(15)

f¨or design och involverar till stor del att dela upp programmet i mindre och mindre delar. N¨ar designen ¨ar klar s˚a b¨or det egentligen bara finnas en sak kvar att g¨ora, att programmera alla delar och koppla ihop dem. Detta ¨

ar vad som kallas f¨or att implementera programmet. N¨ar varje del av programmet ¨ar implementerad s˚a m˚aste de ¨aven fels¨okas f¨or att f¨ors¨akra att de fungerar som de ska. Fels¨okning ¨ar n˚agot som g¨ors b˚ade f¨or enskilda delar av programmet, och n¨ar flera delar kopplas ihop.

Exempel p˚a programutvecklingsmetoder ¨ar den traditionella

vattenfalls-modellen, V-modellen samt agila metoder som Scrum och Extreme Programming. Under vattenfalls-modellen sker alla faser efter varandra utan n˚agon st¨orre ¨overlappning, metoden anser p˚a s˚a vis att framtiden ¨ar f¨oruts¨agbar. Denna metod kritiseras d¨arf¨or ofta, eftersom man vid b¨orjan ett projekt ofta inte vet tillr¨ackligt mycket om ett projekt f¨or att g¨ora en felfri planering. Svaret p˚a denna kritik ¨ar agila

utvecklingsmetoder d¨ar den grundl¨aggande filosofin ¨ar att just framtiden ¨

ar of¨oruts¨agbar. De agila metoderna g¨or sitt yttersta att till˚ata att den kunskap man samlar p˚a sig under arbetets g˚ang tas tillvara p˚a genom att l˚ata all planering ¨andras.[12]

P˚a grund av storleken p˚a detta arbete s˚a kommer det inte f¨olja n˚agon av dem n¨amnda metoderna best¨amt utan kommer ist¨allet ta inspiration av dem. Kravspecifikationen ¨ar fr˚an b¨orjan i stort sett klar och kommer d¨arf¨or inte specificeras ytterligare. Design, implementation och fels¨okning kan ske i stort sett parallellt p˚a grund av storleken p˚a programmet. Ett f¨ors¨ok till ˚aterkoppling genom hela arbetet kommer att ske f¨or att lyfta fram eventuella brister i programmet.

4

Design och Implementation

4.1 Datahantering

N¨ar val av programmeringsspr˚ak och l¨ankningssystem ¨ar gjorda s˚a kr¨avs en plan f¨or att koppla ihop och hantera datan. Eftersom tanken ¨ar att anv¨andaren ska ge tv˚a filer i olika spr˚ak som indata m˚aste programmet hantera data f¨orst och fr¨amst i denna form. Fr˚an ren text m˚aste datan konverteras till Hunaligns indata-format. Hunalign kr¨aver tv˚a filer, en f¨or varje spr˚ak, som inneh˚aller en mening p˚a varje rad. F¨or att ˚astadkomma detta automatiskt utan att kr¨ava att anv¨andaren beh¨over g¨ora det manuellt kr¨avs ¨annu ett verktyg. Ett skript utvecklat av Philipp Koehn och Josh Schroeder under Europarl som heter Sentence-splitter

˚astadkommer just detta. Sentence-splitter kr¨aver specifika spr˚akresurser, men dessa finns tillg¨angliga i ett 20-tal spr˚ak. [13]

(16)

N¨ar texterna ¨ar indelade i meningar kan de l¨ankas i Hunalign. Utdata fr˚an Hunalign best˚ar av en fil med tv˚a eller fler l¨ankade meningar p˚a samma rad. Hunalign matchar en eller flera meningar i ett spr˚ak emot en mening i motsvarande spr˚ak. Om Hunalign l¨ankar flera meningar i ett av spr˚aken separeras dessa med en speciell avskiljare. Denna data m˚aste d¨arf¨or konverteras till hanterlig indata f¨or GIZA++, d˚a GIZA++ kr¨aver likadan indata som Hunalign med undantaget att meningarna nu ska vara

l¨ankade.

GIZA++ anv¨ander sig av ett eget dataformat SNT, som kan konverteras till med verktyget Plain2snt som tillh¨or GIZA++. Plain2snt delar upp texterna i tre filer. Tv˚a filer ¨ar en typ av ordbok f¨or varje text, d¨ar varje ord har givits ett identifikationsnummer. Den tredje filen inneh˚aller de parade meningarna med orden utbytta till sina respektive

identifikationsnummer. Dessa tre filer anv¨ands sedan vid anrop till GIZA++ och med r¨att inst¨allningar produceras en fil med vad GIZA++ rankar som det b¨asta l¨ankningsalternativet. Denna fil best˚ar av meningar fr˚an k¨allspr˚aket i dess vanliga form och orden fr˚an ¨overs¨attningen har blivit givna en eller flera siffror f¨or vilket/vilka ord i k¨allan som det ¨ar l¨ankat till.

Anrop till verktygen kan ske med Java genom att anv¨anda de inbyggda processfunktionerna. Sentence-splitter kan b˚ade ta emot och ge sin utdata direkt, som g˚ar att l¨asa in rad f¨or rad genom Java. Detta ¨ar p˚a grund av att det endast kr¨aver en typ av indata och ger en typ av utdata, utan n˚agra extra tecken. F¨or b˚ade Hunalign och GIZA++ kr¨avs dock att filer skapas p˚a h˚arddisken b˚ade f¨or indata och utdata. Utdatan kan l¨att l¨asas in och filerna som skapats kan sedan tas bort.

Det finns nu tillr¨ackliga metoder f¨or att g˚a ifr˚an tv˚a parallella texter till ordl¨ankad utdata ifr˚an GIZA++ helt automatiskt. Detta ¨ar f¨orst˚as inte vad som skulle ˚astadkommas. Vad som beh¨ovs h¨arifr˚an ¨ar ett s¨att att hantera denna data, i alla dess former f¨or att kunna ge m¨ojlighet att redigera den i ett gr¨anssnitt. Datan och datatyperna som kommer beh¨ova hanteras ¨ar:

1. De fulla texterna i originalformat 2. Texterna uppdelade i meningar 3. Meningarnas l¨ankningsdata 4. Meningarna uppdelade i ord 5. L¨ankningsdata f¨or varje ord

De tre f¨orsta punkterna kan hanteras med tv˚a listor, en f¨or varje spr˚ak. I dessa listor ¨ar varje objekt en mening som inneh˚aller meningen, ett

(17)

identifikationsnummer och den l¨ankade meningens identifikationsnummer. Det g˚ar ¨aven att anv¨anda denna lista till att h˚alla texterna innan de delats upp i meningar och l˚ata andra delar av programmet h˚alla reda p˚a vilken form datan har.

De tv˚a sista punkterna ˚astadkoms l¨attast genom att dela upp varje meningsobjekt i delar, eftersom meningarna vid detta l¨age ¨ar l¨ankade och inte b¨or ¨andras. F¨or detta skapas, precis som f¨or meningar, en lista d¨ar varje objekt inneh˚aller ett ord, dess identifikationsnummer samt l¨ankning. Man kan h¨ar, till f¨ordel, anv¨anda GIZA++ uppdelade format med

ordlistor och meningar i sifferformat. Orden i denna del representeras med andra ord enbart i siffror och orden sparas ist¨allet i ordlistor som anv¨ands n¨ar orden beh¨over skrivas ut.

Denna datastruktur visualiseras i figur 5. H¨ar ¨ar Alignment en klass som ¨

ar t¨ankt att inneh˚alla all information som beh¨ovs samt funktioner f¨or att hantera den. Alignment inneh˚aller en lista med Sentence-objekt som inneh˚aller all information om meningarna. Klassen Sentence inneh˚aller i sin tur en lista med Word-objekt som h˚aller reda p˚a information om enstaka ord.

Sentence Word

1 1...* 1 1...*

Figur 5: UML f¨or informationshanteringen.

Eftersom datan kan befinna sig i olika l¨agen beh¨ovs en metod f¨or att h˚alla reda p˚a vilket l¨age datan befinner sig i. Detta ¨ar ¨aven hopkopplat med gr¨anssnittet som tas upp senare.

Detta l¨ostes genom en variabel State som kan befinna sig i f¨oljande l¨agen:

Empty

Empty fungerar som start-l¨age och n¨ar inga texter har l¨asts in. Split

Split ¨ar l¨aget Alignment befinner sig i direkt efter inl¨asning av tv˚a texter. Det vill s¨aga n¨ar texterna ska segmenteras i meningar. Datan h¨ar best˚ar enbart av Sentence objekt med enbart hela str¨angar. Align

N¨ar Alignment befinner sig i l¨aget Align ska texten vara segmenterad i meningar. I detta l¨age ska meningarna l¨ankas till varandra. Datan best˚ar nu av korrekt uppdelade meningsobjekt med korrekt eller okorrekt meningsl¨ankning.

(18)

View

I View ¨ar segmentering eller meningsl¨ankning klar. Meningarna och deras l¨ankningar ska nu vara fasta. Det som kan ¨andras i texterna efter detta ligger endast p˚a meningsniv˚a, det vill s¨aga det p˚averkar enbart enstaka meningar.

Egentligen skulle View kunna delas i tv˚a l¨agen, men p˚a grund av att skillnaden h¨ar ligger p˚a meningsniv˚a beh¨over inte klassen Alignment h˚alla reda p˚a detta. Detta underl¨attar ocks˚a det faktum att alla meningar inte beh¨over vara segmenterade och l¨ankade p˚a ordniv˚a.

4.2 Anv¨andargr¨anssnitt

Anv¨andargr¨anssnittet ska till˚ata redigering av texterna i alla l¨agen. L¨agena ¨

ar i f¨orsta hand meningsuppdelning, meningsl¨ankning och ordl¨ankning. Det kr¨avs med andra ord tre redigerings-vyer. Gr¨anssnittet beh¨over ocks˚a st¨odja att se texterna i sin helhet och visualisera l¨ankningarna. Ut¨over detta tillkommer en meny som inneh˚aller knappar f¨or alla funktioner, till exempel att spara och ¨oppna.

4.2.1 Uppl¨agg

Eftersom vissa funktioner ska finnas tillg¨angliga hela tiden och vyerna enbart ska visas en i taget kan gr¨anssnittet delas i tv˚a delar. En meny i ¨

ovre delen som inneh˚aller funktioner f¨or att till exempel l¨asa in filer, spara och ¨oppna. Den undre delen blir en vy d¨ar texterna visas men som byts ut d˚a datan byter l¨age, i enlighet med Alignments tillst˚and.

F¨orst kr¨avs en meny som med f¨ordel l¨aggs ¨overst i f¨onstret, och under detta ett f¨alt som inneh˚aller olika vyer. Dessa delar kan sedan hanteras med tv˚a olika klasser separat, en klass MenuHandler kan hantera menyn och en annan klass ViewHandler kan hantera vyerna.

Dessa klasser kr¨aver b˚ada det aktiva Alignment-objektet som argument, dels f¨or att kunna hantera dess information och dels f¨or att kunna bli informerade n¨ar denna ¨andras. F¨or att ˚astadkomma det senare kan ett designm¨onster som kallas f¨or Observer anv¨andas. Med denna metod utses vissa klasser till lyssnare p˚a det aktiva Alingment-objektet. N¨ar

Alignment-objektet ¨andras kan det tala om det f¨or alla objekt som lyssnar p˚a den att en ¨andring har skett. P˚a s˚a vis kan en del av programmet modifiera Alignment-objektet och resterande delar uppfattar detta. Detta kan till exempel anv¨andas f¨or att byta vy d˚a Alignment-objektet byter l¨age. Alignment-objektet meddelar sina prenumeranter att en ¨andring har

(19)

skett. ViewHandler kommer d˚a att kolla om det ¨ar l¨aget som har bytts och ¨

andra vy om s˚a ¨ar fallet. 4.2.2 Menyfunktioner

Menyn b¨or inneh˚alla alla funktioner som inte ¨ar vy-specifika. De sj¨alvklara funktionerna ¨ar; Nytt projekt, spara, spara som, ¨oppna, och avsluta. Ut¨over dessa tillkommer ¨aven funktioner f¨or att exportera till ett vissa format, editera grammatiska tokens och att till˚ata anv¨andaren att g˚a tillbaka till tidigare l¨agen i projektet. Funktionerna f¨or att spara och ¨

oppna f¨orklaras mer utf¨orligt i n¨asta kapitel.

F¨or att skapa ett nytt projekt m˚aste anv¨andaren specificera vilka tv˚a textfiler som ska l¨asas in och vilken text som ¨ar k¨alltexten respektive ¨

overs¨attningen. F¨or att ˚astadkomma detta beh¨ovs en dialog som inneh˚aller tv˚a textf¨alt, en f¨or respektive fil. Filformatet som st¨ods beh¨over ¨an s˚a l¨ange inte vara mer ¨an ”.txt”, d˚a konverterare till och fr˚an andra format kan l¨aggas till vid ett senare tillf¨alle. H¨ar b¨or ¨aven funktioner f¨or att bl¨addra grafiskt i mappar finnas tillg¨angligt. Knappar f¨or att ¨oppna b˚ada filerna och f¨or att avbryta dialogen l¨aggs ocks˚a till. N¨ar filerna ¨ar valda anropas en funktion i Alignment som l¨aser in filerna som om de vore meningar och s¨atter l¨aget till Split. Detta kan ¨aven anv¨andas till att uppdatera vyer n¨ar Alignment-objektet ¨andras. Dialogen f¨or att skapa nytt projekt kan ses i figur 6.

Figur 6: Dialog f¨or att skapa nytt projekt.

F¨or att TEM-ramar senare ska kunna r¨aknas ut m˚aste ¨aven en funktion f¨or att specificera vilka ord som ¨ar grammatiska implementeras. Eftersom ordlistor fr˚an GIZA++ redan anv¨ands s˚a beh¨ovs varje lista enbart

utvidgas med en extra variabel. D˚a det inte finns n˚agra verktyg som skulle kunna hj¨alpa till med detta kr¨avs en metod f¨or att ge anv¨andaren

m¨ojlighet att ange vilka ord som ¨ar grammatiska. Detta kan ˚astadkommas enkelt genom att visa alla ord i en lista d¨ar anv¨andaren kan markera vilka ord som ¨ar grammatiska(se figur 7). F¨or att ge anv¨andaren ˚atkomst till dialogen l¨aggs knappar till f¨or dessa funktioner till i menyn.

(20)

Figur 7: Dialog f¨or att ange grammatiska ord. 4.2.3 Spara- och ¨oppna-funktioner

F¨or att implementera spara- och ¨oppna-funktioner kr¨avs ett s¨att att spara all data externt ifr˚an programmet. Detta ˚astadkoms givetvist l¨attast genom att skriva data till filer p˚a h˚arddisken. F¨or att ˚astadkomma detta b¨or funktioner i klassen Alignment l¨aggas till och innan dessa funktioner anropas m˚aste ¨aven Alignment uppdateras med r¨att data. I Split- och Align-l¨aget ¨ar informationen i anv¨andargr¨anssnittet inte alltid den samma som i Alignment eftersom den laddas innan den kan redigeras, den ¨ar allts˚a inte synkroniserad. Det kr¨avs allts˚a att informationen i gr¨anssnittet f¨orst sparas till Alignment.

Knappar f¨or att spara och ¨oppna ¨ar t¨ankta att anropa funktionerna i Alignment. F¨or att visa f¨or anv¨andaren att en Alignment ¨ar sparad och inte ¨andrad b¨or knappen f¨or att spara avaktiveras. N¨ar n˚agot redigeras aktiveras knappen igen. F¨or att ˚astadkomma detta l¨aggs en variabel Edited till i Alignment.

F¨or att kunna spara och sedan ¨oppna ett projekt kr¨avs att all information sparas. Detta inkluderar vilket l¨age projektet ¨ar i samt all information som kr¨avs f¨or att kunna l¨asa in datan korrekt igen, bland annat antalet

meningar och storleken p˚a ordb¨ocker. P˚a grund av att klassen Alignment inneh˚aller olika typer av information i de olika l¨agena m˚aste informationen sparas och laddas olika beroende p˚a l¨aget. I Split- och Align-l¨aget m˚aste ocks˚a informationen som ¨ar aktiv i gr¨anssnittet f¨orst sparas.

Gemensamt f¨or alla sparade filer blir endast att l¨aget f¨orst sparas, detta kan representeras med ett heltal. Filen b¨orjar allts˚a med ett heltal i som s¨ager vilket format datan har och vilket l¨age anv¨andargr¨anssnittet befinner sig i. F¨or att hantera de olika l¨agena beh¨ovs sedan funktioner f¨or att skriva

(21)

datan i r¨att format.

I Split-l¨aget sparas endast texten i det format det f¨or tillf¨allet befinner sig i. F¨or att ˚astadkomma detta skrivs f¨orst information om hur m˚anga meningar som sparats av b˚ada spr˚aken, sedan f¨oljer alla meningar i ordning.

I Align-l¨aget sparas, precis som i Split-l¨aget, alla meningar. Det som m˚aste tillkomma ¨ar meningsl¨ankningen. Denna kan l¨aggas till efter meningen p˚a samma rad, separerat med en avskiljare.

I View-l¨aget finns det tv˚a scenarier. Om ordl¨ankning/segmentering inte existerar ska informationen sparas precis som i Align-l¨aget, dock med ett annat heltal f¨or l¨aget eftersom programmet b¨or ˚aterv¨anda till r¨att vy vid inl¨asning. Innan meningarna skrivs b¨or information om hur m˚anga meningar som finns i varje spr˚ak och hur m˚anga ord det finns i varje ordbok skrivas ut.

Om segmentering och ordl¨ankning existerar m˚aste ¨aven dessa sparas. Eftersom det tillkommer en hel del information j¨amf¨ort med f¨oreg˚aende l¨age kan det underl¨atta att dela upp varje mening p˚a fler rader. F¨or att spara ordl¨ankningen kan varje Sentence-objekt ifr˚an k¨alltexten delas upp p˚a tre rader. F¨orsta raden blir d˚a som i Align-l¨aget, meningen i textform och meningsl¨ankning med avskiljare. Andra raden best˚ar av meningen uppdelad i ord b˚ade med ordens ID i ordboken och ordets position i meningen, med en avskiljare mellan varje ord. P˚a tredje raden skrivs ordens l¨ankningsdata. Sentence-objekten i ¨overs¨attningen skrivs i samma stil som ifr˚an k¨alltexten, men utan sista raden f¨or ordl¨ankningen. Efter att alla Sentence-objekt har skrivits ut skrivs ¨aven ordb¨ocker ner med dess ID, ord och om dessa ¨ar grammatiska tokens eller inte.

N¨ar en sparad fil senare ska l¨asas in, l¨ases f¨orst heltalet in som best¨ammer l¨aget, sedan anropas olika funktioner beroende p˚a detta tal. Funktionerna l¨aser in datan precis som den skrevs ut, med hj¨alp av bland annat

information om hur m˚anga meningar som skrivits. Sist av allt s¨atts l¨aget som programmet ska befinna sig i.

4.2.4 Vy f¨or meningsuppdelning

En ny vy ’SentenceSplitView’ skapas f¨or l¨aget Split, som ska hantera meningsuppdelningen. F¨or att kunna dela upp meningarna i r¨att format kr¨avs att anv¨andaren kan redigera texten som just en text. H¨ar g˚ar det att anv¨anda ett vanligt textf¨alt f¨or ren text som till˚ater redigering. Eftersom det ¨ar tv˚a texter skapas tv˚a f¨alt bredvid varandra, en f¨or varje spr˚ak, som inneh˚aller texterna. Nu kan allts˚a programmet l¨asa in tv˚a texter och

(22)

texterna visas bredvid varandra, k¨alltext till v¨anster och ¨overs¨attning till h¨oger.

Innan eller efter texterna l¨ases in ¨ar det t¨ankt att de ska automatiskt delas upp med hj¨alp av Sentence-splitter skriptet. Eftersom Sentence-splitter kr¨aver att f˚a veta vilket spr˚ak texterna ¨ar i m˚aste dessa specificeras vid inl¨asning av filerna, om det ska ske direkt vid inl¨asning. Denna funktion beh¨over dock inte alltid anv¨andas och det ¨ar d¨arf¨or b¨attre att ge

valm¨ojligheten att anv¨anda den. Med detta i ˚atanke b¨or funktionen l¨aggas som alternativ efter inl¨asningen. Detta kan ˚astadkommas i form av en spr˚akvals-box och en Automatic-knapp under varje textf¨alt. En

continue-knapp l¨aggs till l¨angst ner i vyn, s˚a att anv¨andaren kan verifiera att uppdelningen ¨ar klar.

Denna vy n˚as direkt n¨ar ett nytt projekt skapas. Resultatet ¨ar en vy d¨ar texterna syns parallellt i varsin editerbar textruta. Anv¨andaren blir h¨ar instruerad att dela upp texterna i meningar, en mening p˚a varje rad. Under varje textruta finns en box f¨or val av spr˚ak och en knapp Automatic. V¨aljer anv¨andaren spr˚ak och trycker p˚a knappen Automatic f¨ors¨oker programmet automatiskt dela upp texterna. N¨ar anv¨andaren ¨ar klar med uppdelningen trycker denne p˚a Continue-knappen och kommer till en ny vy.

(23)

4.2.5 Vy f¨or meningsl¨ankning

Precis som f¨or f¨oreg˚aende l¨age m˚aste en vy skapas f¨or l¨aget Align. I detta l¨age ¨ar alla meningar fasta objekt, det vill s¨aga texten i meningarna ska vara fast. Meningarna kan d¨arf¨or i detta l¨age hanteras som hela objekt utan n˚agon textredigering, det enda som beh¨over kunna redigeras ¨ar sj¨alva meningsl¨ankningen. Hur detta kan ˚astadkommas finns det inga bra

exempel p˚a, men p˚a grund av att meningar kan hanteras som objekt kan man t¨anka sig att man kan p˚a n˚agot s¨att dra i meningarna och p˚a s˚a s¨att l¨anka dem till varandra. Viktigt h¨ar ¨ar att visualiseringen av l¨ankningen st¨ammer ¨overrens med utdata fr˚an Hunalign.

Utdata fr˚an Hunalign ¨ar tv˚a eller flera meningar p˚a en rad, d¨ar en mening ¨

ar l¨ankad till en eller flera meningar i motsvarande spr˚ak. Programmet m˚aste med andra ord kunna visualisera att meningar ¨ar ol¨ankade, l¨ankade en mot en eller en mot flera. Med detta i ˚atanke, samt id´en att dra och sl¨appa menings-objekt, kan man t¨anka sig att man har l˚ador som

meningarna kan befinna sig i. Anv¨andaren drar och sl¨apper meningarna i l˚adorna f¨or att l¨anka dem. F¨or att h˚alla is¨ar spr˚aken skapas en typ av l˚adpar d¨ar meningar som ¨ar l¨ankade ligger i respektive l˚ada f¨or varje spr˚ak. Dessa l˚ador kan d˚a inneh˚alla noll, en eller flera meningar.

F¨or att hantera detta kr¨avs en klass som inneh˚aller tv˚a l˚ador i form av ListBoxes. Dessa Listboxes inneh˚aller Sentence-objekt och presenteras grafiskt i listan som en mening. F¨or att g¨ora det mer l¨attf¨orst˚aeligt f¨or anv¨andaren l¨aggs l˚adorna p˚a varsin sida, precis som i f¨oreg˚aende l¨age. Meningarna kan nu dras mellan l˚adorna i respektive spr˚ak, det vill s¨aga endast upp eller ner och inte ˚at sidan. Precis som i f¨oreg˚aende l¨age l¨aggs en continue-knapp till l¨angst ner i vyn, s˚a att anv¨andaren kan verifiera att l¨ankningen ¨ar klar.

Resultatet blir en vy d¨ar anv¨andaren instrueras att l¨anka meningarna till varandra. Detta g¨or anv¨andaren genom att dra meningarna mellan l˚ador som ligger parallellt i par. L¨angst ner finns ¨aven h¨ar en Automatic-knapp som vid anv¨andning f¨ors¨oker l¨anka meningarna automatiskt. Skulle anv¨andaren beh¨ova ¨andra i en mening trycker denne p˚a knappen Edit sentences under Edit-menyn eller p˚a Back-knappen l¨angst ner och kommer d˚a tillbaka till f¨oreg˚aende vy. N¨ar anv¨andaren ¨ar klar och accepterar meningsl¨ankningen trycker denne p˚a Continue-knappen och kommer till en ny vy.

(24)

Figur 9: Vy f¨or redigering av meningsl¨ankning. H¨ar har anv¨andaren precis dragit en mening till ¨oversta l˚adan.

4.2.6 Vy f¨or visualisering ˚

Aterigen kr¨avs en vy f¨or l¨aget View. Denna vy ska kunna ge en ¨overblick ¨

over alla meningar och vilka meningar som ¨ar l¨ankade till vilka. Den ska ¨

aven visa ordl¨ankning och ge m¨ojlighet att redigera ordl¨ankning. Meningarna ¨ar h¨ar statiska som i f¨oreg˚aende vy och dessutom l¨ankade. Meningarna beh¨over med andra ord bara kunna visas utan att kunna redigeras eller ¨andras i f¨orsta hand men anv¨andaren ska efter segmentering kunna redigera ordl¨ankningen f¨or ett specifikt menings-par. F¨or att kunna hantera att meningar ¨ar b˚ade segmenterade och enbart meningsl¨ankade kr¨avs ¨aven flera s¨att att representera meningarna.

F¨orst och fr¨amst m˚aste meningarna kunna visas och meningsl¨ankningen b¨or vara synlig. N¨ar meningarna ¨annu inte ¨ar segmenterade kan de visas som ren text. F¨or att tydligg¨ora vilka meningar som ¨ar vilka l¨aggs meningarna bredvid varandra som i f¨oreg˚aende vyer, men till att b¨orja med endast i ren text.

N¨ar meningarna ¨ar segmenterade och ordl¨ankade kommer anv¨andaren beh¨ova kunna titta n¨armare p˚a ett specifikt meningspar, bland annat f¨or att kunna redigera ordl¨ankningen. F¨or att ge m¨ojlighet till detta l¨aggs m¨ojligheten att klicka p˚a ett meningspar f¨or att s¨atta det i fokus. Huruvida ett meningspar s¨atts i fokus finns det lite alternativ p˚a. Tv˚a

(25)

rimliga alternativ ¨ar att skapa ett nytt f¨onster separerat fr˚an resten av texten, eller ¨andra saker som bakgrundsf¨arg och upps¨attning p˚a texten f¨or att p˚a s˚a s¨att lyfta fram den. Eftersom m˚alen med att s¨atta gruppen i fokus ¨ar relativt begr¨ansade duger det att att lyfta fram gruppen i vyn. Detta kan ˚astadkommas genom att byta bakgrundsf¨argen till en ljusare f¨arg och ¨aven l¨agga meningarna ovanp˚a varandra, ist¨allet f¨or bredvid varandra. Under meningarna kan d˚a diverse alternativ, s˚a som knappar f¨or redigering och annan visualisering, l¨aggas till.

F¨or att hantera meningsparen och alla dess representationer beh¨ovs ny en klass SentenceViewController(SVC). Eftersom varje SVC kommer hantera ett meningspar och tillhandah˚alla en representation f¨or denna s˚a passar det att SVC ut¨okar klassen som vyn hanterar, i detta fall klassen HBox. SentenceView ¨ar h¨ar t¨ankt att inneh˚alla en lista med SVC, som alla hanterar sina egna meningar separat.

SVC inneh˚aller tv˚a listor med meningar, en f¨or varje spr˚ak. SVC ¨ar t¨ankt att representera meningarna utefter det l¨age meningarna ¨ar i.

SentenceView h˚aller reda p˚a vilken SVC som ¨ar markerad och ska vara i fokus. SVC f˚ar reda p˚a ifall den blir markerad eller av markerad ifr˚an SentenceView och representerar sitt meningspar olika utefter det. Om meningsparet ¨ar segmenterat s˚a representeras det som segmenterat, ¨ar det markerat representeras det som s˚a och vice versa. Det finns allts˚a fyra olika s¨att meningspar m˚aste kunna representeras som och detta sk¨ots nu automatiskt.

Resultatet blir den tredje och sista vyn(se figur 10). Texterna syns h¨ar bredvid varandra, meningspar f¨or meningspar. Klickar anv¨andaren p˚a en mening l¨aggs denna mening och dess motsvarande mening ovanp˚a

varandra. Om ordl¨ankning existerar visas ¨aven den och om ett meningspar ¨

ar i fokus ges ¨aven m¨ojlighet att redigera ordl¨ankning genom en knapp. Anv¨andaren kan ¨aven h¨ar v¨alja att g˚a tillbaka till uppdelnings-vyn eller meningsl¨anknings-vyn genom att anv¨anda knapparna i

verktygsf¨altet.

4.2.7 Visualisering av ordl¨ankning

Det finns flera olika s¨att att visualisera ordl¨ankning, som visat i kapitel 2.2. De flesta s¨att involverar dock n˚agon typ av grafisk representation d¨ar mer ¨an bara texten visas. Dessa tekniker ¨ar oftast bra f¨or att ge en helhet av l¨ankningen, men f¨or att kunna visualisera ordl¨ankningen i SentenceView beh¨ovs ett minimalt s¨att utan grafiska komponenter. Ett simpelt och dugligt s¨att f¨or att ˚astadkomma detta ¨ar att byta f¨arg p˚a ett ord och dessa l¨ankade motsvarigheter n¨ar man f¨or musen ¨over dem, p˚a det viset det g¨ors

(26)

Figur 10: Huvudvyn med ett markerat meningspar utan ordl¨ankning. i Yawat.

F¨or att implementera detta skapas en Label f¨or varje ord i varje mening och p˚a varje label l¨aggs sedan en lyssnare som k¨anner av n¨ar muspekaren dras ¨over den. N¨ar h¨andelsen som lyssnaren utl¨oser v¨al sker byts f¨orst f¨arg p˚a den Label som musen ¨ar ¨over. Sedan m˚aste ordets l¨ankade

motsvarigheter tas fram i motsvarande mening och alla Labels f¨or dessa ord m˚aste ¨aven de byta f¨arg. F¨or att ge en b¨attre bild av l¨ankningen b¨or ¨

aven alla de l¨ankade ordens l¨ankningar g˚as igenom. D¨arf¨or m˚aste detta ske i en kedja, tills alla ord som ska ¨andras har ¨andrats. N¨ar musen senare tas bort fr˚an ett ord beh¨over detta inte ske omv¨ant, ist¨allet nollst¨alls hela meningen till ursprungsf¨argen.

F¨or att automatiskt segmentera meningarna i ord och l¨anka p˚a ordniv˚a trycker anv¨andaren p˚a Add word alignment under Edit-menyn. Vyn ser fr˚an b¨orjan likadan ut, men h˚aller anv¨andaren ¨over ett ord kommer ordet och ordets l¨ankade ord i motsvarande mening att byta f¨arg till r¨od. Trycker anv¨andaren p˚a en mening nu kommer meningarna fortfarande l¨aggs ovanp˚a varandra men nu visas ¨aven en knapp och ett antal TEM-ramar(se figur 11).

(27)

Figur 11: Markerat meningspar med ordsegmentering och visualisering av ordl¨ankning.

4.2.8 Redigering av ordl¨ankning

Redigeringen av ordl¨ankningen b¨or ske separat fr˚an resten av texten f¨or att denna kr¨aver extra plats, i detta fall ¨ar det en bra id´e med ett nytt f¨onster. Redigeringen kan ske f¨or hela texten eller f¨or en mening i taget vid behov.

¨

Aven om m¨ojligheten att redigera en hel mening ˚at g˚angen existerar, kan det vara bra att ha m¨ojligheten att snabbt ¨andra ett specifikt ord. En knapp l¨aggs d¨arf¨or till under meningar som ¨ar i fokus, och denna knapp ¨

oppnar ett nytt f¨onster f¨or redigering av ordl¨ankning.

Det finns flera s¨att att redigera ordl¨ankning, som tas upp i kapitel 2, men simplast att implementera ¨ar att anv¨anda tekniken bakom visualiseringen. I och med att ordl¨ankningen endast finns i k¨alltexten s˚a kan man t¨anka sig att man f¨or varje ord i k¨alltexten v¨aljer vilka ord i ¨overs¨attningen som detta ord ¨ar l¨ankat till. Detta kan ˚astadkommas mycket enkelt genom att ge m¨ojligheten att klicka p˚a det ord man vill redigera och sedan klicka p˚a de ord som ordet ska l¨ankas till. N¨ar redigeringsf¨onstret ¨oppnas ges m¨ojligheten att klicka p˚a ett valfritt ord i k¨allmeningen, n¨ar ett ord v¨aljs s˚a markeras de ord i ¨overs¨attningsmeningen som redan ¨ar l¨ankade. Anv¨andaren ska nu kunna markera och avmarkera de ord i

¨

overs¨attningsmeningen som ordet ska l¨ankas till och sedan spara dessa ¨

andringar.

Detta kan enkelt implementeras genom att anv¨anda liknande tekniker som vid visualiseringen. Det g˚ar att anv¨anda sig av samma algoritm som n¨ar f¨arg p˚a ord byts, och l¨agga till funktioner f¨or att trycka p˚a ordet. Efter l¨aggs funktioner till som hanterar n¨ar ett ord kan klickas p˚a och vad som ska ske vid olika tillf¨allen.

F¨or att g¨ora detta mer f¨orst˚aeligt kan sm˚a ¨andringar i presentationen l¨aggas till. Innan anv¨andaren trycker p˚a ett ord i k¨allmeningen kan alla ord i ¨overs¨attningen vara ljusgr˚a f¨or att visa att dessa inte g˚ar att trycka p˚a. N¨ar anv¨andaren v¨al trycker p˚a ett ord kan alla andra ord i k¨allmeningen bli gr˚a, ¨overs¨attningen blir nu svart och alla l¨ankade ord blir markerade med en gr¨on bakgrund.

(28)

fokus, knappen ¨oppnar ett nytt f¨onster. I detta f¨onster syns meningarna ovanp˚a varandra och fr˚an b¨orjan ¨ar ¨overs¨attningen i en ljusgr˚a f¨arg. Anv¨andaren v¨aljer h¨ar ett ord ur k¨allmeningen att redigera(se figur 12).

Figur 12: B¨orjan p˚a editering av ordl¨ankning.

N¨ar ett ord ¨ar valt markeras det med gr¨on bakgrundsf¨arg och resten av k¨allmeningen blir ljusgr˚a. ¨Overs¨attningen blir nu i svart f¨arg och alla ord som ¨ar l¨ankade f˚ar en gr¨on bakgrundsf¨arg. Anv¨andaren avmarkerar eller markerar nu ord genom att klicka p˚a dem och sparar l¨ankningen genom att trycka p˚a Save(se figur 13).

Figur 13: Val av ord att redigera ¨ar valt och ett nytt ord att l¨anka till ¨ar valt.

5

Diskussion och Resultat

5.1 Resultat

Programmet som har skapats ger m¨ojlighet att skapa ett projekt med hj¨alp av tv˚a parallella texter. Vid skapande av ett projekt instrueras anv¨andaren att dela upp texterna i meningar och till hj¨alp finns en knapp som f¨ors¨oker g¨ora detta automatiskt. N¨ar texterna ¨ar uppdelade instrueras anv¨andaren ˚aterigen, denna g˚ang f¨or att l¨anka meningarna emot varandra. ¨Aven h¨ar

finns det en knapp som f¨ors¨oker ˚astadkomma detta automatiskt. N¨ar meningsl¨ankning ¨ar klar visas texterna och meningsl¨ankningen i en ny vy.

(29)

Nu finns m¨ojligheten f¨or anv¨andaren att l¨agga till ordsegmentering och ordl¨ankning f¨or texterna. Om anv¨andaren v¨aljer detta kommer vyn se likadan ut, men m¨ojligheten att visualisera ordl¨ankningen har lagts till. Om anv¨andaren klickar p˚a ett meningspar hamnar dessa i fokus och m¨ojlighet att redigera ordl¨ankning finns, samt att ett par TEM-ramar visas. Programmet till˚ater ¨aven att spara ett projekt f¨or att vid ett senare tillf¨alle ¨oppna det igen.

I kapitel 1.3 presenterades en lista p˚a krav som programmet skulle st¨odja. De flesta av dessa punkter ¨ar uppfyllda p˚a ett eller annat s¨att. Punkt f¨or punkt s˚a ser det ut som f¨oljande:

• En k¨alltext ska kunna l¨aggas in i systemet • En ¨overs¨attning ska kunna l¨aggas in i systemet

De tv˚a f¨orsta punkterna har implementerats genom att anv¨andaren kan skapa ett nytt projekt d¨ar anv¨andaren m˚aste v¨alja en k¨alltext och ¨

overs¨attning.

• Automatisk strukturering av texterna i stycken eller meningar med editeringsm¨ojligheter

N¨ar ett nytt projekt har skapats m˚aste texterna struktureras upp i meningar innan de kan meningsl¨ankas. Anv¨andaren kan v¨alja att g¨ora detta manuellt genom att redigera texterna eller automatiskt genom skriptet Sentence-splitter fr˚an Europarl. F¨or tillf¨allet st¨ods automatisk uppdelning f¨or upp till 20 spr˚ak.

• Automatisk l¨ankning av meningar med editeringsm¨ojligheter

N¨ar texterna delats upp i meningar s˚a kr¨aver programmet att anv¨andaren l¨ankar meningarna. H¨ar har anv¨andaren m¨ojligheten att automatiskt l¨anka meningarna genom programmet Hunalign. Anv¨andaren kan ¨aven redigera l¨ankningen manuellt genom att dra och sl¨appa meningar i l˚ador.

• Automatisk tokenisering av texterna med editeringsm¨ojligheter Programmet st¨odjer automatisk tokenisering d˚a detta sker vid anrop till GIZA++. Det finns d¨aremot inga m¨ojligheter att editera denna

tokenisering.

• Taggning av ord

Taggning av ord ¨ar implementerat enbart p˚a en ytterst enkel niv˚a f¨or att kunna r¨akna ut vissa delar av TEM. Detta st¨ods genom att anv¨andaren manuellt kan m¨arka ord som grammatiska eller inte.

(30)

N¨ar meningar ¨ar l¨ankade s˚a finns m¨ojligheten att l¨agga till ordl¨ankning i texterna. Detta sker genom anrop till GIZA++ med funktionen Add word alignment i menyn. Anv¨andaren har ¨aven m¨ojlighet att redigera

ordl¨ankningen i sista vyn. Denna redigering sker i ett nytt f¨onster d¨ar anv¨andaren v¨aljer ett specifikt ord som denne vill redigera.

• Visualisering av ordl¨ankning och meningsl¨ankning

Visualisering av meningsl¨ankning sker i sista vyn genom att meningarna ligger bredvid varandra horisontellt samt att ett meningspar kan s¨attas i fokus. Visualisering av ordl¨ankning sker dynamiskt genom att anv¨andaren f¨or musen ¨over ett ord.

• Visning av TEM m˚att

I sista vyn finns m¨ojligheten att titta n¨armre p˚a ett meningspar genom att klicka p˚a det. N¨ar anv¨andaren klickar p˚a ett par hamnar dessa i fokus och m¨ojlighet att redigera ordl¨ankning visas. H¨ar visas ¨aven ett antal

TEM-ramar. M˚atten som visas ¨ar BCF, OCF och BFF.

Programmet ¨ar skrivet i Java och fungerar p˚a alla operativsystem med tillg˚ang till en Java Virtual Machine f¨or Java version 8 och upp˚at. Tyv¨arr st¨ods inte alla funktioner i programmet p˚a alla operativsystem d˚a alla verktyg inte ¨ar plattformsoberoende. De funktioner som inte alltid st¨ods ¨ar automatisk meningsuppdelning och meningsl¨ankning samt att l¨agga till ordsegmentering.

5.2 Diskussion

5.2.1 Metod

Utveckling av programmet har inte varit utan dess motg˚angar. Den ¨

oversiktliga planen har f¨oljts och fungerat bra. Den kunde dock ha gjorts mer detaljerad, framf¨or allt med avseende p˚a det grafiska gr¨anssnittet. Det som kunde gjorts annorlunda var att s¨oka ˚aterkoppling p˚a bland annat uppl¨agget av gr¨anssnittet. Detta skulle b˚ade underl¨atta och spara tid d˚a bristerna kunde ha uppt¨ackts innan dom implementerades.

I ¨ovrigt har systemutvecklingsmetodiken fungerat bra. Testning och implementation har kunnat ske parallellt utan att skapa problem. Detta beror p˚a att de flesta delarna av programmet har implementerats en efter en och att dom dessutom inte har n˚agon st¨orre inverkning p˚a

varandra.

En mer utf¨orlig utv¨ardering av l¨ankningssystem skulle vara att f¨oredra. Framf¨orallt beh¨ovs en v¨ardering av hur bra systemen ¨ar med eller utan

(31)

spr˚akspecifika resurser, samt hur mycket dessa p˚averkar. 5.2.2 Resultat

Det finns anv¨andarv¨anliga brister i programmet. Framf¨orallt visas eller f¨orklaras egentligen inte att ett projekt existerar i olika l¨agen. Det beh¨ovs b˚ade ett s¨att som visualiserar detta i anv¨andargr¨anssnittet och n˚agon typ av guide som kan f¨orklara detta vid skapande av ett nytt projekt.

M¨ojligtvis skulle dessa vyer kunna separeras till en typ av genomg˚ang i olika steg, men detta skulle i s˚a fall g¨ora funktionerna f¨or att spara och ¨

oppna lite problematiska. Det kunde ocks˚a l¨aggas till n˚agon typ av indikation att varje vy ¨ar ett steg i projektets g˚ang.

Visualiseringen av ordl¨ankning ¨ar ett bra och smidigt s¨att att se l¨ankningen utan att strukturen av meningarna p˚a n˚agot s¨att st¨ors. Det l˚ater anv¨andaren se och l¨asa texten utan vidare att vara st¨orande. Denna typ av visualisering ger dock ingen ¨oversiktlig bild av l¨ankningen, utan det kan beh¨ovas flera s¨att att visualisera ordl¨ankningen. Eftersom m¨ojligheten att s¨atta en mening i fokus finns skulle det kunna l¨aggas till flera

alternativ h¨ar, framf¨orallt de vanligaste visualiserings-tekniker som tas upp i kapitel tv˚a. Denna visualisering b¨or dock ske i ett separat f¨onster eller i en annan del av vyn.

Redigering av ordl¨ankning ¨ar f¨or n¨arvarande anpassad f¨or att redigera ett ord i taget. Detta ¨ar en anv¨andbar funktion om anv¨andaren vill just det, att redigera endast ett ord. Det ¨ar dock b˚ade sv˚art att se felaktiga

l¨ankningar i redigeraren p˚a grund av att endast den simpla visualiseringen visas h¨ar. Det skulle vara anv¨andbart med en mer grafisk visualisering ¨

aven h¨ar, m¨ojligtvis genom att dra streck eller anv¨anda matris-metoden. Att b˚ade visualisera och till˚ata redigering med matriser kan vara mycket effektivt. Detta har tyv¨arr en stor nackdel; stora meningar skapar mycket stora rutn¨at. N¨ar rutn¨aten blir f¨or stora s˚a blir det ist¨allet mycket sv˚art att se vilka ord som ¨ar l¨ankade och de ¨ar dessutom mycket sv˚ara att f˚a plats med p˚a en datorsk¨arm utan att rutorna blir f¨or sm˚a. ¨Aven I*Links redigeringsmetod, d¨ar anv¨andaren f˚ar g˚a igenom hela meningar och verifiera l¨ankningen, ¨ar ett bra alternativ som effektivt g˚ar igenom en hel mening.

Redigering av meningsl¨ankning ˚astadkommer det den beh¨over, vilket ¨ar att kunna matcha meningar mot deras motparter. Meningsl¨ankningen p˚averkar dock mer ¨an bara l¨ankningen mellan meningar. Den best¨ammer bland annat strukturen p˚a meningarna vilket kan bli ett problem med den nuvarande redigeraren. Att ¨andra strukturen i en text kan bli ett problem bland annat d˚a en anv¨andaren beh¨over flytta ett meningspar eller separera

(32)

tv˚a meningar. Detta skulle kunna l¨osas genom att l˚ata anv¨andaren l¨agga in tomma l˚ador d¨ar detta ¨onskas, ist¨allet f¨or att det automatiskt l¨aggs till l¨angst ner. Det skulle ¨aven vara anv¨andbart med funktioner f¨or att byta plats p˚a tv˚a meningar fr˚an samma spr˚ak. Dessa funktioner skulle

m¨ojligtvis kunna implementeras som knappar f¨or en markerad mening. P˚a samma st¨alle skulle ¨aven knappar f¨or att flytta meningen upp eller ner ¨

aven kunna l¨aggas till, som ett alternativ till att dra och sl¨appa. Verktygen och ordsegmenteringen ¨ar i denna implementation externa. Problemet med detta ¨ar att vissa inte fungerar p˚a alla operativsystem, som resten av programmet. Det finns ¨aven en risk med externa anrop att problem skulle uppst˚a som inte g˚ar att hantera fr˚an programmet. Det skulle vara till f¨ordel med ett helt integrerat system, helst helt skrivet i Java. Detta skulle underl¨atta m˚anga delar av systemet och en st¨orre del av informationen fr˚an dessa verktyg skulle kunna tas tillvara p˚a.

5.3 M¨ojlig utvidgning av systemet

En teknik som tyv¨arr inte anv¨ands i systemet ¨ar att GIZA++ kan ge ett flertal l¨ankningsalternativ. Ist¨allet till˚ats GIZA++ sj¨alv v¨alja det

alternativ som det sj¨alv rankar som b¨ast. Det skulle kunna g˚a att l˚ata anv¨andaren ist¨allet v¨alja mellan ett par av dessa l¨ankningsalternativ. Detta skulle ¨aven kunna kombineras med I*Links redigeringsmetod om man l˚ater anv¨andaren f¨orst v¨alja mellan ett par alternativ och sedan verifiera eller modifiera varje ord i meningen.

Automatisk ordklasstaggning vore en m¨ojlig utvidgning av programmet. Detta skulle f¨orse anv¨andaren med mer information om texterna och samtidigt underl¨atta framtagning av TEM-ramar, d˚a n˚agra av ramarna kr¨aver detta.

Att separera l¨ankningssystem och anv¨andargr¨anssnitt genom en server-och klient-del ¨ar ocks˚a en m¨ojlighet. Detta skulle kunna realiseras med en central serverdel som inneh˚aller l¨ankningssystem och d¨ar klienten skickar texterna f¨or bearbetning genom en klient. Klienten skulle inte beh¨ova inneh˚alla n˚agra externa verktyg utan skulle enbart anv¨andas f¨or att visualisera eller redigering texten. Med en klient skulle till exempel en l¨arare kunna skapa en uppgift, som eleverna sen kommer ˚at och kan l¨anka sin text emot. Detta skulle ge m¨ojlighet f¨or ett mer sofistikerat system f¨or l¨ankning som kan utnyttja data fr˚an flera ¨overs¨attningar. I ett s˚adant system skulle b˚ade statistik och m¨ojligtvis ¨aven maskininl¨arning vara m¨ojligt.

(33)

6

Slutsats

Syftet med detta arbete var att skapa ett program som utnyttjar

existerande verktyg f¨or att l¨anka tv˚a parallella texter. Programmet skulle kunna l¨anka automatiskt, samt kunna visualisera och ge anv¨andaren m¨ojlighet att redigera denna l¨ankning. Det skulle ¨aven kunna betygs¨atta en ¨overs¨attning med hj¨alp av TEM.

Programmet som skapats till˚ater en anv¨andare att l¨anka tv˚a parallella texter med varandra och anv¨ander sig av tv˚a system f¨or automatisk l¨ankning, ett p˚a meningsniv˚a och ett p˚a ordniv˚a. Det till˚ater redigering och visualisering av denna l¨ankning p˚a b˚ade menings- och ord-niv˚a. Det ¨ar ¨

aven anpassat till att kunna r¨akna ut och visa vissa ramar inom TEM.

Programmet kan anv¨andas av n˚agon utan djupare kunskaper om l¨ankning och l¨ankningssystem. Hur anv¨andarv¨anligt och anv¨andbart programmet ¨ar i sitt nuvarande format ¨ar diskuterbart. M˚alet att programmet skulle kunna anv¨andas i spr˚akutbildningar har med stor sannolikhet inte n˚atts. F¨or att programmet ska ˚astadkomma detta kr¨avs ett par utvidgningar har programmet och m¨ojligtvis en mer komplett l¨osning d¨ar samtliga externa system ist¨allet ¨ar helt integrerade.

(34)

Referenser

[1] Ljuba Tarvi (2006). Comparative Translation Assessment: Quantifying Quality.

[2] Lars Ahrenberg, Ljuba Tarvi (2013). Natural Language Processing for the Translation Class. In proc. Of the second workshop on NLP for computer-assisted language learning , Oslo, Norway.

[3] http://anymalign.limsi.fr/ (h¨amtad 2015-01-12)

[4] Adrien Lardilleux, Yves Lepage. (2009) Sampling-based multilingual alignment. International Conference on Recent Advances in Natural Language Processing (RANLP 2009), Borovets, Bulgaria, September 2009.

[5] Franz Josef Och, Hermann Ney.(2003) A Systematic Comparison of Various Statistical Alignment Models, Computational Linguistics, volume 29, number 1, pp. 19-51 March 2003.

[6] D´aniel Varga, L´aszl´o N´emeth, P´eter Hal´acsy, Andr´as Kornai, Viktor Tr´on, Viktor Nagy (2005).Parallel corpora for medium density languages In Proceedings of the RANLP 2005, pages 590-596 [7] I. Dan Melamed (1996). A Geometric Approach to Mapping Bitext

Correspondence, IRCS Technical Report 96-22, a revised version of the paper presented at the First Conference on Empirical Methods in Natural Language Processing (EMNLP’96), Philadelphia, PA, May. [8] http://nlp.cs.nyu.edu/GMA/ (h¨amtad 2015-01-12)

[9] Noah A. Smith, Michael E. Jahr. (2000). Cairo:An alignment

visualization tool. In Second In-ternational Conference on Linguistic Resourcesand Evaluation

[10] http://www.ida.liu.se/labs/nlplab/ILink/readme.htm (h¨amtad 2015-01-12)

[11] Ulrich Germann (2008) Yawat: Yet Another Word Alignment Tool. Proceedings of the ACL-08: HLT Demo Session (Companion Volume), pages 20–23

[12] Shari Lawrence Pfleeger, Joanne M. Atlee (2009) Software Engineering - Theory and Practice, 4th edition, Pearson Education International. [13] Philipp Koehn (2005) Europarl: A Parallel Corpus for Statistical

(35)

På svenska

Detta dokument hålls tillgängligt på Internet – eller dess framtida ersättare –

under en längre tid från publiceringsdatum under förutsättning att inga

extra-ordinära omständigheter uppstår.

Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner,

skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för

ickekommersiell forskning och för undervisning. Överföring av upphovsrätten

vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av

dokumentet kräver upphovsmannens medgivande. För att garantera äktheten,

säkerheten och tillgängligheten finns det lösningar av teknisk och administrativ

art.

Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i

den omfattning som god sed kräver vid användning av dokumentet på ovan

beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan

form eller i sådant sammanhang som är kränkande för upphovsmannens litterära

eller konstnärliga anseende eller egenart.

För ytterligare information om Linköping University Electronic Press se

förlagets hemsida

http://www.ep.liu.se/

In English

The publishers will keep this document online on the Internet - or its possible

replacement - for a considerable time from the date of publication barring

exceptional circumstances.

The online availability of the document implies a permanent permission for

anyone to read, to download, to print out single copies for your own use and to

use it unchanged for any non-commercial research and educational purpose.

Subsequent transfers of copyright cannot revoke this permission. All other uses

of the document are conditional on the consent of the copyright owner. The

publisher has taken technical and administrative measures to assure authenticity,

security and accessibility.

According to intellectual property law the author has the right to be

mentioned when his/her work is accessed as described above and to be protected

against infringement.

For additional information about the Linköping University Electronic Press

and its procedures for publication and for assurance of document integrity,

please refer to its WWW home page:

http://www.ep.liu.se/

References

Related documents

L˚ at y(t) vara andelen av populationen som ¨ar smittad efter tiden t dygn, r¨aknad fr˚ an uppt¨ack- ten... Observera att ¨amnets koncentration ¨ar samma som m¨angden av

Till exempel fick jag inte med n˚ agot Ljus- och Optikland i f¨ orsta f¨ ors¨ oket, och pilen mot Kosmologi, som ligger utanf¨ or den h¨ ar kartan, borde peka mer upp˚ at,

Anv¨ andningsfall/Scenario En anv¨ andare skall kunna v¨ alja att spela med en annan anv¨ andare Utl¨ osare Anv¨ andaren v¨ aljer att spela

L¨ osningen till uppgift 2(b)(ii) fr˚ an provduggan Vi m˚ aste visa tv˚ a

Po¨ angen p˚ a godk¨ anda duggor summeras och avg¨ or slutbetyget.. L¨ osningarna skall vara v¨ almotiverade och

[Tips: Faktorisera polyno-

Antalet kunder som bes¨ oker de tv˚ a aff¨ arerna en timme kan beskrivas med Poissonf¨ ordelningar.. Det genomsnittliga antalet kunder som bes¨ oker de tv˚ a aff¨ arerna ¨ ar

Vid bed¨ omningen av l¨ osningarna av uppgifterna i del 2 l¨ aggs stor vikt vid hur l¨ osningarna ¨ ar motiverade och redovisade. T¨ ank p˚ a att noga redovisa inf¨ orda