CLT131: Tekstityökalut 2011, kahdeksas luento

Samankaltaiset tiedostot
Asialista. CLT131: Tekstityökalut 2011, kahdeksas luento. Merkistöistä ja kalvostoista. Asialista. Tommi A Pirinen

CLT131: Tekstityökalut 2011, seitsemäs luento

Asialista. hippu ja.bashrc. Asialista. Tutkimusongelma: tekstin morfologisen jäsennyksen selvittely

CLT131: Tekstityökalut 2011, viides luento

CLT131: Tekstityökalut 2010, toinen luento

Asialista. CLT131: Tekstityökalut 2012, kymmenes luento. 2. frekvenssien muunnos todennäköisyyksiksi. 1. taulukkohaut

CLT131: Tekstityökalut 2012, kymmenes luento

CLT131: Tekstityökalut 2011, toinen luento

Asialista. CLT131: Tekstityökalut 2010, kolmas luento. Laskuharjoitusaikataulut. Harjoituksissa havaitut virheet. Käytännön asiat/kertaus

CLT131: Tekstityökalut 2010, kolmas luento

Asialista. CLT131: Tekstityökalut 2010, neljäs luento. Lähiaikataulu. Asialista. Käytännön asiat

CLT131: Tekstityökalut 2011, kuudes luento

CLT131: Tekstityökalut 2010, neljäs luento

Asialista. CLT131: Tekstityökalut 2010, kuudes luento. Tuleva ohjelma. Kurssipalaute. Käytännön asiat Tuleva ohjelma Havaitut virheet ja korjaukset

CLT131: Tekstityökalut 2010, kuudes luento

CLT131: Tekstityökalut 2010, ensimmäinen luento

Kieliteknologian ATK-ympäristö Kolmas luento

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ohjelmoinnin perusteet Y Python

CLT131 Korpusten käsittely

Kieliteknologian ATK-ympäristö Neljäs luento

Luento 4. Timo Savola. 21. huhtikuuta 2006

Ctl160 Tekstikorpusten tietojenkäsittely p.1/15

Kieliteknologian ATK-ympäristö Kuudes luento

Tehtävä 2: Säännölliset lausekkeet

Ohjelmoinnin perusteet Y Python

Kieliteknologian ATK-ympäristö Viides luento

Kieliteknologian ATK-ympäristö Viides luento

Korpusten käsittely clt131, P Luento 5

Ohjelmoinnin perusteet Y Python

Python-ohjelmointi Harjoitus 5

Korpusten käsittely clt131, P Luento 1

Ohjelma on tarkoitettu pankkiyhteysohjelmalla vastaanotettujen Finvoiceverkkolaskujen

Hieman linkkejä: lyhyt ohje komentoriviohjelmointiin.

SUOMEN PANKKIYHDISTYS

PALKKA-AINEISTON SIIRTOTIEDOSTO

Korpusten käsittely clt131, P Luento 6

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi.

Korpusten käsittely clt131, P Luento 4

Fakta versio Forecast versio

Lineaarialgebra ja matriisilaskenta I

CLT131 Korpusten käsittely Viides luento

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Insinöörimatematiikka D

Kieliteknologian ATK-ympäristö Toinen luento

Luento 7 Taulukkolaskennan edistyneempiä piirteitä Aulikki Hyrskykari

Koodausteoria, Kesä 2014

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin perusteet Y Python

Aine Määrä % happi hiili vety typpi ,6 kalsium ,4 fosfori 780 1,1

12. Javan toistorakenteet 12.1

Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento

Ohjelmoinnin peruskurssien laaja oppimäärä

Kohdeyleisö: toisen vuoden teekkari

linux: Ympäristömuuttujat

12. Javan toistorakenteet 12.1

SELECT-lauseen perusmuoto

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

Numeeriset menetelmät

11. Javan toistorakenteet 11.1

CLT255: Tulosten esittäminen ja niiden arviointi tilastomenetelmillä

Kääntäjän virheilmoituksia

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Komentotulkki. Kysymyksiä

TEKSTINKÄSITTELYTEHTÄVIÄ, OSA 1

2 Konekieli, aliohjelmat, keskeytykset

Ohjelmoinnin perusteet Y Python

CLT131 Korpusten käsittely (3op)

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

