Stränglikhet Manchester United vs Manchester Utd. B A R A N S Ö L E N

Storlek: px
Starta visningen från sidan:

Download "Stränglikhet Manchester United vs Manchester Utd. B A R A N S Ö L E N"

Transkript

1 Stränglikhet Manchester United vs Manchester Utd. B A R A N S Ö L E N Examensarbete Stockholm, Sverige 2008

2 Stränglikhet Manchester United vs Manchester Utd. B A R A N S Ö L E N Examensarbete i datalogi om 30 högskolepoäng vid Programmet för datateknik Kungliga Tekniska Högskolan år 2008 Handledare på CSC var Viggo Kann Examinator var Karl Meinke TRITA-CSC-E 2008:092 ISRN-KTH/CSC/E--08/092--SE ISSN Kungliga tekniska högskolan Skolan för datavetenskap och kommunikation KTH CSC Stockholm URL:

3 Referat Oddsen på fotbollsmatcher kan skilja sig åt mellan olika spelbolag, och det finns ett önskemål hos spelintressenter om en tjänst som jämför oddsen mellan spelbolagen och presenterar bästa oddset på ett spel. Ett namn kan dock skrivas på olika sätt av spelbolagen där alla omskrivningar anses vara giltiga av spelintressenter, till exempel Manchester United och Manchester Utd. Automatiseringen av en tjänst för att jämföra oddsen på fotbollsmatcher kräver därför att namnen på fotbollslagen kan identifieras, vilket leder till behovet av en algoritm för att hitta en matchning i ett lexikon med namn på fotbollslag. I detta examensarbete jämförs olika algoritmer för approximativ strängmatchning där målet är att ge en rekommendation av den algoritm som är bäst lämpad för att identifiera fotbollslag ur en lista. De tre algoritmerna som undersöktes är edit distance, Matematikkonsults likhetsmått och n-gramanalys. Matematikkonsults likhetsmått anses mest lämpligt om en felaktig matchning inte anses ha högre vikt än sju korrekta matchningar. Om vikten anses vara högre än sju är n-gramanalys med bigram ett bättre alternativ.

4 String Similarity Manchester United vs Manchester Utd. Abstract The odds on a football game can differ between different betting companies and the gaming community wants a service for comparing odds between gaming companies presenting the best odds on a game. A name can however be written in different ways where all the rewritings are considered valid by the gaming community, for example Manchester United and Manchester Utd. The automization of a service for comparing odds on football games therefore requires the identification of the names of fotball teams which leads to the need of an algorithm for finding a matching in a dictionary with names of football teams. In this master thesis different algorithms are compared for approximative string matching where the goal is to give a recommendation of the algorithm that is most suited for identifying football teams from a list. The three algorithms evaluated are edit distance, similarity measurement of Matematikkonsult and n-gram analysis. The similarity measurement of Matematikkonsult is considered to be the most suitable if a wrong matching isn t considered to have a weight more than seven correct matchings. If the weight is considered to be more than seven n-gram analysis with bigrams is a better option.

5 Förord Efter ett uppehåll på över ett år på datateknik hittade jag äntligen ett examensarbetsförslag som intresserade mig och kunde på så sätt slutföra min utbildning. Tack till David Jacquet, min handledare från Svensk Matematikkonsult, för examensarbetsförslaget och handledning. Jag vill också tacka professor Viggo Kann, min handledare på Nada, för all handledning. Eftersom jag jobbar på dagarna har många kvällar och helger gått åt för att slutföra detta examensarbete. Ett tack går därför till min familj och flickvän som har stått ut med det och stöttat mig. Stockholm, februari 2008 Baran Sölen

6

7 Innehåll Förord 1 Introduktion Bakgrund Problemdefinition Metod Begränsningar Notation Teori Omskrivningar och felstavningar Stränglikhetsalgoritmer Damerau-Levenshtein Matematikkonsults likhetsmått N-gramanalys Soundex SPEEDCOP Regelbaserade algoritmer Probabilistiska algoritmer Neurala nät Mått på effektivitet Utförande Testdata och lexikon Användningsfall Data som ska samlas in Val av algoritmer Kortaste avståndet Matematikkonsults likhetsmått N-gramanalys Algoritmer och metoder som inte valdes från teoriavsnittet Resultat Notation

8 4.2 Algoritmernas snabbhet Exkluderade omskrivningar från undersökningen Körningar med data från spelbolag Körningar med fiktiva data Mått på effektivitet Diskussion Testdata och Laglex Edit distance Matematikkonsults likhetsmått N-gramanalys Jämförelse med tidigare examensarbete Slutsatser Rekommendation Förslag till vidare undersökning Litteraturförteckning 35 Bilagor 36 A Spelbolagen data har hämtats från 37 B Betafördelningen 39

9 Kapitel 1 Introduktion I detta kapitel presenteras bakgrunden till examensarbetet och problemdefinitionen som ligger till grund för undersökningen. Kapitlet tar även upp syftet och ramarna för examensarbetet. 1.1 Bakgrund Antalet spelbolag på Internet har ökat de senaste åren. Oddsen på ett givet spel kan skilja sig mellan spelbolagen, och det finns ett önskemål från spelare om en tjänst som jämför oddsen mellan spelbolagen och presenterar bästa oddset på ett givet spel. Man kan tänka sig att även spelbolagen är intresserade av en oberoende tredjepartstjänst som jämför oddsen mellan olika spelbolag för att veta hur det egna bolaget står sig i förhållande till resten av marknaden. Svensk Matematikkonsult, som är uppdragsgivaren för detta examensarbete, utvecklar matematiska modeller för spel och mjukvara för spelintressenter. Detta examensarbete är en del av ett projekt som syftar till att utveckla mjukvara för att jämföra oddsen mellan olika spelbolag och presentera bästa oddset på ett givet spel. Detta examensarbete kommer endast att omfatta fotboll. Automatiseringen av en tjänst för att jämföra oddsen på fotbollsmatcher kräver att namnen på fotbollslagen kan identifieras ur en lista. Spelbolagen skriver ofta namnen på olika sätt, till exempel Manchester United och Manchester Utd, vilket leder till behovet av en algoritm för att identifiera strängar som syftar på samma lag. Utöver omskrivningarna kan även stavfel förekomma, som dock är få i förhållande till omskrivningarna. 1.2 Problemdefinition Givet ett lexikon över de officiella namnen på europeiska fotbollslag, Laglex, samt en sträng innehållande en omskrivning av ett namn, identifiera det officiella namn som omskrivningen är mest likt. På följande sätt kan ett officiellt namn skrivas om: En eller flera bokstäver tas bort. 1

10 KAPITEL 1. INTRODUKTION En eller flera bokstäver läggs till. De första n bokstäverna blir de sista n bokstäverna. 1.3 Metod Syftet med examensarbetet är att jämföra stränglikhetsalgoritmer och föreslå en algoritm för att identifiera europeiska fotbollslagnamn ur en lista. Tyngdpunkten i arbetet ligger i den jämförande studien av algoritmernas träffsäkerhet. Det officiella namnet som rankas som mest likt omskrivningen ska betraktas som en potentiell matchning. Om officiella namnet är signifikant mer likt omskrivningen än övriga namn i lexikonet ska en matchning anses ha hittats. 1.4 Begränsningar Testdata baseras på högsta divisionerna från fem fotbollsligor i Europa: engelska, italienska, franska, spanska och tyska ligan. Endast de engelska stavningarna av namnen tas hänsyn till. 1.5 Notation Den tomma strängen betecknas ɛ. Bokstav nummer i i en sträng x betecknas x i och de i första bokstäverna i en sträng x betecknas x i. 2

11 Kapitel 2 Teori Detta kapitel beskriver omskrivningar av namn, stränglikhetsalgoritmer och slutligen ett effektivitetsmått för stränglikhetsalgoritmer som sedan används för att utvärdera stränglikhetsalgoritmerna i undersökningen. Stora delar av beskrivningarna av stränglikhetsalgoritmerna, med undantag av Matematikkonsults likhetsmått, har hämtats från Kukich[6]. 2.1 Omskrivningar och felstavningar Det finns många omskrivningar av ett namn som är giltiga. Omskrivningarna handlar i de flesta fallen om förkortningar av de officiella namnen där förkortningarna många gånger följs av en punkt. På spelbolagens hemsidor kan det språk man vill att sidan ska presenteras på väljas. Trots att exempelvis engelska väljs kan namnen på vissa lag stavas som i lagets hemland. En annan vanlig omskrivning är att ändelse som FC (Football Club) kastas om. Nedan visas exempel på omskrivningar: Officiellt namn på engelska Omskrivning 1 Omskrivning 2 Manchester United FC Manchester Utd. Manchester U. Deportivo La Coruna Deportivo La Coruña Deportivo Coruna FC Copenhagen FC Köpenhamn Copenhagen FC Tabell 2.1. Omskrivningar av namn. Utöver omskrivningarna förekommer stavfel. Stavfelen är få i förhållande till omskrivningarna eftersom namnen ses på spelbolagens hemsidor där felen lätt kan upptäckas. Kukich[6] delar upp stavfelen i typografiska fel, kognitiva fel och fonetiska fel. Typografiska fel beror på mekaniska misstag när ordet skrivs, exempelvis feltryckning av tangenter. Felen karakteriseras av inskjutning av en ny bokstav, en bokstav saknas, två intilliggande bokstäver kastas om, en bokstav ersätts med en annan eller en kombination av dessa. Med kognitiva fel menas fel som beror på felaktig inlärning. Fonetiska fel är när en eller flera bokstäver ersätts med andra som låter 3

