T-61.5020 Luonnollisten kielten tilastollinen käsittely
Vastaukset 8, ke 21.3.2007, 12:15-14:00 --
N-grammikielimallit
Versio 1.0
|
Tarkemmalla tukimisilla huomataan, että taulukossa ihmisen antamat trigrammiestimaatit ovat jonkin verran pielessä ja tilastolliset pehmentämättömät trigrammiestimaatit aivan pielessä.
Tilastollisten estimaattien laskuun käytettiin n. 30 miljoonan sanan aineistoa. Tässä aineistossa ei yksikään annetuista taivutetuista trigrammeista esiintynyt kertaakaan. Trigrammit perusmuotoistamalla löydettiin 11 lausetta, joissa esiintyi ``tuntua jo hyvä''. Estimaatti kaipaa siis selvästi tasoittamista, eikä senkään jälkeen ole kovin luotettava.
Myös esimerkki-ihmisen antamaa estimaattia voi epäillä, aivan mahdollisille lauseille on annettu nollatodennäköisyys, esim. ``Kyllä alkaa tuntumaan jo kumisaapas jalassa'', lause joka voidaan tokaista vaikka pitkän vaelluksen päätteeksi. Toisaalta annetulla 2 desimaalin tarkkuudella estimaatit lienevät hyviä.
Kun testihenkilölle annettiin koko lause nähtäväksi, saatiin jo varsin laadukkaat estimaatit. Jotta tilastollisesti pystyttäisiin pääsemään samaan tulokseen, tarvitsisi mallin ymmärtää suomen kielen syntaksia (miten sanoja voidaan taivuttaa ja laittaa peräkkäin) sekä myös sanojen semanttista merkitystä (``helmikuu'' on lopputalvea, melkein kevättä).
Unigrammiestimaatissa unohdetaan riippuvuus kaikista edellisistä sanoista, bigrammiestimaatti riippuu vain edellisestä sanasta ja trigrammiestimaatissa käytetään historiana kahta edellistä sanaa.
Unigrammiestimaatit voidaan siis laskea
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
Bigrammiestimaatit saadaan ottamalla yksi sana historiasta
käyttöön:
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
Lasketaan siis estimaatit:
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
![]() |
Aloitetaan laskemalla historioille ``olla'' ja ``vaikuttaa'' nämä
interpolointikertoimet. Historialla ``olla'' on esiintynyt viisi
erilaista seuraajaa ja se on yhteensä esiintynyt viisi kertaa.
Historialla ``vaikuttaa'' on yksi esiintynyt seuraaja, ja esiintymiä
myös yksi. Siispä:
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
Nyt voidaan laskea interpoloidut bigrammitodennäköisyydet:
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
Huomataan että menelmä ei tälläisenään anna yhtään todennäköisyyttä opetusaineiston ulkopuoliselle sanastolle (gorilla). Tämä voitaisiin korjata käyttämällä unigrammitodennäköisyyksille vielä jotain tasoitusmenetelmää. Mahdollista olisi myös jatkaa interpolointia niin sanoittuihin nollagrammeihin, mikä tarkoittaa tasajakauman kanssa interpolointia.
Interpolointi tai peräytyminen matalamman asteen n-grammeihin ei
kuitenkaan aina ole täysin luotettavaa. Esimerkkinä voidaan tarkastella
bigrammia ``San Francisco''. Koska paikannimi on hyvin tunnettu, estimaatti
on todennäköisesti
luotettava. Eli jos edellinen sana on ``San'', ei tule ongelmia.
Mutta entä jos edellinen sana ei ollut ``San''? Tällöin Fanciscon
todennäköisyyden pitäisi olla selvästi pienempi kuin silloin, kun
tarkastellaan unigrammijakaumaa ilman tietoa edellisestä sanasta.
Tähän ideaan pohjautuu Kneser-Ney -tasoitus, jossa alemman asteen
n-grammien todennäköisyydet estimoidaan arvioimalla kuinka
todennäköistä sanan on esiintyä uudessa kontekstissa.
Tällä hetkellä parhaaksi todettu tasoitusmenetelmä on juuri modifioitu
Kneser-Ney -interpolointi, joka käyttää näiden tyyppiestimaattien
lisäksi absoluuttista vähennystä kolmella erikseen optimoitavalla
vakiolla.
![]() |
![]() |
![]() |
|
![]() |
![]() |
||
![]() |
![]() |
Lasketaan summa erikseen:
![]() |
|||
![]() |
![]() |
||
![]() |
|||
![]() |
![]() |
Sijoitetaan vielä luvut hämmentyneisyyden lausekkeeseen
![]() |
Sana ``tapahtumaketju'' ei ollut 64000 yleisimmän sanan joukossa ja ei
sisältynyt siis kielimalliin. Kielimallin ohi meni siis
sanoista.