Ohjelmoinnin perusteet Y Python

Tulorekisteriin liittyvät tilanteet palkanlaskennassa. Visma Fivaldi

Sisällys. Johdatus Linux/Unixiin: Osa 2. Prosessin tilat. Prosessien hallinta. Prosessien monitorointi

Toinen harjoitustyö. ASCII-grafiikkaa

Oma nimesi Tehtävä (5)

2.8. Kannanvaihto R n :ssä

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

Algoritmit 2. Luento 13 Ti Timo Männikkö

S: siirtää listan ensimmäisen luvun viimeiseksi V: vaihtaa keskenään listan kaksi ensimmäistä lukua

Aine Määrä % happi hiili vety typpi ,6 kalsium ,4 fosfori 780 1,1

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Visma Business AddOn Tositteiden tuonti. Käsikirja

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Liite 1. Laajennettu Eukleideen algoritmi suoraviivainen tapa

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python

Excel syventävät harjoitukset

Harjoitustehtäväkierros 1

VERKONRAKENNUS JA URAKOINTI TYÖPAJA 1

Ctl160 Tekstikorpusten tietojenkäsittely p.1/24

IIO10200 Tietokantaohjelmointi (4 op)

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Sangen lyhyt L A T E X-johdatus

Korpusten käsittely clt131, P Luento 3

XML tehtävien työnkulku

Matriisit, kertausta. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

Koodausteoria, Kesä 2014

Luento 2. Timo Savola. 31. maaliskuuta 2006

ASCII-taidetta. Intro: Python

Transkriptio:

CLT131: Tekstityökalut 2011, kahdeksas luento Tommi A Pirinen tommi.pirinen@helsinki.fi Helsingin yliopisto Kieliteknologian oppiaine, Nykykielten laitos 2011-02-04 2011-02-04 1 / 17

Asialista 1 Käytännön asiat 2 Ongelman kuvaus 3 Menetelmät ja aineistot Aineistot Menetelmät 4 Toteutus 2011-02-04 2 / 17

Merkistöistä ja kalvostoista Huomattiin, taas, harjoitustehtävistä, että kalvostoista kopioidut ja liitetyt esimerkit eivät suoraan toimi Windowsilla/Puttyllä, johtuen eräiden koodiesimerkkien esitysmuotojen erilaisuudesta: kahdesta viivasta tulee kalvoissa helposti ajatusviiva: - suorista konekirjoituslainausmerkeistä tulee kaarevat: sirkumfleksistä tulee vääränlainen: ˆ jne. sen sijaan tehtävien malliratkaisuissa on varmasti oikeat merkinnät 2011-02-04 3 / 17

Asialista 1 Käytännön asiat 2 Ongelman kuvaus 3 Menetelmät ja aineistot Aineistot Menetelmät 4 Toteutus 2011-02-04 4 / 17

Mitataan oikaisulukujen (tai muun kt-sovelluksen) toimivuutta Tehtäväkuvaus tekstissä olevien kirjoitusvirheiden korjaavia sovelluksia pitää vertailla tarvitaan jonkinmoisiin tilastollisiin lukuihin perustuvaa luokittelua korjauksista Lähtökohdat Ongelmat 2011-02-04 5 / 17

Mitataan oikaisulukujen (tai muun kt-sovelluksen) toimivuutta Tehtäväkuvaus tekstissä olevien kirjoitusvirheiden korjaavia sovelluksia pitää vertailla tarvitaan jonkinmoisiin tilastollisiin lukuihin perustuvaa luokittelua korjauksista Lähtökohdat tunnetaan väärinkirjoitettu sana ja oikea korjaus on joukko oikaisulukimia, jotka arvuuttelevat oikeaa korjausta [0..n] järjestettyä korjausehdotusta Ongelmat 2011-02-04 5 / 17

Mitataan oikaisulukujen (tai muun kt-sovelluksen) toimivuutta Tehtäväkuvaus tekstissä olevien kirjoitusvirheiden korjaavia sovelluksia pitää vertailla tarvitaan jonkinmoisiin tilastollisiin lukuihin perustuvaa luokittelua korjauksista Lähtökohdat tunnetaan väärinkirjoitettu sana ja oikea korjaus on joukko oikaisulukimia, jotka arvuuttelevat oikeaa korjausta [0..n] järjestettyä korjausehdotusta Ongelmat millä mitataan oikaisuluvun hyvyyttä (tarkemmin ks. CLT255) miten täsmätään oikeat korjaukset järjestettyihin ehdotuksiin 2011-02-04 5 / 17