12 KAPITEL 2. TEORI likartade. Även avsaknaden av en bokstav kan vara ett fonetiskt fel. Exempelvis kan engelska ordet för riddare, knight, kan felaktigt stavas night. En studie som gjordes 1964 av Damerau[2] visade att 80 procent av stavfelen tillhör någon av följande fyra kategorier: Borttagning (Bokstav saknas) United Unitd Insättning (Bokstav läggs till) United Unitedd Substitution (Bokstav ersätts) United Unitid Transposition (Två intilliggande bokstäver kastas om) United Unitde 1986 utförde Peterson[8] en studie som visade att över 90 procent av stavfelen kunde härledas till någon av de fyra kategorierna. Peterson fann att en felaktig bokstav var det vanligaste felet följt av borttagning, insättning och tranposition. I en studie av Pollock och Zamora[10] där icke-ord i en databas studerades visade att endast 6 procent av icke-orden innehöll flerbokstavsfel. 2.2 Stränglikhetsalgoritmer Forskningen och utvecklingen av algoritmer för att, med hjälp av datorer, automatiskt rätta ord i texter började så tidigt som på 1960-talet. Under och 80-talet koncentrerades forskningen kring upptäckt av icke-ord huvudsakligen på att i en text upptäcka icke-ord som orsakades av stavfel. De vanligaste teknikerna som användes var n-gramanalys och lexikonuppslag. Enligt Kukich[6] är de flesta tekniker som används idag baserade på lexikonuppslag, där hela ord slås upp. Att identifiera ett felaktigt eller en omskrivning av ett namn kan ses som ett specialfall av att upptäcka ord i en text som inte finns med i ett lexikon. När ett namn inte finns med i listan över de officiella namnen kan processen att hitta namnet i listan som är mest likt omskrivningen liknas med att föreslå en korrigering till ett felstavat ord. Forskningen kring korrigering av ord började också på 1960-talet och Kukich[6] delar in algoritmerna för att utföra korrigeringarna i följande sex kategorier: Kortaste avståndet (Minimum edit distance algorithms) Likhetsnycklar (Similarity key algorithms) Regelbaserade algoritmer (Rule-based algorithms) N-gramanalys (N-gram analysis) Probabilistiska algoritmer (Probabilistic algorithms) Neurala nät (Nerual nets) 4

13 2.2. STRÄNGLIKHETSALGORITMER Damerau-Levenshtein Damerau-Levenshtein tillhör gruppen av algoritmer som beräknar kortaste avståndet mellan två strängar genom att räkna antalet operationer som krävs för att omvandla den ena strängen till den andra. De tillåtna operationerna är borttagning, insättning, substitution och transposition. Ju färre operationer desto kortare är avståndet mellan två strängar och därmed större likhet mellan strängarna. Damerau[2] rättade felstavningar i en text genom att först generera alla ord på avståndet ett från det felstavade ordet och därefter slå upp orden i ett lexikon för att hitta en matchning. Orden genererades genom att tillämpa operationerna borttagning, insättning, substitution och transposition. Ungefär samtidigt som Damerau presenterade Vladimir Levenshtein en algoritm, edit distance, för att mäta avståndet mellan två ord. Edit distance ger ett mått på avståndet mellan två ord genom att räkna antalet borttagningar, insättningar och substitutioner som behöver göras för att omvandla det ena ordet till det andra. Till skillnad från Damerau räknar edit distance transposition som två operationer. Damerau-Levenshtein distance kallas den variant av edit distance som räknar transposition som en operation. Låt s och t beteckna två strängar. Damerau-Levenshteins avståndsmått ges av den rekursiva ekvationen[11][12] D(ɛ, ɛ) = 0 D(s i, t j ) = min[d(s i 1, t j ) + C(s i, ɛ), D(s i, t j 1 ) + C(ɛ, t j ) (2.1) D(s i 1, t j 1 ) + C(s i, t i ) D(s i 2, t j 2 ) + C(s i 1, t i ) + C(s i, t i 1 )]. Det första uttrycket i funktionen min ger antalet insättningar, det andra ger antalet borttagningar, det tredje ger antalet substitutioner och fjärde ger antalet transpositioner som krävs för att omvandla s till t. Avståndet mellan två bokstäver definieras som { 0 om si = t C(s i, t i ) = i. (2.2) 1 om s i t i I grundversionen av Damerau-Levenshtein distance är avståndet mellan två bokstäver eller bokstav och tomma strängen alltid ett och alla operationer antas ha lika stor sannolikhet att inträffa. Enligt grundversionen är därför Manchester Umited och Manchester Uqited båda avstånd ett från Manchester United. Man kan misstänka att det är större sannolikhet att skriva Umited än Uqited när man avser att skriva United eftersom bokstaven m ligger precis bredvid bokstaven n på tangentbordet. Likaså kommer borttagningar av bokstäver, förkortningar, att förekomma i större utsträckning än insättningar av nya bokstäver som nästan bara kommer att vara en punkt efter en förkortning. 5

14 KAPITEL 2. TEORI Kukich[6] föreslår att statistisk data för stavningsfel kan användas för att ge ett mer realistiskt avståndsmått mellan två bokstäver. Informationen sparas i en n n matris där n är antalet tecken och element (i, j) representerar kostnaden mellan i:te och j:te tecknet. Även en vektor av längd n behövs för att lagra kostnaden mellan tecken och icke-tecken för att hantera insättningar och borttagningar. Damerau-Levenshteins avstånd beräknas vanligtvis med hjälp av dynamisk programmering som bygger på Wagner och Fischers algoritm [13] från Algoritmen tillåter insättning, substitution och borttagning utökade Lawrence och Wagner [7] algoritmen med transposition. En (n + 1) (m + 1) matris skapas där n och m är längderna på strängarna s och t vars kortaste avstånd ska beräknas. Matrisen fylls enligt den rekursiva funktionen 2.1. Element (i, j) i matrisen betecknar avståndet mellan s i och t j. Kortaste avståndet mellan strängarna s och t fås således genom element (n, m) i matrisen. Tidskomplexiteten för algoritmen är O(nm). ɛ U m i t e d ɛ U n i t e d Tabell 2.2. Matris för beräkning av kortaste avståndet mellan United och Umited Matematikkonsults likhetsmått Matematikkonsult föreslår följande lihetsmått mellan strängarna s och t: L(s, t) = 1 2 F (LCS(s, t)) F (s) + F (t) (2.3) där L(s, t) = 0 innebär att strängarna är identiska och L(s, t) = 1 innebär att strängarna inte har något tecken gemensamt. Funktionen LCS, Longest Common Subsequence, beräknar längsta gemensamma delsekvens. LCS definieras enligt följande rekursion[15]: LCS(s i, t j ) = ɛ om i = 0 eller j = 0 LCS(s i 1, t j 1 ) + s i om s i = t j. max(lcs(s i, t j 1 ), LCS(s i 1, t j )) om s i t j (2.4) Ekvationens utseende kan förklaras med att om sista bokstäverna i strängarna s och t är lika, det vill säga s i = t i, måste sista bokstaven vara en del av den längsta gemensamma delsekvensen. Annars jämför man vilken delsekvens som är längst 6

15 2.2. STRÄNGLIKHETSALGORITMER mellan sekvensen (s i, t j 1 ) och (s i i, t j ) för alla delsekvenser tills s i = ɛ och t j = ɛ. Eftersom varje delsekvens har en optimal lösning implementeras LCS lämpligen med dynamisk programmering. En (n + 1) (m + 1) matris skapas där n och m är längderna på strängarna s och t. Matrisen fylls enligt rekursiva ekvationen 2.4 med skillnaden att LCS inte returnerar längsta gemensamma delsekvens utan längden av längsta gemensamma delsekvens för s i och t i. Element (n, m) i matrisen ger längden på längsta gemensamma delsekvens. Längsta gemensamma delsekvens, x, hittas på ɛ p u l n i t q e d ɛ s u n z i t w e d Tabell 2.3. Matris för att beräkna längsta gemensamma delsekvens mellan pulnitqed och sunzitwed. följande sätt: 1. Låt x = ɛ,i = n och j = m. 2. Jämför s i och t j : a) Om s i = t j låt x = s i + x,i = i 1 och j = j 1. b) Om i = 0 eller j = 0 returnera x. c) Om s i = t j jämför a = (i 1, j) med b = (i, j 1). Om a > b låt i = i 1 annars låt j = j 1. Upprepa från 2. Längsta gemensamma delsekvens mellan pulnitqed och sunzitwed är united. Funktionen F definieras som n F (x) = log P (x i ) (2.5) i=1 där P (x i ) är sannolikheten att bokstav x i påträffas på en slumpvis plats i lexikonet och fås genom frekvensanalys av bokstäverna i Laglex. Funktionen F påminner om begreppet informationsentropi som är ett mått på mängden information som finns i en sträng. Informationsentropi beskrivs av ekvationen n H(x) = P (x i ) log 2 P (x i ) (2.6) i=1 7

16 KAPITEL 2. TEORI ɛ p u l n i t q e d ɛ s u n z i t w e d Tabell 2.4. Siffrorna i fetstil visar hur längsta gemensamma delsekvens hittas med start på element (s n, t m ). De understrukna bokstäverna är när s i = t j och tillhör längsta gemensamma delsekvens. och är ett sätt beräkna minsta antalet bitar som behövs för att beskriva en sträng av tecken, baserat på frekvensen av tecken i källan. För united, umited beräknas L(united, umited) på följande sätt: 1. LCS(united, umited) = uited 2. P (u) = 0, 02 P (n) = 0, 05 P (m) = 0, 02 P (i) = 0, 06 P (t) = 0, 04 P (e) = 0, 07 och P (d) = 0, F (uited) = 16, 14 F (united) = 19, 10 och F (umited) = 20, Slutligen fås L(united, umited) = ,14 19,10+20,00 = 0, 83 När informationsentropin, H(x), används istället för F (x) blir skillnaden mellan L(s, t) för bästa och näst bästa matchningen mindre. En mindre skillnad innebär att det blir svårare att fastställa en signifikant skillnad mellan bästa och näst bästa matchningen varför F (x) används istället. När Manchester City skrivs är bästa matchningen Manchester City FC och näst bästa matchningen är Manchester United FC. För H(x) gäller För F (x) gäller L(s, t) = (Manchester United FC, Manchester City) L(Manchester City FC, Manchester City) = 0, 24 0, 11 = 0, 13. L(s, t) = (Manchester United FC, Manchester City) L(Manchester City FC, Manchester City) = 0, 27 0, 08 = 0, 19. 8

