Harjoitukset 10.2.2003

Palauta vastaukset sähköpostitse luennoitsijalle ennen seuraavaa luentoa (klo 9.00, eli vastauksiaan voi vielä hioa 8-9 kertaustunnilla). Vastaus sisältää sekä lopputuloksen että sen saamiseksi tarvitut käskyt (siis ne ratkaisevat, ei muita yrityksiä ja erehdyksiä). Vastaukset mieluiten raakatekstinä (vastaan nopeammin :) ja komentorivit vastaukset mieluiten osana viestiä, skriptit (pakkaamattomina) liitteinä. Siis mieluiten.

Osaa laskarimateriaalista ei saa laittaa julkisesti saataville. Niinpä tiedostot varas.twol ja kit.fdg.txt voi hakea kotihakemistonani (eli ~nvolk/ eteen) tai www-alihakemistosta, johon pääsee suoraan laitoksen koneilta ja käyttäjätunnuksella ctl160 salasanan kanssa. Salasanan saa minulta, tosin torstaina en lue postejani...

  1. Saneen lisäksi voidaan frekvenssilistassa tarkastella esim. sanojen perusmuodon esiintymistiheyttä. Tiedosto kit.fdg.txt sisältää näytteen Connexorin suomenkielisellä FDG-jäsentimellä analysoitua tekstiä. Jokainen rivi sisältää tietoa yhdestä sanasta. Rivit on jaettu sarkaimella eroteltuihin kenttiin. Sane on löytyy toisesta kentästä, perusmuoto (lemma) löytyy kolmannesta kentästä. Laadi kaksi komentojonoa, joista ensimmäinen tekee laskevan frekvenssilistan saneista, toinen lemmoista. Poista molemmista välimerkit ja lause- ja kappalerajat (<s> ja <p>). Toisen tai kolmannen kentän esiin saamiseksi (eli muiden kenttien poistamiseksi) voit käyttää joko Perliä tai unixin cut-käskyä (ks. man-sivut, ei ainakaan toistaiseksi tällä kurssilla opetettu). Vertaa saneiden ja perusmuotojen TOP TEN -listoja head-käskyn avulla. Kentät on erotettu tabulaattorein! (Perlissä \t, jonka sijasta voi käyttää myös whitespace-merkkiä \s, joka on kutakuinkin sama kuin [\t\n ]. \s:n vastakohta on \S.)

  2. Toteuta Perl-ohjelma, joka simuloi Unixin egrep-käskyä (ilman optiota). Ohjelmasi saa siis ensimmäisenä argumenttinaan säännöllisen lausekkeen eli säännöllinen lausekkeesi kirjoitetaan siis välittömästi komennon perään. Lausekkeen lukemiseksi komentoriviltä käytä valmista ohjelmarunkoa, joka hakee lausekkeen muuttujaan $regex. (Saat toki toteuttaa toisellakin tapaa, jos osaat. Kurssilla moista ei ole opetettu, eikä opeteta.)

  3. MBROLA-puhesyntetisaattori generoi .pho-tiedostoista puhetta. Tutustu pho-tiedostoformaatin kuvaukseen ja laadi Perl-ohjelma, joka poimii http://www.hamilton.net.au/en_popeye.pho-tiedostosta pisimmän äänteen sisältävän rivin. Voit hakea tiedoston kotihakemistoosi tekstipohjaisella lynx-selaimella käskyllä

    lynx -dump http://www.hamilton.net.au/en_popeye.pho > ~/popeye.pho

    Äänne on siis kunkin rivin eka sana ja kesto toinen. Jos haluat kuunnella miltä tiedostosta syntetisoitu ääni kuullostaa, kytke kuulokkeet johonkin unix-luokan koneeseen ja anna käsky

    play ~nvolk/popeye.wav

  4. Jatketaan edellisen tiedoston parissa: Tee perl-ohjelma joka laskee tiedoston I-äänteiden keskimääräisen keston.

  5. OR-operaatio hyväksyy lauseet joissa ainakin toinen ehto täytyy. Tee ohjelma, joka kysyy kaksi merkkijonoa eli lukee kaksi riviä syötettä Ohjelmassa saa olla vain yksi if-lause, onnistuu jos toisessa riveistä löytyy a-kirjain ja toisesta ei. Kirjain voi olla kummassa sanassa tahansa. Kaksi riviä pystyy lukemaan vaikkapa seuraavasti:
    $a = <>; $b = <>;
    Kyseisestä suomen kielen tai-sanaa merkitykseltään vastaavasta käsitteestä käytetään termiä XOR (eXclusive OR). Luentomateriaalissa oli virhe: JA-operaatio suoritetaan ennen TAI-operaatiota, ellei sulutuksen avulla muuta kerrota! (Jos tehtävä ei aukene, älkää antako sen masentaa: Tämä on kurssin ainoa kerta, kun samassa ehdossa pitää käyttää sekä TAI- että JA-operaatioita.

  6. Tiedostossa varas.twol on aiemmin käytetyn varas.txt-tiedostot sanat ajettu Kimmo Koskenniemen ja Lingsoftin tekemän morfologisen analysaattorin läpi. (Analysaattoria voi kokeilla itse laitoksen venus-palvelimella käskyllä fin-twol tai /usr/local/contrib/bin/fin-twol.) Tee ohjelma joka siirtää saneen morfologiset tulkinnat samalle riville sen kanssa. Huomaa, ettei kaikilla saneilla ole laisinkaan tulkintoja.

nvolk@ling.helsinki.fi
Viimeksi päivitetty: Friday, 28-Feb-2003 08:30:15 EET