Asialista 1 Käytännön asiat 2 Ongelman kuvaus 3 Menetelmät ja aineistot Aineistot Menetelmät 4 Toteutus 2011-02-04 6 / 17

Oikaisulukuvirhekorpus oikaisuluvun testaamiseen tarvitaan kirjoitusvirheitä ja oikeita korjauksia nyt meillä on Wikipediasta käsin kerättyjä virheitä käytettävän virheiden keruu ja korjausten tarkistaminen on usein työläs tehtävä, esim. tässä on tehty: omorfi-analyse.sh fgrep +? less 2011-02-04 7 / 17

Oikaisulukuvirhekorpus oikaisuluvun testaamiseen tarvitaan kirjoitusvirheitä ja oikeita korjauksia nyt meillä on Wikipediasta käsin kerättyjä virheitä käytettävän virheiden keruu ja korjausten tarkistaminen on usein työläs tehtävä, esim. tässä on tehty: omorfi-analyse.sh fgrep +? less fgrep virhe jokaiselle löydetylle selvittämään oikeaa käännöstä käsin tehdyssä tiedostossa muodon saa päättää itse; päätetään että väärin\<tab>oikein on helppo käsitellä 2011-02-04 7 / 17

Vertailtavat oikaisulukuaineistot oikaisuluvun korjaimen tehtävä on siis antaa käyttäjälle järjestetty lista ehdotuksista listojen järjestämisessä voi yhdistellä erilaisia menetelmiä: mallintaa näppäilyvirheitä näppäimistöllä (Levenshtein-etäisyys): kisas kisa,kissa,kisasi,... kaikki menetelmät tuottavat yleensä oikeita ja vääriä ehdotuksia; pitää arvioida paras 2011-02-04 8 / 17

Vertailtavat oikaisulukuaineistot oikaisuluvun korjaimen tehtävä on siis antaa käyttäjälle järjestetty lista ehdotuksista listojen järjestämisessä voi yhdistellä erilaisia menetelmiä: mallintaa näppäilyvirheitä näppäimistöllä (Levenshtein-etäisyys): kisas kisa,kissa,kisasi,... katsoa saneiden yleisyyttä: kissa > kisa > kisasi kaikki menetelmät tuottavat yleensä oikeita ja vääriä ehdotuksia; pitää arvioida paras 2011-02-04 8 / 17

Vertailtavat oikaisulukuaineistot oikaisuluvun korjaimen tehtävä on siis antaa käyttäjälle järjestetty lista ehdotuksista listojen järjestämisessä voi yhdistellä erilaisia menetelmiä: mallintaa näppäilyvirheitä näppäimistöllä (Levenshtein-etäisyys): kisas kisa,kissa,kisasi,... katsoa saneiden yleisyyttä: kissa > kisa > kisasi kaikki menetelmät tuottavat yleensä oikeita ja vääriä ehdotuksia; pitää arvioida paras voidaan järjestellä ehdotukset myös riveittäin: ehdotus1\<tab>\<tab>ehdotus2... 2011-02-04 8 / 17

Tiedostojen yhdistely vierekkäin: paste jotta voitaisiin laskea esim. awkilla oikeita korjauksia, helpottaa kun saadaan samaan tiedostoon vastaavat rivit kun tässä tapauksessa rivit aina täsmäävät, voidaan käyttää paste-komentoa sellaisenaan; se liittää kahden tiedoston rivit tabilla eroteltuna: paste virhekorpus korjausehdotukset-1 > korjauskorpus-1 nyt korjauskorpuksessa on toinen sarake on oikea sana ja se pitäisi löytyä korjausehdotuksista sarakkeissa kolmannesta eteenpäin 2011-02-04 9 / 17

Sarakkeiden yhdistely awkilla tutusti nyt awk osaa käsitellä rivejä saneittain eli sarakkeittain awkin komentoriveissä käytetyt ehdot voivat puuttua sarakkeiden samuuteen vertailuoperaattorilla ==: awk $2 == $3 {print} tulosta rivit joilla kolmas sarake on sama kuin toinen 2011-02-04 10 / 17