17 2.2. STRÄNGLIKHETSALGORITMER N-gramanalys Ett n-gram är en följd av n bokstäver. Ett mått på likhet mellan två strängar är att räkna antalet n-gram de har gemensamt. Ju fler gemensamma n-gram desto större likhet finns mellan strängarna. Vanligtvis används bigram, n = 2, och trigram, n = 3, vid analys. Att endast räkna antalet n-gram tar inte hänsyn till längdskillnaden mellan två strängar. Zobel och Dart[17] nämner Ukkonens n-gram avståndsfunktion som tar hänsyn till strängar med olika längder, GD n (s, t) = A(g, s) A(g, t) (2.7) g G n (s) G n (t) där A(g, x) är antalet förekomster av n-gram g i strängen x och G n (x) betecknar mängden av n-gram i strängen x. Ukkonens avståndsmått tar hänsyn till strängar som innehåller flera förekomster av samma n-gram. Zobel och Dart[17] visade i sin studie att mindre än två procent av orden i deras testdata 1 innehöll upprepningar av bigram och nästan inga ord innehöll upprepningar av trigram. Om man antar att s eller t inte innehåller upprepningar av n-gram kan Ukkonens avståndsfunktion skrivas som GD n(s, t) = G n (s) + G n (t) 2 G n (s) G n (t). (2.8) Bigrammen till United är {Un,ni,it,te,ed} och bigrammen till Umited är {Um,mi,it,te,ed}. De har tre gemensamma bigram {it,te,ed} och enligt Ukkonens avståndsfunktion blir avståndet Ett annat mått är Dice koefficient, GD 2(United,Umited) = = 4. Dice n (s, t) = 2 G n(s) G n (t) G n (s) + G n (t) (2.9) där koefficienten får ett värde mellan 0 och 1 där 1 innebär att strängarna är identiska. För n = 2 och strängarna United och Umited blir Dice koefficient Dice 2 (United,Umited) = = 3 5 N-gramanalys kan även användas för att hitta felstavade ord. Vissa bokstavskombinationer är ovanliga eller inte alls förekommande som till exempel zqp och dgf i svenskan[4]. Genom att bygga upp en n-dimensionell matris som innehåller n-grammen för det aktuella språket och jämföra ordets n-gram med dem som finns i matrisen upptäcks felstavade ord. Om n-grammet saknas i matrisen antas ordet vara felstavat. Fördelen med att använda n-gramanalys för att mäta likheten mellan två ord är att ingen språkspecifik information behöver användas till skillnad från när n- gramanalys används för att upptäcka felstavade ord. Nackdelen är att ingen hänsyn tas till n-grammens inbördes ordning i ordet. 1 Testdata bestod av tre lexikon. Det första innehöll cirka ord, det andra innehöll cirka ord och det tredje innehöll cirka ord. 9

18 KAPITEL 2. TEORI Soundex Algoritmer baserade på likhetsnycklar översätter strängar till nyckelvärden och därefter genom lexikonuppslagning försöker hitta ord med samma nyckelvärden som presenteras som rättningsförslag. Tanken är att strängar som liknar varandra har samma nyckelvärden. En sådan algoritm är Soundex som utarbetades 1918 av Odell och Russell för att underlätta sökningar på efternamn i USA vid folkräkningar. Idén bakom Soundex är att ord som låter likadana kommer att ha samma nyckelvärde. Soundex brukar kallas för en fonetisk algoritm där den fonetiska grundtanken är att det är svårare att stava till vokalljud än konsonantljud. Nyckeln beräknas på följande sätt[16]: 1. Låt första bokstaven i ordet bilda första tecknet i nyckeln. 2. Ta bort alla förekomster av a, e, h, i, o, u, w, y såvida någon av de inte är första bokstaven i ordet. 3. Tilldela resterande bokstäver i ordet följande siffror: b, f, p, v = 1 c, g, j, k, q, s, x, z = 2 d, t = 3 l = 4 m, n = 5 r = 6 4. Om två intilliggande bokstäver har samma siffra ta bort alla förekomster av siffran förutom en. 5. Låt resterande delen av nyckeln bildas av de tre siffrorna som ges av steg 4. Fyll ut nyckeln med nollor om den totala nyckellängden blir mindre än fyra tecken lång. På följande sätt fås nyckeln till United: 1. United, ta bort i och e enligt steg U533, a bort siffran 3 enligt steg U53, lägg till siffran 0 enligt steg 5 vilket slutligen ger nyckeln U530. Fördelen med Soundex är att det går snabbt att beräkna nyckeln som kan användas till lexikonuppslagning för att ge rättningsförslag. Nackdelen enligt Hall och Dowling[5] är att den gör grova översättningar av ord till nycklar. Exempelvis låter de engelska orden wait (= vänta) och weight (= vikt) likadana men genererar olika nycklar, W230 och W300. I en undersökning av Du[3] på sökning av liknande namn i internationella namnlistor, där liststorlekar mellan 5000 och användes, hittade Soundex i snitt 53 procent relevanta matchningar. 10

19 2.3. REGELBASERADE ALGORITMER SPEEDCOP 1984 presenterade Pollock och Zamora[10] SPEEDCOP, som är ett program för att rätta enbokstavsfel. Metoden som användes var att skapa ett lexikon baserat på likhetsnycklar, sortera lexikonet efter nyckelvärde och därefter presentera rättningsförslag genom att söka på ord med ett nyckelvärde som är ett visst avstånd från det felstavade ordets nyckelvärde. De två nycklarna som användes var skeletonnyckeln och omissionnyckeln. Skeletonnyckeln består av första bokstaven i ordet, unika förekomster av konsonanterna i den ordningen de står i ordet och unika förekomster av vokaler i den ordningen de står i ordet. Exempelvis blir skeletonnyckeln till United ntduie. Pollock och Zamora[10] motiverade skeletonnyckelns utseende på följande sätt: Den första bokstaven i ordet kommer oftast att vara rätt bokstav. En undersökning som gjordes av Pollock och Zamora [10][9] visade att endast 7,8 procent av felstavade ord innehöll en felaktig begynnelsebokstav. Motsvarande siffror för andra respektive tredje bokstaven var 11,7 procent och 19,2 procent. Konsonanter är betydelsefullare än vokaler. Konsonanternas ordning ändras oftast inte. Skeletonnyckelns värde påverkas inte av upprepade förekomster av samma bokstav, borttagning av bokstav med flera förekomster samt konsonant- och vokaltransposition. När rättningarna som gjordes med skeletonnyckeln analyserades visade det sig att den största anledningen till att skeletonnyckeln inte hittade relevanta rättningsförslag var att en konsonant var felaktig i ordets inledande bokstäver. Detta beror på att ju tidigare en konsonant är fel i ordet desto större blir nyckelavståndet mellan det felstavade ordet och rättningsförslagen. Avsaknaden av en konsonant var det vanligaste felet. Frekvensen på de konsonanter som saknades studerades och man fann följande ordning, från hög till låg frekvens: RSTNLCHDPGMFBYWVZXQKJ. Omissionnyckeln bildas genom de unika förekomsterna av konsonanterna i ordet sorterade i omvänd ordning, enligt frekvensordningen ovan, följt av de unika förekomsterna av vokalerna i den ordningen de står i ordet. Omissionnyckeln till United blir dntuie. 2.3 Regelbaserade algoritmer Regelbaserade algoritmer använder kunskap om stavfel där olika regler används för att omvandla det felstavade ordet till den korrekta stavningen. Genom att applicera alla regler på det felstavade ordet genereras nya ord. Om det nya ordet finns i lexikonet presenteras det som ett rättningsförslag. Rättningsförslagen rangordnas enligt 11

20 KAPITEL 2. TEORI sannolikheten för att stavfelet, som regeln baseras på, har inträffat[6]. Ju större sannolikhet att ett specifikt stavfel inträffar desto större rankning får rättningsförslaget som genereras till följd av regeln. En fördel med regelbaserade algoritmer är att det är lätt att, genom att lägga till nya regler, utöka funktionaliteten på rättstavningsprogrammet. Nackdelen är att det behövs en regel för varje typ av stavfel. 2.4 Probabilistiska algoritmer Probabilistiska algoritmer använder sannolikheter för att presentera det troligaste rättningsförslaget till ett felstavat ord. Två sorters sannolikheter används[6]: övergångssannolikheten mellan två bokstäver och sannolikheten att en bokstav har blandats ihop med en annan bokstav. Övergångssannolikheten mellan två bokstäver, exempelvis sannolikheten att m följs av ett a, är språkberoende och övergångssannolikheterna beskrivs med Markovmodeller. Sannolikheterna kan estimeras genom frekvensanalys av n-gram i texter för det aktuella språket. Sannolikheten att två bokstäver har blandats ihop kan estimeras genom att man studerar källan som texten härstammar från. Exempelvis kan olika personer ha olika fingersättningar vid tangentbordet vilket gör att sannolikheten att råka trycka på m istället för n kan skilja sig åt från person till person. Ett exempel på en probabilistisk algoritm är Bledsoe och Brownings algoritm som beskrivs av Kukich[6]. Algoritmen består av två delar: Ett bokstavsigenkänningssteg där en vektor som innehåller övergångssannolikheterna skapas för varje bokstav i alfabetet och ett ordigenkänningssteg där ett lexikon används för att välja de bokstäver vars sammansättning ger störst sannolikhet att skapa ett ord som finns i lexikonet. Bledsoe och Browning använder sig av Bayes sats för att beräkna sannolikheten att ordet X avsågs givet att det felstavade ordet Y skrevs, P (X Y ) = P (Y X)P (X). (2.10) P (Y ) 2.5 Neurala nät Neurala nät är uppbyggda av många sammankopplade noder som arbetar parallellt. Kunskap om omvärlden får nätverket genom en inlärningsprocess där kunskapen lagras i styrkan på kopplingarna, vikter, mellan noderna, neuroner. Genom inlärningsprocessen kan neurala nät med tiden anpassas för att lösa ett specifikt problem. De kan läras att känna igen vissa mönster av stavfel och med tiden kan träffsäkerheten ökas. En vanlig algoritm som används för inlärningsprocessen är backpropagationsalgoritmen. Genom att skicka tillbaka fel längs nätet ändras värdena på de vikterna som binder samman neuronerna för att minska felet[1]. Träningen avslutas när skillnaden mellan den förväntade utdatan och den verkliga utdatan från nätet 12

