Ctl160 Tekstikorpusten tietojenkäsittely p.1/28

Samankaltaiset tiedostot
Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento

Korpusten käsittely clt131, P Luento 4

Korpusten käsittely clt131, P Luento 3

Korpusten käsittely clt131, P Luento 5

Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento,

CLT131 Korpusten käsittely

Ctl160 Tekstikorpusten tietojenkäsittely p.1/15

Ctl160 Tekstikorpusten tietojenkäsittely

Korpusten käsittely clt131, P Luento 6

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ctl160 Tekstikorpusten tietojenkäsittely p.1/24

Korpusten käsittely clt131, P Luento 1

Kieliteknologian ATK-ympäristö Neljäs luento

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

Luento 4. Timo Savola. 21. huhtikuuta 2006

CLT131 Korpusten käsittely (3op)

CLT131 Korpusten käsittely Viides luento

Komentotulkki. Kysymyksiä

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Hieman linkkejä: lyhyt ohje komentoriviohjelmointiin.

CLT131: Tekstityökalut 2011, kuudes luento

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

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

Harjoitus 1 -- Ratkaisut

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

Kieliteknologian ATK-ympäristö Viides luento

CLT131: Tekstityökalut 2010, neljäs luento

Talousmatematiikan perusteet, L3 Prosentti, yhtälöt Aiheet

Kieliteknologian ATK-ympäristö Viides luento

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