Tulosten vertailu ja tulostus awkilla awkilla voi myös tehdä laskelmia; erikoisehdoissa BEGIN ja END voi alustaa ja tulostaa laskelmia. Usein halutaankin prosentteja absoluuttisten lukujen sijaan: 2011-02-04 11 / 17

Tulosten vertailu ja tulostus awkilla awkilla voi myös tehdä laskelmia; erikoisehdoissa BEGIN ja END voi alustaa ja tulostaa laskelmia. Usein halutaankin prosentteja absoluuttisten lukujen sijaan: BEGIN {ekat = 0; kaikki = 0;} nollataan laskurit 2011-02-04 11 / 17

Tulosten vertailu ja tulostus awkilla awkilla voi myös tehdä laskelmia; erikoisehdoissa BEGIN ja END voi alustaa ja tulostaa laskelmia. Usein halutaankin prosentteja absoluuttisten lukujen sijaan: BEGIN {ekat = 0; kaikki = 0;} nollataan laskurit $2 == $3 {ekat++;} lasketaan täsmäävät {kaikki++;} lasketaan rivien määrää 2011-02-04 11 / 17

Tulosten vertailu ja tulostus awkilla awkilla voi myös tehdä laskelmia; erikoisehdoissa BEGIN ja END voi alustaa ja tulostaa laskelmia. Usein halutaankin prosentteja absoluuttisten lukujen sijaan: BEGIN {ekat = 0; kaikki = 0;} nollataan laskurit $2 == $3 {ekat++;} lasketaan täsmäävät {kaikki++;} lasketaan rivien määrää END {printf("oikeita tuloksia %d/%d = %.2f %%",ekat,kaikki, 100*ekat/kaikki);} tulostetaan täsmäävien osuus riveistä kirjoitettaessa komentoriville koko rimpsu menisi yhdeksi riviksi; myös awkit voi tallentaa tiedostoihin ja suorittaa awk -f skripti.awk 2011-02-04 11 / 17

Tulosten vertailu ja tulostus awkilla awkilla voi myös tehdä laskelmia; erikoisehdoissa BEGIN ja END voi alustaa ja tulostaa laskelmia. Usein halutaankin prosentteja absoluuttisten lukujen sijaan: BEGIN {ekat = 0; kaikki = 0;} nollataan laskurit $2 == $3 {ekat++;} lasketaan täsmäävät {kaikki++;} lasketaan rivien määrää END {printf("oikeita tuloksia %d/%d = %.2f %%",ekat,kaikki, 100*ekat/kaikki);} tulostetaan täsmäävien osuus riveistä kirjoitettaessa komentoriville koko rimpsu menisi yhdeksi riviksi; myös awkit voi tallentaa tiedostoihin ja suorittaa awk -f skripti.awk ohita vaihtoehto? 2011-02-04 11 / 17

Vaihtoehtoinen, awkiton täsmäystapa: join voidaan käsitellä virhekorpusta ja ehdotustiedostoja tietokantoina join on siis tietokantamaailman join-komento; yhdistää rivit jos annetut sarakkeet täsmäävät ommi.pirinen@helsinki.fi (Helsingin yliopisto Kieliteknologian CLT131: oppiaine, 8. luento Nykykielten laitos) 2011-02-04 12 / 17

Vaihtoehtoinen, awkiton täsmäystapa: join voidaan käsitellä virhekorpusta ja ehdotustiedostoja tietokantoina join on siis tietokantamaailman join-komento; yhdistää rivit jos annetut sarakkeet täsmäävät joinin komento on yleensä join -1 sarake1-2 sarake2 tiedosto1 tiedosto2, joissa siis sarake1 on ensimmäisen tiedoston sarake joka täsmätään toisen tiedoston sarakkeeseen sarake2: join -1 2-2 1 virhekorpus korjaukset tulostaa rivit joissa korjausten ensimmäinen sarake on oikea 2011-02-04 12 / 17