21 2.6. MÅTT PÅ EFFEKTIVITET ligger tillräckligt nära varandra. Nackdelen med backpropagationsalgoritmen är att inlärningsprocessen kan ta lång tid. 2.6 Mått på effektivitet Om officiella namnet är signifikant mer likt omskrivningen än övriga namn i Laglex ska en matchning anses ha hittats. För att avgöra hur bra en metod är på att hitta korrekta matchningar kan följande mått användas: 2 Z = M kf Q (2.11) där M är antalet matchningar, F är antalet felaktiga matchningar, k är en vikt som används för att vikta felaktiga matchningar mot korrekta och Q är antalet frågor, det vill säga antalet omskrivningar som ska matchas. Att avgöra om en matchning är fel är en subjektiv bedömning. Fotbollslaget Inter förknippas oftast med det italienska serie A laget, vars officiella namn är FC Internazionale Milano. Det finns ett finländskt division 1-lag som heter FC Inter. När ett spelbolag skriver Inter kan en matchning anses ha hittats, nämligen det finländska division 1-laget. Speciellt kommer en matchning hittas om man i Laglex ersätter FC Internazionale Milano med Inter som är så pass vedertaget namn på det italienska fotbollslaget att det inte är orimligt att ersätta det officiella namnet med Inter i Laglex. I båda fallen kan matchningar hittas och slutligen blir det en subjektiv bedömning om matchningen anses vara korrekt. I denna undersökning kommer fall som anses vara tveksamma att bedömas som oavgörbara och exkluderas ur resultatet. I bästa fall har matchningar hittats för alla omskrivningar och alla matchningar anses vara korrekta som ger Z = 1. I värsta fall har alla matchningar hittats och alla anses vara felaktiga som ger Z = k. Något typiskt värde på k finns inte och i denna undersökning har k = 5 valts efter diskussion. 2 Måttet har tagits fram tillsammans med David Jacquet från Svensk Matematikkonsult. 13

22

23 Kapitel 3 Utförande I detta kapitel redogörs testdata, användningsfall och algoritmer som ligger till grund för undersökningen. Fördelen med de valda algoritmerna tas upp samt slutligen ges en lista och motivering till algoritmer som inte valdes att undersökas. 3.1 Testdata och lexikon Tesdata består av följande två mängder: Data från spelbolag En lista med 580 namn har samlats in från fem spelbolag, se Appendix A för namnen på spelbolagen. Varje lag från de sex fotbollsligorna förekommer fem gånger i listan. Giltiga omskrivningar En lista med 580 distinkta namn har skapats som är giltiga omskrivningar enligt reglerna i avsnitt 1.2 för varje lag i de sex fotbollsligorna. För varje namn finns fem omskrivningar. Omskrivningarna är inte slumpmässigt skapade enligt omskrivningsreglerna utan skapade för att simulera hur ett spelbolag skulle kunna skriva ett namn. Manchester United kan enligt omskrivningsreglerna skrivas som tedmanchester Uni medan denna omskrivning inte anses vara giltig eftersom den förmodligen inte förekommer hos något spelbolag. Lexikonet Laglex innehåller lagen från de högsta fotbollsdivisionerna, säsong 2007/2008, från de 53 länder som är medlemmar i UEFA (Union of European Football Associations). De officiella namnen i Laglex, som är skrivna på engelska, innehåller vedertagna förkortningar som FC (Football Club) i England och motsvarande förkortningar för övriga länders lag. Laglex har sammanställts från Wikipedia [14] och innehåller 733 lag. 3.2 Användningsfall Stränglikhetsalgoritmen kommer att användas i mjukvara som har till uppgift att jämföra odds på fotbollsmatcher från olika spelbolag och spara dessa i en databas. 15

24 KAPITEL 3. UTFÖRANDE Stränglikhetsalgoritmens uppgift är att rangordna Laglex efter likhet mot ett omskrivet namn. Därefter ska beslut tas på om namnet som stränglikhetsalgoritmen anser är mest likt omskrivningen är tillräckligt likt för att anses vara en matchning. Om en matchning inte kan hittas ska mjukvaran skapa en lista med de n stycken, där n = 10 kommer att användas, namnen i Laglex som är mest likt omskrivningen. 3.3 Data som ska samlas in Resultatet från körningarna ska användas för att utvärdera algoritmernas effektivitet. Insamlingen av data behöver endast göras när en algoritms effektivitet ska undersökas. Resultatet från körningarna kan delas in i två fall: När en matchning har hittats När en matchning har hittats ska Z, ekvation 2.11, beräknas för matchningen. Vikten, k, för en felaktig matchning kommer att sättas till 5 när Z ska beräknas. När en matchning inte kan hittas Antalet gånger som det korrekta namnet förekommer bland de n förslagen ska räknas. Rangordningen är inte viktig och kommer därför inte att tas hänsyn till. Som beslutsunderlag för rekommendationen av vilken algoritm som bör användas av Svensk Matematikkonsult kommer värdet på Z från testdata från spelbolagen vara av störst betydelse. Algoritmen kommer att användas i syfte att automatisera matchningen av strängar och därför är betydelsen om matchningen finns i listan på n förslagen liten. Endast vid fall där även en människa kan ha svårt att avgöra vilket namn som verkligen avses kan en lista på relevanta förslag vara av intresse. Dessa fall antas vara få i förhållande till avgörbara fall varför detta inte påverkar rekommendationen. 3.4 Val av algoritmer Kortaste avståndet I litteraturen nämns oftast stränglikhetsalgoritmer baserade på Dameraus fyra operationer. De flesta undersökningarna visar också att dessa algoritmer ger bäst precisionrecall-resultat[17] vilket är anledningen till att edit distance kommer att användas för denna undersökning. Damerau-Levenshtein, där transposition räknas som en operation, anses inte lämplig i denna undersökning då flesta av omskrivningarna förväntas vara förkortningar där omkastningar av bokstäver inte bör förekomma. I litteraturen var transposition relevant i fall som handlade om mekaniska fel som uppstår när användare skriver på tangentbordet. En frekvensanalys av bokstäverna i Laglex kommer att göras för att ge ett mer realistiskt kostnadsmått för tillägg, borttag och substitution av bokstäver. Kost- 16

25 3.4. VAL AV ALGORITMER nadsfunktionen definieras enligt följande: om s i / Laglex 1 om t i / Laglex och s i = ɛ C(s i, t i ) = 0 om s i = t i. k(1 P (s i )) + 1 om t i / Laglex och s i Laglex k(1 P (s i )) + (1 P (t i )) annars (3.1). Den potentiella matchningen kommer att anses vara en matchning om avståndet till det näst bästa förslaget är större eller lika med d där värdena d = 1, 5,d = 1, 75 och d = 2, 0 kommer att undersökas. Tillägg och borttagningar kommer i denna undersökning anses ha samma vikt vilket innebär att k = 1 i ekvation 3.1 kommer att användas Matematikkonsults likhetsmått De flesta omskrivningarna förväntas vara förkortningar som ibland följs av en punkt. Omskrivningen bör därför inte innehålla nya bokstäver som inte redan finns i det officiella namnet utan punkten förväntas vara det vanligaste fallet där ett nytt tecken har introducerats. Med bakgrund av detta kommer det omskrivningen oftast innehålla alla bokstäver som finns i det officiella namnet. Längsta gemensamma delsekvens som är kärnan i Matematikkonsults likhetsmått är därför en bra utgångspunkt för att fånga dessa fall. Speciellt är längsta gemensamma delsekvens bra för att fånga förkortningar av typen United Utd eftersom ingen hänsyn tas till att bokstäverna u,t och d inte ligger i följd i United. Fördelning för att hitta en matchning Låt l beteckna utfallet av Svensk Matematikkonsults likhetsmått som används för att mäta likheten mellan två strängar där l = 0 betyder att ingen likhet finns mellan två strängar och l = 1 betyder att strängarna är identiska. Alla l i utom det som har lägst värde, l 0, antas kunna beskrivas med betafördelningen, se bilaga B. Värdet l 0 är likheten mellan omskrivningen och namnet i Laglex som den är mest lik. Genom signifikanstest kommer en matchning att försöka hittas där hypotesen är: H 0 : s = t om d 0 > I a (α, β), H 1 : s t om d 0 I a (α, β). Genom signifikanstest kommer hypotesen att prövas för a = 0, 0001, a = 0, och a = 0, Medelvärde och varians definieras enligt: d = 1 N (d i ), (3.2) N i=1 v = 1 (d i d) 2. (3.3) N i=1 17

26 KAPITEL 3. UTFÖRANDE Parametrarna α och β för betafördelningen beräknas enligt: N-gramanalys d(1 d) α = d( 1), v (3.4) d(1 d) β = (1 d)( 1). v (3.5) Fördelen med n-gramanalys är att metoden är språkoberoende samt ingen statistisk data behöver användas när metoden används för en undersökning i stränglikhet. De flesta omskrivningarna förväntas vara förkortningar varför omskrivningen av ett namn och officiella namnet i Laglex bör ha många gemensamma n-gram. Dessutom kan metoden fånga upp fall som FC Copenhagen Copenhagen FC eftersom ingen hänsyn tas till n-grammens ordning i namnen. Omskrivningarna antas sakna upprepningar av bigram och trigram. Därför kommer ekvation 2.8, Ukkonens avståndsfunktion, att användas. Ukkonens avståndsfunktion har valts för att den tar hänsyn till längdskillnaden mellan två strängar. Den potentiella matchningen kommer att anses vara en matchning om avståndet till det näst bästa förslaget är större eller lika med d där värdena d = 1, d = 2 och d = 3 kommer att undersökas Algoritmer och metoder som inte valdes från teoriavsnittet Nedan visas en lista och en kort motivering av algoritmer och metoder som togs upp i teoriavsnittet men inte valdes för utvärdering: Soundex Soundex utvecklades för att söka på engelska efternamn. En undersökning av Du[3] på approximativ matchning av namn i en internationell databas visade att Soundex hade sämst precision i jämförelse med edit distance och n- gramanalys. Eftersom Soundex utvecklades för engelska efternamn samt med bakgrund av Dus[3] resultat kommer den inte tas med i denna undersökning. SPEEDCOP SPEEDCOP är ett program för att rätta enbokstavsfel. De flesta omskrivningar förväntas vara förkortningar där fler än en bokstav har tagits bort och därför tas inte SPEEDCOP med i undersökningen. Regelbaserade metoder Regler för att matcha omskrivningar med namnen i Laglex tros existera. I problemdefinitionen angavs att ett av sätten att skriva om ett namn är att de första n bokstäverna blir de sista n bokstäverna. I praktiken kommer denna regel nästan alltid gälla i fall där exempelvis FC kastas om, Copenhagen FC FC Copenhagen. Dessa typer av regler kommer dock inte att undersökas i ramen för detta examensarbete. Reglerna ses dessutom endast som komplement till den algoritmen som kommer att väljas för matchning av omskrivningar och officiella namn i Laglex. 18