[Jnix näyttökoe. o ei ole sallittua käyttää mitään verkkolevyjakoa tai mitään siihen rinnastettavaa järjestelmdä.

Metropolia Ammattikorkeakoulu

Ctl160 Tekstikorpusten tietojenkäsittely Viides luento

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Datatähti 2019 loppu

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

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

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

CLT131: Tekstityökalut 2010, kuudes luento

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

Harjoitus 1 -- Ratkaisut

CLT131: Tekstityökalut 2011, viides luento

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Kieliteknologian ATK-ympäristö Kolmas luento

Java-kielen perusteet

Säännöllisten kielten sulkeumaominaisuudet

Kieliteknologian ATK-ympäristö Kuudes luento

Sekalaisia selvennyksiä

Tutoriaaliläsnäoloista

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

CLT131: Tekstityökalut 2012, kymmenes luento

Komentotulkki (SHELL) C- "perhe" - csh, alkup. C shell. Komentokieli. kieltä. - tcsh - edellisen laajennettu versio

Ohjelmoinnin perusteet Y Python

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

Java-kielen perusteet

Ohjelmoinnin perusteet Y Python

file Opetettavissa omilla säännöillä tiedostossa /etc/magic -k tulosta kaikki useista mahdollisuuksista -L/-h seuraa/älä seuraa symbolisia linkkejä

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmoinnin peruskurssi Y1

Perusohje vi-editorin käyttöön

TAULUKON TEKEMINEN. Sisällysluettelo

Ei-yhteydettömät kielet [Sipser luku 2.3]

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

Ohjelmoinnin perusteet Y Python

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

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Ohjelmoinnin peruskurssi Y1

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

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

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

CLT131: Tekstityökalut 2010, kolmas luento

Zeon PDF Driver Trial

TIETOKONEEN ÄÄRELLÄ. Kansalaisopistot kotouttamisen tukena hanke/opetushallitus Kuopion kansalaisopisto

5. HelloWorld-ohjelma 5.1

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Tekstin etsiminen ja korvaaminen

Ohjelmoinnin perusteet Y Python

Luento 2. Timo Savola. 31. maaliskuuta 2006

1.1 Tekstinprosessointiohjelmien yleinen toimintatapa (1)

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Harjoitus 5 (viikko 41)

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

Tietorakenteet (syksy 2013)

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Kaulaketju. Syöte. Tuloste. Esimerkki 1. Esimerkki 2

5.5 Jäsenninkombinaattoreista

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Ohjelmoinnin perusteet Y Python

Lineaarinen yhtälöryhmä

Suvi Junes/Pauliina Munter Tampereen yliopisto / tietohallinto 2014

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Sangen lyhyt L A T E X-johdatus

Transkriptio:

Ctl160 490160-0 Nicholas Volk Yleisen kielitieteen laitos, Helsingin yliopisto Ctl160 490160-0 p.1/28

Emacs-editori Ikkunoinnin toimiessa Emacs-editorin käynnistyskäskyn perään kannattaa lisätä &-merkki Ikkunoimattomassa ympäristössä jätetään &-merkki pois, muuten prosessi pyörii "taustalla" Taustalla pyörivän prosessin saa esiin käskyllä fg Tällöin prosessi haarautuu: voit jatkaa käskyjen antamista komentoriviltä Emacsin hyödyllisistä näppäinyhdistelmistä enemmän luennon www-sivulla Nicholas Volk p.2/28

Bash-skriptien teko Shell-skripti on komentotulkille kelpaavista käskyistä koottu tiedosto, johon on luku- ja suoritusoikeudet Tällöin kutsumalla tiedoston nimeä voi käyttää käskynä Hyvä tiedostopääte shell-skriptille on.sh Riippumatta $PATH muuttujan arvosta työhakemistossa olevaa oikein oikeuksin varustettua skriptiä voi kutsua käskyllä./nimi Nicholas Volk p.3/28

Bash-skriptien teko (2) Shell-skriptien siirreltävyyden varmistamiseksi käytämme vanhempaa sh-komentotulkkia bash-komentotulkin sijaan Käsky which sh kertoo missä paikassa hakemistorakennetta shell-komentotulkki sijaitsee Skriptin ensimmäisellä rivillä kerrotaan mikä ohjelma tulkitsee skriptin ja siinä olevat käskyt Meillä shell-skriptin ensimmäinen rivi on: #!/bin/sh Nicholas Volk p.4/28

Moodit Emacs-editorissa on moodeja, jotka helpottavat ohjelmien kirjoittamista Emacs "arvaa" tiedostopäätteestä tai ohjelman rivistä halutun moodin shell-moodin saa päälle kirjoittamalla M-x sh-mode jossa iso M-kirjain tarkoittaa meta-näppäinta. M-x voi kirjoittaa joko painamalla Alt-x tai painamalla ensin Esc ja hetken päästä x-näppäintä M-x global-font-lock-mode kytkee värit päälle tai pois päältä. Nicholas Volk p.5/28

Shell-skriptin argumentit: ongelma Omallekin shell-skriptille voi välittää argumentteja (optiota, tiedostonnimiä...) Argumentit tallettuvat muuttujiin $1, $2... $9 ja kollektiivisesti muuttujiin $* ja $ Argumentteja voi olla enemmän kuin yhdeksän... Skriptien tulisi siis osata huolehtia argumenttien käsittelystä... Ongelma on samanlainen kuin viime luennolla esitelty tr-käskyn kykenemättömyys saada tiedostoja argumentteina Nicholas Volk p.6/28

Shell-skriptit argumentit: tiedostoargumentit Tiedostoargumenttien osalta ongelman voi ratkaista laittamalla skriptin ensimmäiseksi käskyksi rivin cat $ Tällöin cat-käsky yhdistää argumenttitiedostonsa ja laittaa ne kantasyötteenä seuraavalle käskylle Ongelmaan palataan tarkemmin kuutosluennolla, jos ehditään Komentotulkin kommentin aloittaa muuten risuaitamerkki #. Kommentit helpottavat elämää... Se komentotulkista, lisää emacs-asiaa ensi kerralla Nicholas Volk p.7/28

fgrep-käskyn rajoitteet fgrep pystyy poimimaan halutun merkkijonon, mutta voidaan haluta muutakin kun etukäteen määriteltyjä merkkijonoja: Merkkijonot, joiden pituus on n-m merkkiä Tuntemattoman merkkijonon metsästys: as X as Suomen kielen tavurakenteen mukaiset sanat Sanat, joissa on takavokaaleja... Nicholas Volk p.8/28

Lisää kuvausvoimaa: egrep eli grep -E Kuvausvoimaa lisäämään voidaan käyttää säännöllisiä lausekkeita (regular expressions, regexp) Tietyillä, pian opittavilla merkeillä on tietty erikoismerkitys egrep-käsky hyödyntää säännöllisiä lausekkeita osumia etsiessään Niin tekee myös grep, mutta sitä emme käsittele tällä kurssilla (syntaksi vain on vähän erilainen) Nicholas Volk p.9/28

Mikä tahansa merkki Säännöllisten lausekkeiden piste tarkoittaa mitä tahansa yhtä merkkiä Tavallinen piste kirjoitetaan. tr n egrep -x "..." poimisi kaikkia viisikirjaimiset sanat Yhden tietyn merkin ja minkä tahansa merkin väliin sijoittuu merkkijoukko, jossa merkki voi olla mikä tahansa annettuun joukkoon kuuluva merkki Nicholas Volk p.10/28

Merkkijoukko Merkkijoukko koostuu hakasulkeiden sisään kirjoitetuista merkeistä: [a-zåäö], pa[rd]at Merkkijoukko toimii pitkälti samaan tapaan kuin tr-käskyn listat, mutta vaatii hakasulkeet Merkkijoukon komplementti saadaan kirjoittamalla ˆ vasemman hakasulun perään: [ˆa-zåäö] Jos hakasulku ei ilmaise merkkijoukon alkua tai loppua pitää (tai ainakin kannattaa) sen eteen kirjoittaa kenoviiva: [ ja ] Nicholas Volk p.11/28

- merkkijoukossa Jos halutaan viitata merkkiin, ei sen erityismerkitykseen, kirjoitetaan se egrep-käskyssä merkkijoukon ensimmäiseksi tai viimeiseksi merkiksi Perlissä toimii kenoviivan laitto -:n eteen: - Nicholas Volk p.12/28

Määrällistäjät: optionaalisuus Merkin, merkkijoukon ja suluilla rajatun alueen voi tehdä valinnaiseksi kirjoittamalla sen perään kysymysmerkki? Kysymysmerkkiin merkkinä viitataan kirjoittamalla? Lingvistisesti motivoituneita esimerkkejä ei ole (vielä) helppo keksiä: egrep "Amerii?kka" egrep "ka?akk?u" egrep "märj?ät" egrep "ve[dr]?et" Nicholas Volk p.13/28

Kleenen plus ja tähti Jos annettua merkkiä, merkkijoukkoa tai suluilla rajattua aluetta seuraa plus-merkki, tämä voi esiintyä 1:stä äärettömään kertaa Esimerkiksi positiiviset kokonaisluvut voisi määrittää seuraavasti: [0-9]+ Tähti tarkoittaa nollasta äärettömään kappaletta. Parempi määritelmä kokonaisluvuille olisi [1-9][0-9]* Merkkeihin itseensä viitataan taas kenoviivan avulla: + ja * Aa+rgh? Nicholas Volk p.14/28

Universaalikieli Mikä tahansa merkkijono eli universaalikieli voidaan nyt kuvat seuraavasti:.* Eli äskeinen onnistuu aina, myös tyhjällä merkkijonolla egrep "ei.* eikä" Nicholas Volk p.15/28

Tarkemmat määrän rajaukset Halutun asian perään kirjoitettujen aaltosulkeiden avulla toistojen määrä voidaan ilmaista tarkemmin: Tasan viisi kappaletta:....{5} 5-7 merkkiä:...?.? 5 tai enemmän:...+.{5,7}.{5,} Nicholas Volk p.16/28

Ryhmittely Sulkujen avulla voidaan osoittaa "määrällistäjille"yhtä merkkiä suurempi alue: (ha)+! (h[aei])+! (reduplikaatio){2} 10( Australian)? dollarilla Nicholas Volk p.17/28

Ryhmittely 2 Piippu-merkki tarjoittaa valinnaisuutta Itse käytän sitä vain sulkujen sisällä: san(oi a)s[st]a K(u a)mpi voitti M(. atti) Meikälainen (pitää täytyy on pakko) Välillä näkee käyettävän myös muotoja: ((pitää) (täytyy) (on pakko)) pitää täytyy on pakko Nicholas Volk p.18/28

ˆ ja $ ˆ viittaa säännöllisissä lausekkeissa merkkijonon alkuun: egrep "ˆ[A-ZÅÄÖ]" $ viittaa merkkijonon loppuun: egrep "ss[aä]$" Yhdessä ne vastaavat x-optiota: egrep -x "sana" on siis sama kuin egrep "ˆsana$" Rivinvaihtomerkkiin n ei egrep-käskyllä voi viitata Sarkainmerkin voi kirjoittaa egrep-käskylle näppäilemällä Ctrl-v TAB Nicholas Volk p.19/28

Palindromiesimerkki egrep-käskyllä on mahdollista viitata taaksepäin aiemmin ryhmiteltyihin kokonaisuuksiin Viittaus tapahtuu kirjoittamalla n, jossa n on 1-9. Esim. kuusikirjaimisen palindromin tunnistaa ehto egrep "ˆ(.)(.)(.) 3 2 1$" Tietojenkäsittelijän kiva tietää, ei tarvitse osata... Nicholas Volk p.20/28

Erityismerkityksen poistosta Yllä on opetettu, että kun halutaan viitata merkkiin, jolla on jokin erikoismerkitys, niin sen eteen pitää laitaa kenoviiva. Tämä ei ole aina aivan totta... Esim. merkkijoukon sisällä piste, kysymysmerkki ja kumppanit eivät tarvitse kenoviivaa eteensä, sillä merkkijoukon sisällä ko. merkit ovat semanttisesti yksiselitteisiä, eli ne voivat tarkoittaa siellä vain yhtä asiaa. Samaten ˆ tarkoitti eri asiaa lausekkeen ja merkkijoukon alussa (mitä?) Jos ei ole varma kontekstin sallimasta vapaudesta, kannattaa käyttää kenoviivoja...... siis minun mielestäni, muitakin näkemyksiä on... Nicholas Volk p.21/28

Perl komentoriviltä Tällä kurssilla käytämme perliä komentorivillä muodossa $ perl -pe käskyt e-optio tarkoittaa, että Perl-tulkki saa käskynsä komentoriviltä p-optio kertoo, että annetut käskyt tehdään kullekin syöteriville ja lopuksi tulostetaan syöterivi (mahdollisesti muuttuneena) Formaalisti p-optio tekee seuraavaa (ei tarvitse ymmärtää): while (<>) { käskyt; } continue { print $_; } Nicholas Volk p.22/28

s/x/y/; Komentoriviltä opettelemme käyttämään vain kahta käskyä: s/// ja tr/// Käskyllä s/// voidaan korvata haluttu asia tekstissä jollain toisella: $ perl -pe s/ he / she /; Vastaa sed-käskyä sed -e s/ he / she /; Puolipiste päättää Perlissä käskyn Tällaisenaan käsky korvaan vain (vasemmalta lukien) ensimmäisen osuman syötteestä Jos korvaava osio on tyhjä, niin osuma poistetaan Nicholas Volk p.23/28

s/x/y/g; Jakoviiva / toimii lausekerajan merkkinä Jakoviivojen väliin kirjoitettava teksti tulkitaan säännölliseksi lausekkeeksi s///-käskyn g-"optio" kirjoitetaan lausekkeiden perään Option avulla jokainen osuma korvautuu: $ perl -pe s/peking/beijing/; Tämä luo jännitteitä Pekingin ja maaseudun välillä, minkä Peking on ottanut huomioon. Tämä luo jännitteitä Beijingin ja maaseudun välillä, minkä Peking on ottanut huomioon. $ perl -pe s/peking/beijing/g; Tämä luo jännitteitä Pekingin ja maaseudun välillä, minkä Peking on ottanut huomioon. Tämä luo jännitteitä Beijingin ja maaseudun välillä, minkä Beijing on ottanut huomioon. Nicholas Volk p.24/28

Ryhmittely Ryhmittelyn avulla voidaan korvata kerralla vaihtoehtosia merkkijonoja: s/fabianink(. atu) 28/Siltavuorenpenger 20/g; Korvaavia vaihtoehtojen määrä on huomattavasti rajallisempi, mutta se voi olla suurempi kuin 1. Ryhmitellyssä käytettyjen sulkujen sisällä olevat merkit tallettuvat erityismuuttujiin $1.. $9 $1 sisältää vasemmalta lukien ensimmäisenä alkavien sulkujen sisällön jne. Nicholas Volk p.25/28

s/regexp/string/; s///:n ensimmäinen osa on siis säännöllinen lauseke Säännöllisen lausekkeen ei tarvitse osua koko riviin, pelkkä osajono riittää Jos osutaan koko riviin, niin g-optiosta huolimatta osumia voi olla vain yksi Osuma-alue, ei sitä edeltäviä eikä seuraavia osia, korvataan annetulla merkkijonolla Merkkijono voi sisältää muuttujia (esim. $1) Merkkijonon merkeillä ei ole säännöllisten lausekkeiden mukaisia erikoismerkityksiä Nicholas Volk p.26/28

Konkordanssiyritys Halutaan yksi sana halutun sanan oikealta ja vasemmalta puolelta: Talletetaan haluttu alue muuttujaan $1 (alleviivattu alue): $ perl -pe s/ˆ.* ([ˆ ]+ sana [ˆ ]+).*$/$1/; Oops! Ilman osumaa rivi jää entiselleen... Entä miten kävisi g-option kanssa? Palataan konkordanssiin vähän viisaampina viikon päästä... i-optio tarkoittaisi muuten merkkikoon vaikutuksen poistoa, mutta taaskaan en luottaisi ääkkösten toimivuuteen... Nicholas Volk p.27/28

tr/// Perlissä on Unixin tr-käskyä vastaava käsky tr/// Kirjainkokoa voi muuttaa seuraavasti: perl -pe tr/a-zåäö/a-zåäö/; Merkkejä voi tuhota seuraavasti d-"option"avulla ja komplementtina toimii c-"optio": perl -pe tr/a-zåäö n//dc; n on siis rivinvaihtomerkki, lähes sama asia kuin 012 Merkkien poiston voi tehdä myös seuraavasti: perl -pe s/[ˆa-zåäö n]//g; Tämä on tehottomampi tapa, mutta ehkä helpompi muistaa... Nicholas Volk p.28/28