Vaihtoehtoinen, awkiton täsmäystapa: join voidaan käsitellä virhekorpusta ja ehdotustiedostoja tietokantoina join on siis tietokantamaailman join-komento; yhdistää rivit jos annetut sarakkeet täsmäävät joinin komento on yleensä join -1 sarake1-2 sarake2 tiedosto1 tiedosto2, joissa siis sarake1 on ensimmäisen tiedoston sarake joka täsmätään toisen tiedoston sarakkeeseen sarake2: join -1 2-2 1 virhekorpus korjaukset tulostaa rivit joissa korjausten ensimmäinen sarake on oikea (rivien sisältö on tässä irrelevantti, sillä haluamme vain laskea ne, mutta lopputulos on sellainen rivi jossa on yhdistetty sarake kerran ja sitten muut sarakkeet järjestyksessä) 2011-02-04 12 / 17

Asialista 1 Käytännön asiat 2 Ongelman kuvaus 3 Menetelmät ja aineistot Aineistot Menetelmät 4 Toteutus 2011-02-04 13 / 17

Työsuunnitelma 1 rakennetaan Make-skriptiä tulevia aineistoja varten 2 noudetaan pari oikaisulukuaineistoa 3 yhdistellään virhekorpuksen kanssa 4 lasketaan prosentit ensimmäisenä oikein annetuille riveille 2011-02-04 14 / 17

Oikaisulukuaineistojen nouto haetaan kurssisivuaineistosta: wget http://www.ling.helsinki.fi/kit/2010s/ clt131/materiaalit/fiwiki.virhekorpus wget http://www.ling.helsinki.fi/kit/2010s/ clt131/materiaalit/fiwiki.1.korjaukset wget http://www.ling.helsinki.fi/kit/2010s/ clt131/materiaalit/fiwiki.2.korjaukset 2011-02-04 15 / 17

Oikaisulukuaineistojen nouto haetaan kurssisivuaineistosta: wget http://www.ling.helsinki.fi/kit/2010s/ clt131/materiaalit/fiwiki.virhekorpus wget http://www.ling.helsinki.fi/kit/2010s/ clt131/materiaalit/fiwiki.1.korjaukset wget http://www.ling.helsinki.fi/kit/2010s/ clt131/materiaalit/fiwiki.2.korjaukset Make-skriptissä tiedostojen noudon voi esittää muodossa: fiwiki.virhekorpus: <tab>wget... 2011-02-04 15 / 17

Korjausaineistojen yhdistely yhdistely pastella oli suoraviivainen: paste virhekorpus korjaukset 2011-02-04 16 / 17

Korjausaineistojen yhdistely yhdistely pastella oli suoraviivainen: paste virhekorpus korjaukset Make-skriptin sääntö monelle tiedostolle on monimutkaisempi, muttei paljoa: %.korjauskorpus: fiwiki.%.korjaukset fiwiki.virhekorpus <tab>paste fiwiki.virhekorpus $< 2011-02-04 16 / 17

Mittaustulosten esitys mittaustuloksille oli pitkähkö awk-skripti: BEGIN {ekat = 0; kaikki = 0;} $2 == $3 {ekat++;} {kaikki++;} END {printf("oikeita tuloksia %d/%d = %.2f %%",ekat,kaikki, 100*ekat/kaikki);} 2011-02-04 17 / 17

Mittaustulosten esitys mittaustuloksille oli pitkähkö awk-skripti: BEGIN {ekat = 0; kaikki = 0;} $2 == $3 {ekat++;} {kaikki++;} END {printf("oikeita tuloksia %d/%d = %.2f %%",ekat,kaikki, 100*ekat/kaikki);} jos sen tallentaa tiedostoon ekat-prosentit.awk, voidaan rakentaa Make-skripti: %.tulokset: %.korjauskorpus <tab>awk -f ekat-prosentit.awk < $< > $@ 2011-02-04 17 / 17

Mittaustulosten esitys mittaustuloksille oli pitkähkö awk-skripti: BEGIN {ekat = 0; kaikki = 0;} $2 == $3 {ekat++;} {kaikki++;} END {printf("oikeita tuloksia %d/%d = %.2f %%",ekat,kaikki, 100*ekat/kaikki);} jos sen tallentaa tiedostoon ekat-prosentit.awk, voidaan rakentaa Make-skripti: %.tulokset: %.korjauskorpus <tab>awk -f ekat-prosentit.awk < $< > $@ nyt siis make 1.tulokset saa aikaan korpuksen 1 tulosprosentin tiedostoon 2011-02-04 17 / 17