27 3.4. VAL AV ALGORITMER Probabilistiska metoder Övergångssannolikheter för bokstäver och tecken kommer inte att tas fram. Däremot kommer frekvensanalys att göras för bokstäver och tecken som finns i Laglex som anses vara tillräckligt för denna undersökning. Neurala nät Neurala nät har inte fått ett stort utrymme i de artiklar som har lästs i samband med stränglikhet. En stor nackdel med neruala nät är inlärningstiden. Dess träffsäkerhet har heller inte nämnts i någon större utsträckning. Neurala nät anses därför vara utanför undersökningens ramar och kommer därför inte tas med. 19

28

29 Kapitel 4 Resultat I detta kapitel presenteras resultaten av körningarna med de utvalda algoritmerna. I slutet av kapitlet presenteras värdena för Z, effektivtetsmåttet, som ligger till grund för rekommendationen i senare avsnitt. 4.1 Notation Följande förkortningar används i tabellerna: Tr = Tröskel för att en matchning ska anses ha hittats. 1 KM = Korrekta matchningar. FM = Felaktiga matchningar. Ja10 = Det korrekta namnet finns bland de 10 bästa förslagen. Nej10 = Det korrekta namnet finns inte bland de 10 bästa förslagen. Oav = Oavgörbart om det korrekta namnet finns bland de 10 bästa förslagen. 4.2 Algoritmernas snabbhet Algoritmerna implementerades i Java, JDK 5.0. Datorn som används i undersökningen är en Intel Pentium 4 med 1.66 GHz CPU och 2 GB RAM. Algoritmen kommer inte användas i en situation där frekventa uppslagningar görs och snabb respons krävs från mjukvaran. Om algoritmen klarar av att bearbeta 500 namn på en halvtimme anses den tillräckligt snabb för uppgiften. 1 För edit distance och n-gramanalys anses en matchning ha hittats om avståndet mellan det bästa och näst bästa förslaget är större eller lika med värdet i denna kolumn. För Matematikkonsults likhetsmått ska ett signifikanstest göras där en matchning har hittas om d 0 > I a där a ges av värdet i denna kolumn. 21

30 KAPITEL 4. RESULTAT Av de undersökta algoritmerna är n-gramanalys snabbast där listan med 580 namn bearbetades på cirka fem sekunder. Näst snabbast är Matematikkonsults likhetsmått där listan bearbetades på cirka tio sekunder. Edit distance bearbetade listan på cirka 50 sekunder. I tiderna ingår även beslutssteget där den potentiella matchningen undersöks för att avgöra om den är signifikant mer lik namnet i Laglex än den näst bästa matchningen. Ingen av de undersökta algoritmerna anses därför vara långsam nog för att inte klara av uppgiften att bearbeta 500 namn på en halvtime och därför kommer snabbhet inte vara en del av bedömningen när rekommendationen ges. 4.3 Exkluderade omskrivningar från undersökningen Tio omskrivningar anses oavgörbara i undersökningen. 2 Omskrivningarna gäller det italienska laget FC Internazionale Milano och det engelska laget Arsenal FC. Omskrivningarna till FC Internazionale Milano innehåller varken Internazionale eller Milano. Några exempel på omskrivningarna från testdatamängderna är Inter, F.C. Inter och FC Inter. Omskrivningarna anses oavgörbara på grund av för stor likhet till det finländska laget FC Inter. Omskrivningarna till det engelska laget Arsenal FC anses oavgörbara på grund av för stor likhet till det ukrainska laget FC Arsenal Kyiv som kan skrivas som Arsenal eller FC Arsenal. 4.4 Körningar med data från spelbolag Matematikkonsults likhetsmått med tr = 0, 0001 gjorde 506 korrekta matchningar vilket är mest av de undersökta algoritmerna, se tabell 4.1. Jämfört med övriga algoritmer gjorde avståndsmåttet även många felaktiga matchningar, 18 stycken. Endast edit distance med tr = 1, 5 gjorde fler felaktiga matchningar, 26 stycken. Dock var ingen av de undersökta trösklarna för Matematikkonsults likhetsmått liten nog för att eliminera felaktiga matchningar. Endast tre gånger fanns inte den rätta matchningen bland de tio bästa förslagen vilket är det bästa resultatet i undersökningen. Nämnvärt bland resultaten är n-gramanalys med trigram som för det lägsta värdet på tröskeln, tr = 1, endast gjorde två felaktiga matchningar samtidigt som algoritmen gjorde 412 korrekta matchningar. I båda fallen matchades Tottenham FC felaktigen till Fulham FC där det korrekta namnet är Tottenham Hotspur FC. För samma värde på tröskeln, tr = 1, gjorde bigram-analys 453 korrekta matchningar och 17 felaktiga matchningar. En jämförelse mellan båda visar också att trigramanalys har fler fall än bigram-analys för antalet gånger den korrekta matchning finns och inte finns bland de tio bästa förslagen. 2 Dessa fall anses oavgörbara med förutsättningen att ingen ytterligare information är känd om omskrivningarna mer än att de är namn på fotbollslag från högsta divisionerna i länder som är medlemmar i UEFA. 22

31 4.5. KÖRNINGAR MED FIKTIVA DATA Bland resultaten för edit distance är tr = 2 den som anses mest tillfredsställande med 374 korrekta matchningar och inga felaktiga matchningar. Algoritm Tr KM FM Ja10 Nej10 Oav Totalt Edit distance 1, Edit distance 1, Edit distance 2, N-gram (bigram) N-gram (bigram) N-gram (bigram) N-gram (trigram) N-gram (trigram) N-gram (trigram) Matematikkonsults mått 0, Matematikkonsults mått 0, Matematikkonsults mått 0, Tabell 4.1. Resultat från körningar med data från spelbolag. 4.5 Körningar med fiktiva data N-gramanalys med bigram och tr = 1 har både flest antal korrekta matchningar, 479 stycken, och flest antal felaktiga matchningar, 21 stycken, se tabell 4.2. N-gramanalys ökade generellt i både antalet korrekta matchningar och antalet felaktiga matchningar. Däremot minskade antalet fall där den korrekta matchningen inte hittades bland de tio bästa förslagen från 50 till 32 för bigram och från 75 till 42 för trigram. Edit distance minskade i antalet korrekta matchningar, felaktiga matchningar och fall där den korrekta matchningen inte finns bland de tio bästa förslagen. Denna gång lyckades inte de felaktiga matchningarna elimineras för tr = 2, 0 utan fyra felaktiga matchningar hittades. Matematikkonsults likhetsmått är den enda algoritmen som ökade i antalet fall där den korrekta matchningen inte finns med bland de tio bästa förslagen från tre till tio fall. Både antalet korrekta matchningar och felaktiga matchningar minskade. Återigen eliminerades inte antalet felaktiga matchningar utan två felaktiga matchningar gjordes för den lägsta tröskeln tr = 0, Omskrivningarna Atl. Madrid och Atl Madrid matchades felaktigen till Real Madrid CF där den korrekta matchningen är Club Atletico De Madrid. 4.6 Mått på effektivitet Låt oss nu jämföra algoritmerna med avseende på effektivitetsmåttet Z som definierades i avsnitt

32 KAPITEL 4. RESULTAT Algoritm Tr KM FM Ja10 Nej10 Oav Totalt Edit distance 1, Edit distance 1, Edit distance 2, N-gram (bigram) N-gram (bigram) N-gram (bigram) N-gram (trigram) N-gram (trigram) N-gram (trigram) Matematikkonsults mått 0, Matematikkonsults mått 0, Matematikkonsults mått 0, Tabell 4.2. Resultat från körningar med fiktiva data. Generellt är värdena på Z för Matematikkonsults likhetsmått och edit distance större för testdata från spelbolagen än för fiktiv data. För N-gramanalys är det tvärtom. För både data från spelbolag och fiktiv data har Matematikkonsults likhetsmått högst värde på Z, 0,75 respektive 0,74. Likhetsmåttet, för tr = 0, , är den algoritm som även har störst skillnad på Z mellan de båda testfallen där Z = 0, 73 för data från spelbolag och Z = 0, 58 för fiktiva data. Största värdet på Z för N-gramanalys har bigram-analys för tr = 1 där Z = 0, 70 för data från spelbolag och Z = 0, 71 för fiktiva data. Värdena på Z är generellt mindre för edit distance jämfört med övriga algoritmer där största värdet är Z = 0, 64 för tr = 2, 0 för testdata från spelbolag och Z = 0, 54 för fiktiva data. 24

33 4.6. MÅTT PÅ EFFEKTIVITET Algoritm Tr Z Matematikkonsults mått 0,0001 0,75 Matematikkonsults mått 0, ,74 Matematikkonsults mått 0, ,73 N-gram (trigram) 1 0,70 N-gram (bigram) 3 0,67 N-gram (bigram) 1 0,66 N-gram (bigram) 2 0,64 Edit distance 2,0 0,64 N-gram (trigram) 2 0,62 Edit distance 1,75 0,58 Edit distance 1,5 0,54 N-gram (trigram) 3 0,50 Tabell 4.3. Resultat för effektivitetsmåttet Z från körningar med data från spelbolag. Algoritm Tr Z Matematikkonsults mått 0,0001 0,74 N-gram (bigram) 3 0,71 N-gram (bigram) 1 0,68 N-gram (bigram) 2 0,68 N-gram (trigram) 1 0,68 Matematikkonsults mått 0, ,67 N-gram (trigram) 2 0,61 Matematikkonsults mått 0, ,58 Edit distance 2,0 0,54 N-gram (trigram) 3 0,54 Edit distance 1,75 0,53 Edit distance 1,5 0,50 Tabell 4.4. Resultat för effektivitetsmåttet Z från körningar med fiktiva data. 25

