Werkoverleg met GvN.
Taken:
In grafiek: ook fail als percentage van zinnen zonder onbekende woorden. Gedaan.
- Automatic Parser Evaluation.
Implementeren. Gedaan.
Verschillende manieren van gokken bij onbekende woorden met elkaar vergelijken.
Probleem: ook zonder gokken zijn er soms behoorlijke verschillen tussen de uitvoer van Alpino en de Earley-parser. Zie: http://www.let.rug.nl/~kleiweg/Earley/cmp/
Probleem met gokken op basis van kansen. Idiomatische uitdrukkingen, speciale constructies, hebben een lagere waarschijnlijkheid dan het algemene geval, omdat elk relatief weinig voorkomt. Maar als je eenmaal de woorden hebt die in zo'n speciale constructie passen, dan is de kans dat het om dat speciale geval gaat juist veel groter dan dat het toch om een algemeen geval gaat.
Meer algemeen:
De kans voor deze regel...
X → A B
... wordt bepaald door fractie van deze regel t.o.v. andere regels...
X → C D X → E F G
Ik denk dat de kans bepaald zou moeten worden door fractie van deze regel t.o.v. andere regels...
Y → A B Z → A B
Testen met 1000 zinnen van elk minimaal vier woorden, met de Earley-parser, tegen grammatica en lexicon van clef_part0001.
Parses door Alpino en Earley van gewone zinnen gelden als norm (goudstandaard)
De testset bestaat uit dezelfde 1000 zinnen waarbij in in elke zin willekeurig een woord is vervangen door een onbekend woord. Parses vergeleken met de norm.
Test 1
for c := range catlist {
cat := int32(c)
count := float64(0)
tcount := float64(0)
n := float64(0)
tn := float64(0)
for _, r := range rules[cat] {
count += r.count
n++
}
for _, t := range terms[cat] {
count += t.count
tcount += t.count
n++
tn++
}
if tn > 0 {
guess[cat] = n / count
}
}
Resultaten:
Alpino: Earley: Precision Recall Crossing brackets Precision Recall Crossing brackets Min. :0.2609 Min. :0.2400 Min. :0.00000 Min. :0.3043 Min. :0.2593 Min. :0.00000 1st Qu.:0.7778 1st Qu.:0.7570 1st Qu.:0.00000 1st Qu.:0.8723 1st Qu.:0.8571 1st Qu.:0.00000 Median :0.8706 Median :0.8400 Median :0.06092 Median :0.9756 Median :0.9538 Median :0.00000 Mean :0.8471 Mean :0.8200 Mean :0.07501 Mean :0.9150 Mean :0.9040 Mean :0.03543 3rd Qu.:0.9489 3rd Qu.:0.9115 3rd Qu.:0.11691 3rd Qu.:1.0000 3rd Qu.:1.0000 3rd Qu.:0.04938 Max. :1.0000 Max. :1.0000 Max. :0.38636 Max. :1.0000 Max. :1.0000 Max. :0.34783
Test 2
for c := range catlist {
cat := int32(c)
count := float64(0)
tcount := float64(0)
n := float64(0)
tn := float64(0)
for _, r := range rules[cat] {
count += r.count
n++
}
for _, t := range terms[cat] {
count += t.count
tcount += t.count
n++
tn++
}
if tn > 0 {
guess[cat] = n * n / count // VERSCHIL MET TEST 1
}
}
Resultaten:
Alpino: Earley: Precision Recall Crossing brackets Precision Recall Crossing brackets Min. :0.4000 Min. :0.3462 Min. :0.00000 Min. :0.3667 Min. :0.3548 Min. :0.00000 1st Qu.:0.7800 1st Qu.:0.7778 1st Qu.:0.00000 1st Qu.:0.8797 1st Qu.:0.8837 1st Qu.:0.00000 Median :0.8727 Median :0.8512 Median :0.05556 Median :0.9667 Median :0.9600 Median :0.00000 Mean :0.8533 Mean :0.8355 Mean :0.06719 Mean :0.9209 Mean :0.9199 Mean :0.02882 3rd Qu.:0.9467 3rd Qu.:0.9211 3rd Qu.:0.10722 3rd Qu.:1.0000 3rd Qu.:1.0000 3rd Qu.:0.04189 Max. :1.0000 Max. :1.0000 Max. :0.32653 Max. :1.0000 Max. :1.0000 Max. :0.30000
Test 3
Alles gelijke kans: 0.1
Resultaten:
Alpino: Earley: Precision Recall Crossing brackets Precision Recall Crossing brackets Min. :0.2609 Min. :0.2400 Min. :0.00000 Min. :0.3043 Min. :0.2593 Min. :0.00000 1st Qu.:0.7778 1st Qu.:0.7616 1st Qu.:0.00000 1st Qu.:0.8759 1st Qu.:0.8621 1st Qu.:0.00000 Median :0.8717 Median :0.8423 Median :0.05777 Median :0.9779 Median :0.9574 Median :0.00000 Mean :0.8483 Mean :0.8220 Mean :0.07361 Mean :0.9172 Mean :0.9069 Mean :0.03408 3rd Qu.:0.9500 3rd Qu.:0.9130 3rd Qu.:0.11765 3rd Qu.:1.0000 3rd Qu.:1.0000 3rd Qu.:0.04878 Max. :1.0000 Max. :1.0000 Max. :0.35135 Max. :1.0000 Max. :1.0000 Max. :0.34783
Test 4
for c := range catlist {
cat := int32(c)
count := float64(0)
for _, t := range terms[cat] {
count += t.count
n++
}
guess[cat] = n / count
}
Resultaten:
Alpino: Earley: Precision Recall Crossing brackets Precision Recall Crossing brackets Min. :0.2609 Min. :0.2400 Min. :0.00000 Min. :0.3043 Min. :0.2593 Min. :0.00000 1st Qu.:0.7778 1st Qu.:0.7571 1st Qu.:0.00000 1st Qu.:0.8723 1st Qu.:0.8571 1st Qu.:0.00000 Median :0.8690 Median :0.8409 Median :0.06024 Median :0.9779 Median :0.9545 Median :0.00000 Mean :0.8472 Mean :0.8203 Mean :0.07530 Mean :0.9153 Mean :0.9045 Mean :0.03529 3rd Qu.:0.9495 3rd Qu.:0.9124 3rd Qu.:0.11790 3rd Qu.:1.0000 3rd Qu.:1.0000 3rd Qu.:0.04878 Max. :1.0000 Max. :1.0000 Max. :0.38636 Max. :1.0000 Max. :1.0000 Max. :0.34783
Test 5
total := 0
for c := range catlist {
cat := int32(c)
count := float64(0)
n := float64(0)
for _, t := range terms[cat] {
total += int(t.count)
count += t.count
}
guess[cat] = count
}
for key := range guess {
guess[key] /= float64(total)
}
Resultaten:
Alpino: Earley: Precision Recall Crossing brackets Precision Recall Crossing brackets Min. :0.2273 Min. :0.2000 Min. :0.00000 Min. :0.2273 Min. :0.1852 Min. :0.00000 1st Qu.:0.7748 1st Qu.:0.7555 1st Qu.:0.00000 1st Qu.:0.8603 1st Qu.:0.8541 1st Qu.:0.00000 Median :0.8660 Median :0.8393 Median :0.06061 Median :0.9730 Median :0.9496 Median :0.00000 Mean :0.8440 Mean :0.8184 Mean :0.07502 Mean :0.9113 Mean :0.9019 Mean :0.03615 3rd Qu.:0.9456 3rd Qu.:0.9091 3rd Qu.:0.11691 3rd Qu.:1.0000 3rd Qu.:1.0000 3rd Qu.:0.05263 Max. :1.0000 Max. :1.0000 Max. :0.40909 Max. :1.0000 Max. :1.0000 Max. :0.40909
Test 6
itotal := int64(0)
pref := make(map[string]int64)
for t, cat := range cathash {
if t == "" {
continue
}
i := strings.Index(t, "(")
if i > 0 {
t = t[:i]
}
for _, n := range terms[cat] {
pref[t] += int64(n.count)
itotal += int64(n.count)
}
}
for t, cat := range cathash {
if t == "" {
continue
}
i := strings.Index(t, "(")
if i > 0 {
t = t[:i]
}
if pref[t] > 0 {
guess[cat] = float64(pref[t]) / float64(itotal)
}
}
Resultaten:
Alpino: Earley: Precision Recall Crossing brackets Precision Recall Crossing brackets Min. :0.2609 Min. :0.2400 Min. :0.00000 Min. :0.3043 Min. :0.2593 Min. :0.00000 1st Qu.:0.7727 1st Qu.:0.7600 1st Qu.:0.00000 1st Qu.:0.8778 1st Qu.:0.8750 1st Qu.:0.00000 Median :0.8667 Median :0.8421 Median :0.06061 Median :0.9740 Median :0.9630 Median :0.00000 Mean :0.8442 Mean :0.8229 Mean :0.07515 Mean :0.9160 Mean :0.9109 Mean :0.03338 3rd Qu.:0.9467 3rd Qu.:0.9155 3rd Qu.:0.11662 3rd Qu.:1.0000 3rd Qu.:1.0000 3rd Qu.:0.04290 Max. :1.0000 Max. :1.0000 Max. :0.38636 Max. :1.0000 Max. :1.0000 Max. :0.34783