147
Grundläggande textanalys, VT2012 [email protected] Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv12/gta/ (Tack till Sofia Gustafson-Capkovâ för material.)

Grundläggande textanalys, VT2012 - Uppsala Universityevelina/uv/uv12/gta/F6/...2012/05/23  · 3 Mininum edit distance (minsta redigeringsavståndet) - namngavs av Wagner och Fischer(1974)

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • Grundläggande textanalys, VT2012

    [email protected] 9-2035http://stp.ling.uu.se/~evelina/uv/uv12/gta/

    (Tack till Sofia Gustafson-Capkovâ för material.)

    mailto:[email protected]://stp.ling.uu.se/~evelina/uv/uv12/gta/

  • 2

    Idag

    - minsta redigeringsavståndet för strängar

    - diverse verktyg för stavningskontroll

  • 3

    Mininum edit distance (minsta redigeringsavståndet)

    - namngavs av Wagner och Fischer(1974)

    Idé:- Givet strängarna source och target- Hur många operationer (borttagning,insättning, ersättning) behöver man utföra för att omvandla source till target?

    operationersource target

  • 4

    Mininum edit distance - Operationer

  • 5

    Mininum edit distance - Operationer

    - borttagning, dvs ta bort en bokstav:

    delete(r)sourrce source

  • 6

    Mininum edit distance - Operationer

    - borttagning, dvs ta bort en bokstav:

    delete(r)

    - insättning, dvs lägg till en bokstav:

    insert(r)

    sourrce source

    souce source

  • 7

    Mininum edit distance - Operationer

    - borttagning, dvs ta bort en bokstav:

    delete(r)

    - insättning, dvs lägg till en bokstav:

    insert(r)

    - ersättning, dvs byt ut bokstav mot en annan bokstav:

    substitute(t,r)

    sourrce source

    souce source

    soutce source

  • 8

    Mininum edit distance - Exempel

    Source: INTENTIONTarget: EXECUTION

    Vilka operationer behöver vi göra för att INTENTION ska omvandlastill EXECUTION?

    Source: INTENTION

    Target: EXECUTION

  • 9

    Mininum edit distance - Exempel

    Source: INTENTIONTarget: EXECUTION

    Vilka operationer behöver vi göra för att INTENTION ska omvandlastill EXECUTION?

    Source: INTENTION → delete(I) NTENTION

    Target: EXECUTION

  • 10

    Mininum edit distance - Exempel

    Source: INTENTIONTarget: EXECUTION

    Vilka operationer behöver vi göra för att INTENTION ska omvandlastill EXECUTION?

    Source: INTENTION → delete(I) NTENTION → substitute(N,E) ETENTION

    Target: EXECUTION

  • 11

    Mininum edit distance - Exempel

    Source: INTENTIONTarget: EXECUTION

    Vilka operationer behöver vi göra för att INTENTION ska omvandlastill EXECUTION?

    Source: INTENTION → delete(I) NTENTION → substitute(N,E) ETENTION → substitute(T,X) EXENUTION

    Target: EXECUTION

  • 12

    Mininum edit distance - Exempel

    Source: INTENTIONTarget: EXECUTION

    Vilka operationer behöver vi göra för att INTENTION ska omvandlastill EXECUTION?

    Source: INTENTION → delete(I) NTENTION → substitute(N,E) ETENTION → substitute(T,X) EXENTION → insert(U) EXENUTION

    Target: EXECUTION

  • 13

    Mininum edit distance - Exempel

    Source: INTENTIONTarget: EXECUTION

    Vilka operationer behöver vi göra för att INTENTION ska omvandlastill EXECUTION?

    Source: INTENTION → delete(I) NTENTION → substitute(N,E) ETENTION → substitute(T,X) EXENTION → insert(U) EXENUTION → substitute(N,C) EXECUTION

    Target: EXECUTION

  • 14

    Mininum edit distance – Exempel

    Source: INTENTIONTarget: EXECUTION

    Vilka operationer behöver vi göra för att INTENTION skaomvandlas till EXECUTION?

    Svar:

    Vi behöver använda följande operationer: {delete(I), substitute(N,E), substitute(T,X), insert(U), substitute(N,C)}

  • 15

    Mininum edit distance – Exempel

    Source: INTENTIONTarget: EXECUTION

    Vilka operationer behöver vi göra för att INTENTION skaomvandlas till EXECUTION?

    Svar:

    Vi behöver använda följande operationer: {delete(I), substitute(N,E), substitute(T,X), insert(U), substitute(N,C)}

    Hur tar vi reda på hur mycket det kostar att omvandla INTENTIONTill EXECUTION?

  • 16

    Mininum edit distance – Exempel

    Source: INTENTIONTarget: EXECUTION

    Vilka operationer behöver vi göra för att INTENTION skaomvandlas till EXECUTION?

    Svar:

    Vi behöver använda följande operationer: {delete(I), substitute(N,E), substitute(T,X), insert(U), substitute(N,C)}

    Hur tar vi reda på hur mycket det kostar att omvandla INTENTIONTill EXECUTION? Jo, med hjälp av Levensteins avstånd.

  • 17

    Mininum edit distance – Levensteins avstånd

  • 18

    Mininum edit distance – Levensteins avstånd - Levenstein föreslog två kostnadsförslag för operationerna: – Alternativ 1: –- delete kostar 1 –- insert kostar 1 –- subsitution kostar 1 Kostnaden för vårt exempel blir 5.

  • 19

    Mininum edit distance – Levensteins avstånd - Levenstein föreslog två kostnadsförslag för operationerna: – Alternativ 1: –- delete kostar 1 –- insert kostar 1 –- subsitution kostar 1 Kostnaden för vårt exempel blir 5.

    – Alternativ 2: –- delete kostar 1 –- insert kostar 1 –- subsitution ersätts med delete och insert, dvs kostar 2 Kostnaden för vårt exempel blir 8.

  • 20

    Mininum edit distance – Levensteins avstånd - Levenstein föreslog två kostnadsförslag för operationerna: – Alternativ 1: –- delete kostar 1 –- insert kostar 1 –- subsitution kostar 1 Kostnaden för vårt exempel blir 5.

    – Alternativ 2: –- delete kostar 1 –- insert kostar 1 –- subsitution ersätts med delete och insert, dvs kostar 2 Kostnaden för vårt exempel blir 8.

    - Genom att summera kostnaden för operationerna man behöver använda får man veta Levensteins avståndet.

  • 21

    Mininum edit distance – Levensteins avstånd - Levenstein föreslog två kostnadsförslag för operationerna: – Alternativ 1: –- delete kostar 1 –- insert kostar 1 –- subsitution kostar 1 Kostnaden för vårt exempel blir 5.

    – Alternativ 2: –- delete kostar 1 –- insert kostar 1 –- subsitution ersätts med delete och insert, dvs kostar 2 Kostnaden för vårt exempel blir 8.

    - Genom att summera kostnaden för operationerna man behöver använda får man veta Levensteins avståndet.

    - Ju fler operationer man behöver använda desto mer skiljer sig orden åt → ju högre blir kostnaden

  • 22

    Mininum edit distance – Levensteins avstånd – Exempel

    Source: INTENTIONTarget: EXECUTION

    Operationer: {delete(I), substitute(N,E), substitute(T,X), insert(U), substitute(N,C)}

    Vad kostar det att omvandla INTENTION till EXECUTION?

  • 23

    Mininum edit distance – Levensteins avstånd – Exempel

    Source: INTENTIONTarget: EXECUTION

    Operationer: {delete(I), substitute(N,E), substitute(T,X), insert(U), substitute(N,C)}

    Vad kostar det att omvandla INTENTION till EXECUTION?

    Svar: - Alternativ 1 –- delete kostar 1 –- insert kostar 1 –- subsitution kostar 1 Kostnaden blir 5.

  • 24

    Mininum edit distance – Levensteins avstånd – Exempel

    Source: INTENTIONTarget: EXECUTION

    Operationer: {delete(I), substitute(N,E), substitute(T,X), insert(U), substitute(N,C)}

    Vad kostar det att omvandla INTENTION till EXECUTION?

    Svar: - Alternativ 2: –- delete kostar 1 –- insert kostar 1 –- subsitution ersätts med delete och insert, dvs kostar 2 Kostnaden blir 8.

  • 25

    Mininum edit distance - Pseudokod

    function MIN-EDIT-DISTANCE(target, source) returns min-distancen ← LENGTH(target)m ← LENGTH(source)Create a distance matrix distance[n+1,m+1]Initialize the zeroth row and column to be the distance from the empty string distance[0,0] = 0 for each column i from 1 to n do distance[i,0] = distance[i-1,0] + ins-cost(target[i]) for each row j from 1 to m do distance[j,0] = distance[0,j-1] + del-cost(source[j])

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    return distance[n][m]

    J& M Figure 3.25

  • 26

    Mininum edit distance - Exempel

    Source: INTENTIONTarget: EXECUTION

    function MIN-EDIT-DISTANCE(target, source) returns min-distancen = 9, m = 9

    distance[n+1][m+1]:

    noitnetni#

    # e x e c u t i o n

  • 27

    Mininum edit distance - Exempel

    Source: INTENTIONTarget: EXECUTION

    function MIN-EDIT-DISTANCE(target, source) returns min-distancedistance[0,0] = 0

    noitnetni# 0

    # e x e c u t i o n

    n 9

    m 9

    distance:

  • 28

    Mininum edit distance - Exempel

    Source: INTENTIONTarget: EXECUTION

    function MIN-EDIT-DISTANCE(target, source) returns min-distancefor each column i from 1 to n do distance[i,0] = distance[i-1,0] + ins-cost(target[i])

    noitnetni# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    i

  • 29

    Mininum edit distance - Exempel

    Source: INTENTIONTarget: EXECUTION

    function MIN-EDIT-DISTANCE(target, source) returns min-distancefor each row j from 1 to m do distance[j,0] = distance[0,j-1] + del-cost(source[j])

    n 9o 8i 7t 6n 5e 4t 3n 2i 1# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    j

  • 30

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3n 2i 1# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 2

    j

    i

    j

    i

  • 31

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3n 2i 1# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 2sub:2

    j

    i

  • 32

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3n 2i 1# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 2sub:2del: 2

    j

    i

    j

    i

  • 33

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3n 2i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 2sub:2del: 2

  • 34

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3n 2i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: sub:del:

  • 35

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3n 2i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 3 sub: del:

    j

    i

  • 36

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3n 2i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 3 sub: 3del:

    j

    i

  • 37

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3n 2i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 3 sub: 3del: 3

    j

    i

  • 38

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3n 2 3i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 3 sub: 3del: 3

  • 39

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3n 2 3i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: sub: del:

  • 40

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3n 2 3i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 4 sub: del:

    j

    i

  • 41

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3n 2 3i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 4 sub: 4 del:

    j

    i

  • 42

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3n 2 3i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 4 sub: 4 del: 4

    j

    i

  • 43

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3 4n 2 3i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 4 sub: 4 del: 4

  • 44

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3 4n 2 3i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: sub: del:

  • 45

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3 4n 2 3i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 4 + 1 = 5sub: del:

    j

    i

  • 46

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3 4n 2 3i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 4 + 1 = 5sub: 3 + 0 = 3del:

    j

    i

  • 47

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4t 3 4n 2 3i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 4 + 1 = 5sub: 3 + 0 = 3del: 4 + 1 = 5

    j

    i

  • 48

    Mininum edit distance - Exempel

    for each column i from 1 to n do for each row j from 1 to m do distance[i,j] = MIN(distance[i-1,j] + ins-cost(target[i-1]), distance[i-1,j-1] + sub-cost(source[j-1],target[i-1]), distance[i,j-1] + del-cost(source[j-1]))

    n 9o 8i 7t 6n 5e 4 3t 3 4n 2 3i 1 2# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: 4 + 1 = 5sub: 3 + 0 = 3del: 4 + 1 = 5

  • 49

    Mininum edit distance - Exempel

    Fortsätt tills alla celler i distance har något värde.

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: sub: del:

  • 50

    Mininum edit distance - Exempel

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    n 9

    m 9

    distance:

    ins: sub: del:

    return distance[n][m]

  • 51

    Mininum edit distance - Exempel

    Source: INTENTIONTarget: EXECUTION

    Det minsta redigeringsavståndet är 8.

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

  • 52

    Mininum edit distance - Exempel

    Source: INTENTIONTarget: EXECUTION

    Det minsta redigeringsavståndet är 8. Men hur får vi veta vilka operationerman behövde använda?

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

  • 53

    Mininum edit distance - Exempel

    Source: INTENTIONTarget: EXECUTION

    Det minsta redigeringsavståndet är 8. Men hur får vi veta vilka operationerman behövde använda? Jo, genom att spara en backpointer i varje cell som talar om i vilken cell vi kom ifrån när vi sparade värdet i cellen.

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

  • 54

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – om den nya cellen har en annan kostnad → lägg till operationen i listan

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

  • 55

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – om den nya cellen har en annan kostnad → lägg till operationen i listan

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer:

  • 56

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – om den nya cellen har en annan kostnad → lägg till operationen i listan

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer:

  • 57

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – om den nya cellen har en annan kostnad → lägg till operationen i listan

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer:

  • 58

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – om den nya cellen har en annan kostnad → lägg till operationen i listan

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer:

  • 59

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – om den nya cellen har en annan kostnad → lägg till operationen i listan

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer:

  • 60

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – om den nya cellen har en annan kostnad → lägg till operationen i listan

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer:

  • 61

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – om den nya cellen har en annan kostnad → lägg till operationen i listan

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer:

  • 62

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – om den nya cellen har en annan kostnad → lägg till operationen i listan

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer:

  • 63

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – den nya cellen har en annan kostnad → lägg till operationen i listan

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer: ins(u)

  • 64

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer: ins(u)

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – den nya cellen har en annan kostnad → lägg till operationen i listan

  • 65

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer: ins(u)

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – den nya cellen har en annan kostnad → lägg till operationen i listan

  • 66

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer: ins(u) sub(n,c)

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – den nya cellen har en annan kostnad → lägg till operationen i listan

  • 67

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer: ins(u) sub(n,c)

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – den nya cellen har en annan kostnad → lägg till operationen i listan

  • 68

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer: ins(u) sub(n,c)

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – den nya cellen har en annan kostnad → lägg till operationen i listan

  • 69

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer: ins(u) sub(n,c)

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – den nya cellen har en annan kostnad → lägg till operationen i listan

  • 70

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer: ins(u) sub(n,c)

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – den nya cellen har en annan kostnad → lägg till operationen i listan

  • 71

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer: ins(u) sub(n,c) sub(t,x)

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – den nya cellen har en annan kostnad → lägg till operationen i listan

  • 72

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer: ins(u) sub(n,c) sub(t,x)

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – den nya cellen har en annan kostnad → lägg till operationen i listan

  • 73

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer: ins(u) sub(n,c) sub(t,x)

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – den nya cellen har en annan kostnad → lägg till operationen i listan

  • 74

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer: ins(u) sub(n,c) sub(t,x) sub(n,e)

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – den nya cellen har en annan kostnad → lägg till operationen i listan

  • 75

    n 9 8 9 10 11 12 11 10 9 8o 8 7 8 9 10 11 10 9 8 9i 7 6 7 8 9 10 9 8 9 10t 6 5 6 7 8 9 8 9 10 11n 5 4 5 6 7 8 9 10 11 10e 4 3 4 5 6 7 8 9 10 9t 3 4 5 6 7 8 7 8 9 8n 2 3 4 5 6 7 8 7 8 7i 1 2 3 4 5 6 7 6 7 8# 0 1 2 3 4 5 6 7 8 9

    # e x e c u t i o n

    Operationer: ins(u) sub(n,c) sub(t,x) sub(n,e) del(i)

    Mininum edit distance - Exempel

    Backtrace – idé: - Börja i den sista cellen distance[m][n]

    – Välj en backpointer – gå till den cell backpointer pekar på. – den nya cellen har en annan kostnad → lägg till operationen i listan

  • 76

    Grammatikfix

  • 77

    Grammatikfix

    - använder SWECG(Swedish Constraint Grammar) i följande steg:

    1. Preprocessing 2. Morfologisk analys 3. Morfologisk disambiguering 4. Morfosyntaktisk mappning 5. Syntaktisk disambiguering

  • 78

    Grammatikfix – steg 1: Preprocessing

    1. Preprocessing - ca 5 000 förkortningar - ca 150 fraser

    än_så_längehadesnöninte börja falla

  • 79

    Grammatikfix – steg 2: Morfologisk analys

    SWETWOL, ca 75 000 grundformer

    """än_så_länge" ADV

    """ha" V ACT PAST

    """snö" N UTR DEF SG NOM

    """inte" ADV

    """börja" V ACT INF"börja" V ACT IMP

    """falla" V ACT INF

  • 80

    Grammatikfix – steg 3: Morfologisk disambiguering

    - Om ordet saknas i lexikonet: – man försöker hitta suffix i ordet som man kan plocka bort – det finns ca 60 – tal regler för detta

    – om ordet fortfarande är okänt: → antag att ordet är ett substantiv

    Exempel:"" "entreprenöriella" > A UTR/NEU DEF SG NOM "entreprenöriella" > A UTR/NEU DEF/INDEF PL NOM

  • 81

    Grammatikfix – steg 4: Morfosyntaktisk mappning

    - SWECG har syntaktiska funktionstaggar

    - I grammatikfix får alla ord BÅDA taggarna @ok och @err

    Exempel:

    """ha" V ACT PAST @OK @ERR

    """snö" N UTR DEF SG NOM @OK @ERR

    """inte" ADV @OK @ERR

  • 82

    Grammatikfix - 5. Syntaktisk disambiguering

    - För att avgöra vilken av taggarna @OK och @ERR som ska gälla används feldekteringsregler.

    (@w=S!(@ERR) ; För ett ord (@w) välj (=S!) feltaggen (@ERR) (0 N-DEF) ; om ordet (0) är ett substantiv i bestämd form (N-DEF) (-2 GEN) ; om andra ordet till vänster (-2) är en gentitiv (GEN) (-1 A-DEF)); om det första ordet till vänster är ett adjektiv i bestämd form (A-DEF)

  • 83

    Grammatikfix - 5. Syntaktisk disambiguering

    - För att avgöra vilken av taggarna @OK och @ERR som ska gälla används feldekteringsregler.

    (@w=S!(@ERR) ; För ett ord (@w) välj (=S!) feltaggen (@ERR) (0 N-DEF) ; om ordet (0) är ett substantiv i bestämd form (N-DEF) (-2 GEN) ; om andra ordet till vänster (-2) är en gentitiv (GEN) (-1 A-DEF)); om det första ordet till vänster är ett adjektiv i bestämd form (A-DEF)

    Exempel: bilens snabba accelerationen

  • 84

    Grammatikfix - 5. Syntaktisk disambiguering

    - För att avgöra vilken av taggarna @OK och @ERR som ska gälla används feldekteringsregler.

    (@w=S!(@ERR) ; För ett ord (@w) välj (=S!) feltaggen (@ERR) (0 N-DEF) ; om ordet (0) är ett substantiv i bestämd form (N-DEF) (-2 GEN) ; om andra ordet till vänster (-2) är en gentitiv (GEN) (-1 A-DEF)); om det första ordet till vänster är ett adjektiv i bestämd form (A-DEF)

    Exempel: bilens snabba accelerationen

  • 85

    Grammatikfix - 5. Syntaktisk disambiguering

    - För att avgöra vilken av taggarna @OK och @ERR som ska gälla används feldekteringsregler.

    (@w=S!(@ERR) ; För ett ord (@w) välj (=S!) feltaggen (@ERR) (0 N-DEF) ; om ordet (0) är ett substantiv i bestämd form (N-DEF) (-2 GEN) ; om andra ordet till vänster (-2) är en gentitiv (GEN) (-1 A-DEF)); om det första ordet till vänster är ett adjektiv i bestämd form (A-DEF)

    Exempel: bilens snabba accelerationen

  • 86

    Grammatikfix - 5. Syntaktisk disambiguering

    - För att avgöra vilken av taggarna @OK och @ERR som ska gälla används feldekteringsregler.

    (@w=S!(@ERR) ; För ett ord (@w) välj (=S!) feltaggen (@ERR) (0 N-DEF) ; om ordet (0) är ett substantiv i bestämd form (N-DEF) (-2 GEN) ; om andra ordet till vänster (-2) är en gentitiv (GEN) (-1 A-DEF)); om det första ordet till vänster är ett adjektiv i bestämd form (A-DEF)

    Exempel: bilens snabba accelerationen

  • 87

    Grammatikfix - 5. Syntaktisk disambiguering

    - För att avgöra vilken av taggarna @OK och @ERR som ska gälla används feldekteringsregler.

    (@w=S!(@ERR) ; För ett ord (@w) välj (=S!) feltaggen (@ERR) (0 N-DEF) ; om ordet (0) är ett substantiv i bestämd form (N-DEF) (-2 GEN) ; om andra ordet till vänster (-2) är en gentitiv (GEN) (-1 A-DEF)); om det första ordet till vänster är ett adjektiv i bestämd form (A-DEF)

    Exempel: bilens snabba accelerationenKontrollera ordformen accelerationen, om ett substantivstyrs av ett genitiv så bör det stå i obestämd form.

  • 88

    Grammatikfix - Feltyper

    - Det finns 43 feltyper fördelade enligt följande kategorier:

  • 89

    Grammatikfix - Feltyper

    - Det finns 43 feltyper fördelade enligt följande kategorier: – grammatiska fel, 26 stycken –- kongruens inom nominalfraser --- verbkedjor

  • 90

    Grammatikfix - Feltyper

    - Det finns 43 feltyper fördelade enligt följande kategorier: – grammatiska fel, 26 stycken –- kongruens inom nominalfraser --- verbkedjor

    – stilbrott på ordnivå, 3 stycken –- ålderdomliga ord --- talspråk --- byråkratiska ord

  • 91

    Grammatikfix - Feltyper

    - Det finns 43 feltyper fördelade enligt följande kategorier: – grammatiska fel, 26 stycken –- kongruens inom nominalfraser --- verbkedjor

    – stilbrott på ordnivå, 3 stycken –- ålderdomliga ord --- talspråk --- byråkratiska ord

    – brott mot skrivkonventioner, 14 stycken – interpunktion – parenteser – etc

  • 92

    SCARRie

  • 93

    SCARRie

    – Svenska, danska och norska

  • 94

    SCARRie

    – Svenska, danska och norska

    – Stavnings- och grammatikkontroll

  • 95

    SCARRie

    – Svenska, danska och norska

    – Stavnings- och grammatikkontroll

    – baseras på en stor empirisk felundersökning

  • 96

    SCARRie

    – Svenska, danska och norska

    – Stavnings- och grammatikkontroll

    – baseras på en stor empirisk felundersökning – ECD (SCARRie Error Corpora Database) –- består av ca 9 000 riktiga fel från UNT och SvD

  • 97

    SCARRie

    – Svenska, danska och norska

    – Stavnings- och grammatikkontroll

    – baseras på en stor empirisk felundersökning – ECD (SCARRie Error Corpora Database) –- består av ca 9 000 riktiga fel från UNT och SvD

    – verktyg för korrekturläsning

  • 98

    SCARRie - Feltyper

  • 99

    SCARRie - Feltyper

    - Feltypologi i fyra nivåer

  • 100

    SCARRie - Feltyper

    - Feltypologi i fyra nivåer

    - ca 500 typer

  • 101

    SCARRie - Feltyper

    - Feltypologi i fyra nivåer

    - ca 500 typer

    - Feltyper på den översta nivån: – Stavfel(SE) 43% – Interpunktionsfel(PU) 17% – Stil, referens och mening(SP) 16% – Grammatiska fel(GP) 15% – Grafiska fel(GR) 9%

  • 102

    SCARRie – Grammatiska feltyper

  • 103

    SCARRie – Grammatiska feltyper

    – Prepositionsfras (11%) – Fel preposition prognoserna över elevernas utveckling

  • 104

    SCARRie – Grammatiska feltyper

    – Prepositionsfras (11%) – Fel preposition prognoserna över elevernas utveckling

    – Verbvalens (17%) – finns inget infinitivmärke imorgon kommer Kalle jobba

  • 105

    SCARRie – Grammatiska feltyper

    – Prepositionsfras (11%) – Fel preposition prognoserna över elevernas utveckling

    – Verbvalens (17%) – finns inget infinitivmärke imorgon kommer Kalle jobba

    - Nominalfasen (41%) – numerusinkongruens mellan framförställt attribut och huvud en förfärrad fysiska aktivitet

  • 106

    SCARRie – Uppbyggnad

  • 107

    SCARRie – Uppbyggnad

    – Stavningskontroll –- lexikonuppslagning --- regler för sammansättning --- baserad på CORRie

  • 108

    SCARRie – Uppbyggnad

    – Stavningskontroll –- lexikonuppslagning --- regler för sammansättning --- baserad på CORRie

    – Grammatikkontroll –- partiell parsning med Uppsala Chart Parser(UCP) ---- hitta fraserna (NP, etc) i meningen

  • 109

    SCARRie – Uppbyggnad

    – Stavningskontroll –- lexikonuppslagning --- regler för sammansättning --- baserad på CORRie

    – Grammatikkontroll –- partiell parsning med Uppsala Chart Parser(UCP) ---- hitta fraserna (NP, etc) i meningen

    –- chart Scanner (ReportChart) –-- går igenom analyser och letar efter felaktiga särdrag

  • 110

    SCARRie – Grammatikkontroll

  • 111

    SCARRie – Grammatikkontroll

    - regler som accepterar – en dator [NP]

  • 112

    SCARRie – Grammatikkontroll

    - regler som accepterar – en dator [NP]

    - regler som upptäcker morfosyntaktiska avvikelser – ett dator [NP med kongruensfel]

  • 113

    SCARRie – Grammatikkontroll

    - regler som accepterar – en dator [NP]

    - regler som upptäcker morfosyntaktiska avvikelser – ett dator [NP med kongruensfel]

    – lokala felregler för strukturella fel på sats- och meningsnivå

  • 114

    SCARRie – Grammatikkontroll

  • 115

    SCARRie – Grammatikkontroll

    - Kan hantera ca 30 grammatiska typer av fel

  • 116

    SCARRie – Grammatikkontroll

    - Kan hantera ca 30 grammatiska typer av fel Exempel: - ordföljdsfel Hon undrar vad gör kattungarna

  • 117

    SCARRie – Grammatikkontroll

    - Kan hantera ca 30 grammatiska typer av fel Exempel: - ordföljdsfel Hon undrar vad gör kattungarna

    - fel i nominalfasen En gult blomma

  • 118

    SCARRie – Grammatikkontroll

    - Kan hantera ca 30 grammatiska typer av fel Exempel: - ordföljdsfel Hon undrar vad gör kattungarna

    - fel i nominalfasen En gult blomma - pronomenkasus och alla kan stötta de som spelade

  • 119

    Språkgranskningsverktyg för andra språk

  • 120

    Språkgranskningsverktyg för andra språk

    - Critique

  • 121

    Språkgranskningsverktyg för andra språk

    - Critique – Skapades under 80-talet och är det första grammatikbaserade språkkontrollsystemet

  • 122

    Språkgranskningsverktyg för andra språk

    - Critique – Skapades under 80-talet och är det första grammatikbaserade språkkontrollsystemet

    – IBM

  • 123

    Språkgranskningsverktyg för andra språk

    - Critique – Skapades under 80-talet och är det första grammatikbaserade språkkontrollsystemet

    – IBM

    – Franska och Engelska

  • 124

    Språkgranskningsverktyg för andra språk

    - Critique – Skapades under 80-talet och är det första grammatikbaserade språkkontrollsystemet

    – IBM

    – Franska och Engelska

    – Föregångaren till språkkontrollen i Microsoft Word(eng. version)

  • 125

    Critique - feltyper

  • 126

    Critique - feltyper

    - 25 grammatiska feltyper

  • 127

    Critique - feltyper

    - 25 grammatiska feltyper – numeriuskongruens many cat/she walk

  • 128

    Critique - feltyper

    - 25 grammatiska feltyper – numeriuskongruens many cat/she walk – fel i verbform looks to been/had walk

  • 129

    Critique - feltyper

    - 25 grammatiska feltyper – numeriuskongruens many cat/she walk – fel i verbform looks to been/had walk – fel i pronomenform I walks

  • 130

    Critique - feltyper

    - 25 grammatiska feltyper – numeriuskongruens many cat/she walk – fel i verbform looks to been/had walk – fel i pronomenform I walks

    – skiljeteckenfel

  • 131

    Critique - feltyper

    - 25 grammatiska feltyper – numeriuskongruens many cat/she walk – fel i verbform looks to been/had walk – fel i pronomenform I walks

    – skiljeteckenfel

    – sammanblandningar av ord: whose – who's

  • 132

    Critique - feltyper

    - 25 grammatiska feltyper – numeriuskongruens many cat/she walk – fel i verbform looks to been/had walk – fel i pronomenform I walks

    – skiljeteckenfel

    – sammanblandningar av ord: whose – who's

    – 85 stilistiska fel

  • 133

    CORRie

  • 134

    CORRie

    - Holländska

  • 135

    CORRie

    - Holländska

    - generella feltyper:

  • 136

    CORRie

    - Holländska

    - generella feltyper: – Insättning: Vi har har redan åkt

  • 137

    CORRie

    - Holländska

    - generella feltyper: – Insättning: Vi har har redan åkt – Borttagning: Vi ___ redan åkt

  • 138

    CORRie

    - Holländska

    - generella feltyper: – Insättning: Vi har har redan åkt – Borttagning: Vi ___ redan åkt

    – Substitution: the well performance

  • 139

    CORRie

    - Holländska

    - generella feltyper: – Insättning: Vi har har redan åkt – Borttagning: Vi ___ redan åkt

    – Substitution: the well performance – Transposition: Kalle tror att vi åker inte imorgon

  • 140

    CORRie

    - Holländska

    - generella feltyper: – Insättning: Vi har har redan åkt – Borttagning: Vi ___ redan åkt

    – Substitution: the well performance – Transposition: Kalle tror att vi åker inte imorgon – Feature mismatch: det stora katten

  • 141

    CORRie

    - Grunden till feltyperna:

  • 142

    CORRie

    - Grunden till feltyperna: – performansfel - insättning datorr

  • 143

    CORRie

    - Grunden till feltyperna: – performansfel - insättning datorr - borttagning datr

  • 144

    CORRie

    - Grunden till feltyperna: – performansfel - insättning datorr - borttagning datr

    - subsitution dotor

  • 145

    CORRie

    - Grunden till feltyperna: – performansfel - insättning datorr - borttagning datr

    - subsitution dotor - transposition dtaor

  • 146

    CORRie

    - Grunden till feltyperna: – kompetensfel - homofonfel: fott → fått - fonetiska fel: resturang → restaurang

  • 147

    Kvar på kursen

    - Laboration 3

    - Nästa vecka: – Tisdag 29/5 kl 10 -12 handledning i Chomsky – Torsdag 31/5 kl 10-15 redovisning – Söndag 3/6 deadline laboration 3 och fördjupningsuppgiften