34

35 Kapitel 5 Diskussion I detta kapitel diskuteras resultaten från körningarna med stränglikhetsalgoritmerna. Även testdata och Laglex diskuteras för att visa deras påverkan på undersökningen. Kapitlet avslutas med att jämföra resultaten av denna undersökning med ett tidigare examensarbete av Du[3]. 5.1 Testdata och Laglex Även om många spelbolag benämner lag på olika sätt är det sällan fem bolag benämner samma lag på fem olika sätt. I undersökningen med testdata från spelbolagen finns det inte något exempel där samma lag stavas på fem olika sätt. Två eller tre omskrivningar per namn är vanligast. Vanliga omskrivningar är att förkortningar som FC skrivs med eller utan punkt eller utelämnas. Testdata och namnen i Laglex manipulerades inte. En närmare undersökning av testdata visar att det finns regler som kan införas för att förbättra och underlätta matchningen av omskrivningarna. Ett exempel är alla förkortningar för FC, Football Club, i England och motsvarande förkortningar som finns i övriga länder. FC kan skrivas om och användas på följande sätt i ett namn: FC. F.C F.C. Någon av ovanstående variationer kan skrivas antingen före eller efter namnet. En regel skulle kunna införas som tar bort punkterna och placerar FC sist i namnet. Även i Laglex är användningen av punkt inkonsekvent. I Laglex förkortas Football Club F.C. eller FC. Många namn som är officiella används nästan aldrig av vare sig spelbolag eller supportrar. De officiella namnen i Laglex skulle därför kunna ersättas med de mer välkända och vedertagna namnen på lagen för att underlätta matchningen. Några lag där omskrivningen är vanligare än officiella namnet är: 27

Skrivstöd. Joakim Nivre. Introduktion till språkteknologi. Skrivstöd. Inledning. Orsaker till stavfel. Detektering av icke-ord

Skrivstöd. Joakim Nivre. Introduktion till språkteknologi. Skrivstöd. Inledning. Orsaker till stavfel. Detektering av icke-ord Joakim Nivre / 30 Varför bry sig om stavning? Stavfel kan skapa missförstånd Stavfel kan dölja innehåll Standardiserad stavning underlättar många uppgifter Slå upp ord i ordbok Identifiera svårlästa ord

Läs mer

Skrivstöd. Varför bry sig om stavning? Hur används stavningskontroll? Christian Hardmeier

Skrivstöd. Varför bry sig om stavning? Hur används stavningskontroll? Christian Hardmeier Skrivstöd Christian Hardmeier (efter Joakim Nivre) 205-- Varför bry sig om stavning? Stavfel kan skapa missförstånd Stavfel kan dölja innehåll Stavning fungerar som bildningsmarkör Standardiserad stavning

Läs mer

Grundläggande Textanalys VT 2014. Språkgranskning (1) Eva Pettersson eva.pettersson@lingfil.uu.se

Grundläggande Textanalys VT 2014. Språkgranskning (1) Eva Pettersson eva.pettersson@lingfil.uu.se Grundläggande Textanalys VT 2014 Språkgranskning (1) Eva Pettersson eva.pettersson@lingfil.uu.se Översikt Denna gång Stavningskontroll Allmänt om stavningskontroll Feligenkänning Felkorrigering Samarbetsuppgift

Läs mer

Språkgranskningsverktyg, vt 2008

Språkgranskningsverktyg, vt 2008 , vt 2008 Föreläsning 2 Stavningskontroll evapet@stp.lingfil.uu.se 1 Föreläsningsöversikt Feligenkänning Felkorrigering Produktivt bildade ord Kort om labben 2 Vad förväntas av det ideala stavningskontrollprogrammet?

Läs mer

Språkgranskningsverktyg, vt 2009

Språkgranskningsverktyg, vt 2009 , vt 2009 Föreläsning 2 Stavningskontroll evapet@stp.lingfil.uu.se 1 Föreläsningsöversikt Feligenkänning Felkorrigering Produktivt bildade ord Kort om labben 2 Vad förväntas av det ideala stavningskontrollprogrammet?

Läs mer

TDDD02 Språkteknologi för informationssökning (2016) Ordpredicering. Marco Kuhlmann Institutionen för datavetenskap

TDDD02 Språkteknologi för informationssökning (2016) Ordpredicering. Marco Kuhlmann Institutionen för datavetenskap TDDD02 Språkteknologi för informationssökning (2016) Ordpredicering Marco Kuhlmann Institutionen för datavetenskap Ordpredicering Ordpredicering innebär att föreslå eller välja ord i en given kontext.

Läs mer

Maskinöversättning och språkgranskning, ht 2006

Maskinöversättning och språkgranskning, ht 2006 Maskinöversättning och språkgranskning, ht 2006 Föreläsning 2 Stavningskontroll evapet@stp.lingfil.uu.se 1 Föreläsningsöversikt Allmänt om språkgranskning Allmänt om stavningskontroll Stavningskontroll:

Läs mer

språkgranskning, ht 2007

språkgranskning, ht 2007 Maskinöversättning och språkgranskning, ht 2007 Föreläsning 2 Stavningskontroll evapet@stp.lingfil.uu.se 1 Föreläsningsöversikt Kursöversikt Allmänt om språkgranskning Allmänt om stavningskontroll Stavningskontroll:

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,

Läs mer

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd Innehåll Föreläsning 12 Sökträd Sökning Sökning och Sökträd 383 384 Binärt sökträd Används för sökning i linjära samlingar av dataobjekt, specifikt för att konstruera tabeller och lexikon. Organisation:

Läs mer

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1 Inlämningsuppgift : Finn 2D1418 Språkteknologi Christoffer Sabel E-post: csabel@kth.se 1 1. Inledning...3 2. Teori...3 2.1 Termdokumentmatrisen...3 2.2 Finn...4 3. Implementation...4 3.1 Databasen...4

Läs mer

TDDD02 Språkteknologi för informationssökning / Ordpredicering. Marco Kuhlmann Institutionen för datavetenskap

TDDD02 Språkteknologi för informationssökning / Ordpredicering. Marco Kuhlmann Institutionen för datavetenskap TDDD02 Språkteknologi för informationssökning / 2015 Ordpredicering Marco Kuhlmann Institutionen för datavetenskap Ordpredicering Ordpredicering innebär att föreslå eller välja ord i en given kontext.

Läs mer

TDDI16: Datastrukturer och algoritmer

TDDI16: Datastrukturer och algoritmer TDDI16: Datastrukturer och algoritmer Lab 3: Ordkedjor Höstterminen 2018 2018-05-14 1 Upplägg Första delen av instruktionen, avsnitt 2 till 6, innehåller en fullständig beskrivning av problemet utan några

Läs mer

Grundläggande Textanalys VT Språkgranskning (1) Eva Pettersson

Grundläggande Textanalys VT Språkgranskning (1) Eva Pettersson Grundläggande Textanalys VT 2015 Språkgranskning (1) Eva Pettersson eva.pettersson@lingfil.uu.se Referatuppgiften 10 minuters muntlig presentation av vetenskaplig artikel med 5 minuters efterföljande diskussion

Läs mer

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig

Läs mer

Taltaggning. Rapport av Daniel Hasselrot 781105-0157, d98-dha@nada.kth.se 13 oktober 2003

Taltaggning. Rapport av Daniel Hasselrot 781105-0157, d98-dha@nada.kth.se 13 oktober 2003 Taltaggning av Daniel Hasselrot 781105-0157, d98-dha@nada.kth.se 13 oktober 2003 Sammanfattning Denna rapport är skriven i kursen Språkteknologi och behandlar taggning av årtal i en text. Metoden som används

Läs mer

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python) Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python) Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken

Läs mer

Datastrukturer. föreläsning 6. Maps 1

Datastrukturer. föreläsning 6. Maps 1 Datastrukturer föreläsning 6 Maps 1 Avbildningar och lexika Maps 2 Vad är ett lexikon? Namn Telefonnummer Peter 031-405937 Peter 0736-341482 Paul 031-405937 Paul 0737-305459 Hannah 031-405937 Hannah 0730-732100

Läs mer

Regression med Genetiska Algoritmer

Regression med Genetiska Algoritmer Regression med Genetiska Algoritmer Projektarbete, Artificiell intelligens, 729G43 Jimmy Eriksson, jimer336 770529-5991 2014 Inledning Hur många kramar finns det i världen givet? Att kunna estimera givet

Läs mer

Hur bestämmer man vilka fonem ett språk har? Fonologi. Kommutationstest. Hur bestämmer man vilka fonem ett språk har?

Hur bestämmer man vilka fonem ett språk har? Fonologi. Kommutationstest. Hur bestämmer man vilka fonem ett språk har? Fonologi Mattias Heldner KTH Tal, musik och hörsel heldner@kth.se Hur bestämmer man vilka fonem ett språk har? Hur bestämmer man vilka fonem ett språk har? Fonem = minsta betydelseskiljande ljudenhet i

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Heapar Implementering av prioritetskö med heap Klassen PriorityQueue i java.util Programexempel LPT-algoritmen

Läs mer

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Introduktion till programmering SMD180. Föreläsning 9: Tupler Introduktion till programmering Föreläsning 9: Tupler 1 1 Sammansatta datatyper Strängar Sekvenser av tecken Icke muterbara Syntax: "abcde" Listor Sekvenser av vad som helst Muterbara Syntax: [1, 2, 3]

Läs mer

Föreläsninsanteckningar till föreläsning 3: Entropi

Föreläsninsanteckningar till föreläsning 3: Entropi Föreläsninsanteckningar till föreläsning 3: Entropi Johan Håstad, transkriberat av Pehr Söderman 2006-01-20 1 Entropi Entropi är, inom kryptografin, ett mått på informationsinnehållet i en slumpvariabel.

Läs mer

Programkonstruktion och Datastrukturer

Programkonstruktion och Datastrukturer Programkonstruktion och Datastrukturer VT 2012 Tidskomplexitet Elias Castegren elias.castegren.7381@student.uu.se Problem och algoritmer Ett problem är en uppgift som ska lösas. Beräkna n! givet n>0 Räkna

Läs mer

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder Block 2 Algebra och Diskret Matematik A BLOCK INNEHÅLL Referenser Inledning 1. Följder 2. Rekursiva definitioner 3. Sigmanotation för summor 4. Strängar 5. Tal 6. Övningsuppgifter Referenser Följder, strängar

Läs mer

Föreläsning 7: Syntaxanalys

Föreläsning 7: Syntaxanalys DD2458, Problemlösning och programmering under press Föreläsning 7: Syntaxanalys Datum: 2007-10-30 Skribent(er): Erik Hammar, Jesper Särnesjö Föreläsare: Mikael Goldmann Denna föreläsning behandlade syntaxanalys.

Läs mer

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2 Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.) - Iteratorer

Läs mer

Tentamen, Algoritmer och datastrukturer

Tentamen, Algoritmer och datastrukturer UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Exempel på problem där materialet i kursen används Hitta k största bland n element Histogramproblemet Schemaläggning PFK (Föreläsning 13) VT 2013 1 / 15 Hitta k största bland n

Läs mer

Dagens föreläsning Programmering i Lisp Fö 5

Dagens föreläsning Programmering i Lisp Fö 5 Anders Haraldsson 1 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.3) - Iteratorer - Egenskaper

Läs mer

Genetisk programmering i Othello

Genetisk programmering i Othello LINKÖPINGS UNIVERSITET Första versionen Fördjupningsuppgift i kursen 729G11 2009-10-09 Genetisk programmering i Othello Kerstin Johansson kerjo104@student.liu.se Innehållsförteckning 1. Inledning... 1

Läs mer

Experimentella metoder, FK3001. Datorövning: Finn ett samband

Experimentella metoder, FK3001. Datorövning: Finn ett samband Experimentella metoder, FK3001 Datorövning: Finn ett samband 1 Inledning Den här övningen går ut på att belysa hur man kan utnyttja dimensionsanalys tillsammans med mätningar för att bestämma fysikaliska

Läs mer

Genomgång och utvärdering av algoritmer för fonetisk sökning efter svenska efternamn JOHAN SPAEDT KE

Genomgång och utvärdering av algoritmer för fonetisk sökning efter svenska efternamn JOHAN SPAEDT KE Genomgång och utvärdering av algoritmer för fonetisk sökning efter svenska efternamn JOHAN SPAEDT KE Examensarbete Stockholm, Sverige 2011 Genomgång och utvärdering av algoritmer för fonetisk sökning efter

Läs mer

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp

Läs mer

Det här är ett system där vi tjänar pengar på ett av de lagen vi spelar på gör mål, gärna många mål!

Det här är ett system där vi tjänar pengar på ett av de lagen vi spelar på gör mål, gärna många mål! System - Mera Mål! Copyright 2013 Digital Solutions AB www.fotbollspengar.se www.inzideinfo.com www.inthemoneysystem.com Vi vill ha mål, mål, mål mera mål Och mål det kommer det att bli Vi vill ha mål,

Läs mer

Fonologi. Kommutationstest. Minimala par. Hur bestämmer man vilka fonem ett språk har?

Fonologi. Kommutationstest. Minimala par. Hur bestämmer man vilka fonem ett språk har? Hur bestämmer man vilka fonem ett språk har? Fonologi Mattias Heldner KTH Tal, musik och hörsel heldner@kth.se (Morfem = minsta betydelsebärande enhet i ett språk) Fonem = minsta betydelseskiljande ljudenhet

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Det här är inte originaltesen. Uppgift 6 var felaktigt formulerad, och har rättats till. Datum och tid för tentamen: 2011-12-16, 8:30 12:30. Ansvarig: Nils Anders Danielsson.

Läs mer

Lösningsförslag till tentamen i Språkteknologi 2D1418,

Lösningsförslag till tentamen i Språkteknologi 2D1418, Lösningsförslag till tentamen i Språkteknologi 2D1418, 2004-10-18 1. Stavningskontroll utan ordlista (10 poäng) a) Med 29 bokstäver i alfabetet och en specialbokstav för ordbörjan/ordslut så finns det

Läs mer

Handicom. Symbol for Windows. Encyklopedi. Version 3.4

Handicom. Symbol for Windows. Encyklopedi. Version 3.4 Handicom Symbol for Windows Encyklopedi Version 3.4 Handicom, Nederländerna/Frölunda Data AB 2009 Innehåll Installation och licenser...2 1. Inledning...4 1.1 Vad är Encyklopedi?...4 2. Encyklopedis huvudmeny...5

Läs mer

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad 1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen

Läs mer

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Tentamen, EDA501/EDAA20 Programmering M MD W BK L LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, EDA501/EDAA20 Programmering M MD W BK L 2017 05 31, 8.00 13.00 Anvisningar: Preliminärt ger uppgifterna 9 + 12 + 10 + 9 = 40 poäng.

Läs mer

DAB760: Språk och logik

DAB760: Språk och logik DAB76: Språk och logik /4: Finita automater och -7 reguljära uttryck Leif Grönqvist (leif.gronqvist@msi.vxu.se) Växjö Universitet (MSI) GSLT (Sveriges nationella forskarskola i språkteknologi) Göteborg

Läs mer

Objektorienterad programmering D2

Objektorienterad programmering D2 Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste

Läs mer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4 Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa

Läs mer

Uppgift 1 (grundläggande konstruktioner)

Uppgift 1 (grundläggande konstruktioner) Uppgift 1 (grundläggande konstruktioner) a) Skriv ett program som låter användaren mata in 7 heltal och som gör utskrifter enligt nedanstående körexempel. Mata in 7 heltal: 1 0 0 3 1 1 1 Tal nr 2 var en

Läs mer

729G43 Artificiell intelligens / Maskininlärning 3. Marco Kuhlmann

729G43 Artificiell intelligens / Maskininlärning 3. Marco Kuhlmann 729G43 Artificiell intelligens / 2015 Maskininlärning 3 Marco Kuhlmann Förra gången: Perceptroninlärning Beslutsregel predicerat y-värde Exempel: AND Välj parametrar θ 0, θ 1, θ 2 sådana att perceptronen

Läs mer

Övning 5 - Tillämpad datalogi 2013

Övning 5 - Tillämpad datalogi 2013 /afs/nada.kth.se/home/w/u1yxbcfw/teaching/13dd1320/exercise5/exercise5.py October 1, 2013 1 0 # coding : latin Övning 5 - Tillämpad datalogi 2013 Automater, reguljära uttryck, syntax Sammanfattning Idag

Läs mer

1 Positivt definita och positivt semidefinita matriser

1 Positivt definita och positivt semidefinita matriser Krister Svanberg, april 1 1 Positivt definita och positivt semidefinita matriser Inom ickelinjär optimering, speciellt kvadratisk optimering, är det viktigt att på ett effektivt sätt kunna avgöra huruvida

Läs mer

Föreläsning 5 Innehåll

Föreläsning 5 Innehåll Föreläsning 5 Innehåll Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Datavetenskap (LTH) Föreläsning 5 VT 2019 1 / 39 Val av algoritm och datastruktur

Läs mer

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary 1 1.1 Definitioner... 1 1.2 Implementation... 2

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary 1 1.1 Definitioner... 1 1.2 Implementation... 2 Föreläsning 5 ADT Map/Dictionary, hashtabeller TDDI16: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 16 september 2015 Tommy Färnqvist, IDA, Linköpings universitet 5.1 Innehåll Innehåll

Läs mer

Kapitel Ekvationsräkning

Kapitel Ekvationsräkning Kapitel Ekvationsräkning Din grafiska räknare kan lösa följande tre typer av beräkningar: Linjära ekvationer med två till sex okända variabler Högregradsekvationer (kvadratiska, tredjegrads) Lösningsräkning

Läs mer

Programmeringsolympiaden 2018

Programmeringsolympiaden 2018 Programmeringsolympiaden 2018 TÄVLINGSREGLER FÖR SKOLKVALET Tävlingen äger rum på av skolan bestämt datum under fyra timmar. Ingen förlängning ges för lunch eller raster. Eleven ska i förväg komma överens

Läs mer

Statistisk mönsterigenkänning

Statistisk mönsterigenkänning Statistisk mönsterigenkänning Jonas Sandström Artificiell intelligens II Linköpings universitet HT 2011 Innehållsförteckning 1. Innehållsförteckning sid 2 2. Inledning sid 3 3. Statistisk mönsterigenkänning

Läs mer

TDDC74 Lab 02 Listor, sammansatta strukturer

TDDC74 Lab 02 Listor, sammansatta strukturer TDDC74 Lab 02 Listor, sammansatta strukturer 1 Översikt I denna laboration kommer ni att lära er mer om: Mer komplexa rekursiva mönster, procedurer och processer. Hur man kan hantera listor och andra enklare

Läs mer

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer 729G04 Programmering och diskret matematik Python 2: Villkorssatser, sanningsvärden och logiska operatorer Föreläsningsöversikt Vad händer när vi kör vår pythonkod? Programmerare Villkorssatser Jämförelser

Läs mer

Statistisk Maskinöversättning eller:

Statistisk Maskinöversättning eller: 729G43 Statistisk Maskinöversättning eller: Hur jag slutade ängslas (över fördjupningsuppgiften) och lärde mig hata stoppord. Jonas Hilmersson 2019-04-15 Innehåll 1. Introduktion... 1 2. Datamängden...

Läs mer

Programmering II (ID1019) :00-17:00

Programmering II (ID1019) :00-17:00 ID1019 Johan Montelius Programmering II (ID1019) 2014-03-10 14:00-17:00 Förnamn: Efternamn: Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.

Läs mer

729G09 Språkvetenskaplig databehandling

729G09 Språkvetenskaplig databehandling 729G09 Språkvetenskaplig databehandling Föreläsning 2, 729G09, VT15 Reguljära uttryck Lars Ahrenberg 150409 Plan för föreläsningen Användning av reguljära uttryck Formella språk Reguljära språk Reguljära

Läs mer

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1. Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning

Läs mer

LARS ULVELAND HOPFIELDNÄTVERK FÖR IGENKÄNNING AV DEGRADERADE BILDER OCH HANDSKRIVNA TECKEN

LARS ULVELAND HOPFIELDNÄTVERK FÖR IGENKÄNNING AV DEGRADERADE BILDER OCH HANDSKRIVNA TECKEN LARS ULVELAD HOPFIELDÄTVERK FÖR IGEKÄIG AV DEGRADERADE BILDER OCH HADSKRIVA TECKE E PROJEKTRAPPORT FÖR PROJEKTKURSE I BILDAALYS HT 02 Teori för Hopfieldnätverk Hopfieldmodellen är en typ av neuronnät,

Läs mer

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary 1 1.1 Definitioner... 1 1.2 Implementation... 2

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary 1 1.1 Definitioner... 1 1.2 Implementation... 2 Föreläsning 4 ADT Map/Dictionary, hashtabeller, skip-listor TDDC91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 9 september 2015 Tommy Färnqvist, IDA, Linköpings universitet 4.1

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,

Läs mer

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar LUNDS TEKNISKA HÖGSKOLA MATEMATIKCENTRUM MATEMATISK STATISTIK DATORLABORATION 4 MATEMATISK STATISTIK, FÖR I/PI, FMS 121/2, HT-3 Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

Läs mer

Programmering II (ID1019) :00-11:00

Programmering II (ID1019) :00-11:00 ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren

Läs mer

Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering

Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering 2D1458, Problemlösning och programmering under press Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering Datum: 2007-09-04 Skribent(er): Anders Malm-Nilsson och Niklas Nummelin Föreläsare:

Läs mer

Missplel ett generellt verktyg för generering av stavfel

Missplel ett generellt verktyg för generering av stavfel Missplel ett generellt verktyg för generering av stavfel Linus Ericson TRITA-NA-E04045 NADA Numerisk analys och datalogi Department of Numerical Analysis KTH and Computer Science 100 44 Stockholm Royal

Läs mer

i LabVIEW. Några programmeringstekniska grundbegrepp

i LabVIEW. Några programmeringstekniska grundbegrepp Institutionen för elektroteknik Några programmeringstekniska grundbegrepp 1999-02-16 Inledning Inom datorprogrammering förekommer ett antal grundbegrepp som är i stort sett likadana oberoende om vi talar

Läs mer

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer. Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera

Läs mer

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4 Avbildningar och hashtabeller Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4 1 2 Mängder i Java 3 Mängd-gränssnittet Set vs. List Mängder får endast innehålla unika element: Metoden.add(E) returnerar

Läs mer

public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } }

public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } } Rekursion 25 7 Rekursion Tema: Rekursiva algoritmer. Litteratur: Avsnitt 5.1 5.5 (7.1 7.5 i gamla upplagan) samt i bilderna från föreläsning 6. U 59. Man kan definiera potensfunktionen x n (n heltal 0)

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2008-03-12.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som läser igenom en textfil som heter FIL.TXT och skriver ut alla rader där det står ett decimaltal först på raden. Decimaltal

Läs mer

Kravspecifikation Fredrik Berntsson Version 1.3

Kravspecifikation Fredrik Berntsson Version 1.3 Kravspecifikation Fredrik Berntsson Version 1.3 Status Granskad FB 2017-01-27 Godkänd FB 2017-01-27 Dokumenthistorik Version Datum Utförda ändringar Utförda av Granskad 1.0 2014-01-15 Första versionen

Läs mer

DD1361 Programmeringsparadigm. Carina Edlund

DD1361 Programmeringsparadigm. Carina Edlund DD1361 Programmeringsparadigm Carina Edlund carina@nada.kth.se Funktionell programmering Grundidéen med funktionell programmering är att härma matematiken och dess funktionsbegrepp. Matematiskt funktionsbegrepp

Läs mer

Tillämpad Programmering (ID1218) :00-13:00

Tillämpad Programmering (ID1218) :00-13:00 ID1218 Johan Montelius Tillämpad Programmering (ID1218) 2014-03-13 09:00-13:00 Förnamn: Efternamn: Regler Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.

Läs mer

Dekomposition och dynamisk programmering

Dekomposition och dynamisk programmering Algoritmer, datastrukturer och komplexitet, hösten 2016 Uppgifter till övning 3 Dekomposition och dynamisk programmering Max och min med dekomposition I vektorn v[1..n] ligger n tal. Konstruera en dekompositionsalgoritm

Läs mer

Föreläsning 5: Grafer Del 1

Föreläsning 5: Grafer Del 1 2D1458, Problemlösning och programmering under press Föreläsning 5: Grafer Del 1 Datum: 2006-10-02 Skribent(er): Henrik Sjögren, Patrik Glas Föreläsare: Gunnar Kreitz Den här föreläsningen var den första

Läs mer

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

Programmering. Den första datorn hette ENIAC.

Programmering. Den första datorn hette ENIAC. Programmering Datorn är bara en burk. Den kan inget själv. Hur får man den att göra saker? Man programmerar den. Människor som funderar ut program som fungerar. Datorn förstår bara ettor och nollor och

Läs mer

Föreläsning 9 Innehåll

Föreläsning 9 Innehåll Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon

Läs mer

Programmering II (ID1019) :00-12:00

Programmering II (ID1019) :00-12:00 ID1019 Johan Montelius Programmering II (ID1019) 2015-03-13 09:00-12:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren

Läs mer

10. Mängder och språk

10. Mängder och språk Objektorienterad modellering och diskreta strukturer 10. Mängder och språk Sven Gestegård Robertz Institutionen för datavetenskap, LTH 2013 Rekaputilation Vi har talat om satslogik, predikatlogik och härledning

Läs mer

Tentamen Datastrukturer för D2 DAT 035

Tentamen Datastrukturer för D2 DAT 035 Tentamen Datastrukturer för D2 DAT 035 17 december 2005 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser:

Läs mer

FOR BETTER UNDERSTANDING. Snabbguide. www.wordfinder.se

FOR BETTER UNDERSTANDING. Snabbguide. www.wordfinder.se FOR BETTER UNDERSTANDING Snabbguide www.wordfinder.se Tekniska förutsättningar WordFinder 10 Professional för Mac kräver följande: Processor: Intel Mac OS X 10.5 eller senare. Installation Installation

Läs mer

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen. Föreläsning 9: Turingmaskiner och oavgörbarhet Turingmaskinen Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen. Data är ett oändligt långt band där nollor och ettor står

Läs mer

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande: Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp

Läs mer

Magnus Nielsen, IDA, Linköpings universitet

Magnus Nielsen, IDA, Linköpings universitet Föreläsning ADT Map/Dictionary, hashtabeller TDDC9,TDDE22,725G97: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 7 september 208 Magnus Nielsen, IDA, Linköpings universitet. ADT Map/Dictionary.

Läs mer

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl 1 Matematiska Institutionen KTH Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl 14.00-19.00. Examinator: Olof Heden Hjälpmedel: Inga hjälpmedel är tillåtna

Läs mer

Introduktion till frågespråket SQL (v0.91)

Introduktion till frågespråket SQL (v0.91) DD1370: Databaser och Informationssystem Hösten 2014 Petter Ögren Introduktion till frågespråket SQL (v0.91) 13:e November Disclaimer: Dessa anteckningar har producerats under viss tidspress, och kan därför

Läs mer

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1 Institutionen för Data- och informationsteknik JSk TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Övningstentamen 1 OBS! Det kan finnas kurser med samma eller liknande namn på olika utbildningslinjer.

Läs mer

Gränssnitt för FakeGranska. Lars Mattsson

Gränssnitt för FakeGranska. Lars Mattsson Gränssnitt för FakeGranska av Lars Mattsson (larsmatt@kth.se) Innehållsförteckning 1 Introduktion...3 2 Genomförande:...3 3 Användning...5 4 Kända buggar:...6 5 Källförteckning...6 2 1 Introduktion Taken

Läs mer

Föreläsning 13 Testning och strängar

Föreläsning 13 Testning och strängar Föreläsning 13 Testning och strängar Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 13.10.2011 Testning Tips för systematisk testning

Läs mer

Programmering II (ID1019) :00-12:00

Programmering II (ID1019) :00-12:00 ID1019 Johan Montelius Programmering II (ID1019) 2014-01-16 09:00-12:00 Förnamn: Efternamn: Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.

Läs mer

Standardlösningar: sekventiell sökning

Standardlösningar: sekventiell sökning Standardlösningar: sekventiell sökning Problem: givet ett, sök fram rätt telefonnummer! rad N tel. T 1 Lisa 040-2451 242 2 Bert 040-2526 734 3 Calle 050-9483 142 4 Jonas 044-2617 567 5 Ville 02-4769 002

Läs mer

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18 TDDC74 Programmering: Abstraktion och modellering Datortenta - 017-10-7, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis

Läs mer

Coridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter

Coridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter Datavetenskap Opponenter: Daniel Jansson Mikael Jansson Respondenter: Mats Almgren Erik Hansen Coridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter Oppositionsrapport,

Läs mer

Envägs variansanalys (ANOVA) för test av olika väntevärde i flera grupper

Envägs variansanalys (ANOVA) för test av olika väntevärde i flera grupper Envägs variansanalys (ANOVA) för test av olika väntevärde i flera grupper Tobias Abenius February 21, 2012 Envägs variansanalys (ANOVA) I envägs variansanalys utnyttjas att

Läs mer

Lösningsförslag DD1320/DD

Lösningsförslag DD1320/DD 1. KMP för IT-support K Ö A R I K Ö N 0 1 1 1 1 0 1 3 eller 0 1 1 1 1 1 1 0 1 3 Lösning med eller utan mellanslag godkänns 5 ettor i följd godkänd (slarvfel) sista siffran (3) ett krav men kan avvika om

Läs mer

Träd och koder. Anders Björner KTH

Träd och koder. Anders Björner KTH 27 Träd och koder Anders Björner KTH 1. Inledning. Det är i flera sammanhang viktigt att representera information digitalt (d.v.s omvandla till sviter av nollor och ettor). Beroende på vilka villkor som

Läs mer

Kapitel 4: SAMBANDET MELLAN VARIABLER: REGRESSIONSLINJEN

Kapitel 4: SAMBANDET MELLAN VARIABLER: REGRESSIONSLINJEN Kapitel 4: SAMBANDET MELLAN VARIABLER: REGRESSIONSLINJEN Spridningsdiagrammen nedan representerar samma korrelationskoefficient, r = 0,8. 80 80 60 60 40 40 20 20 0 0 20 40 0 0 20 40 Det finns dock två

Läs mer