Asialista CLT131: Tekstityökalut 2012, kymmenes luento Tommi A Pirinen tommi.pirinen+clt131@helsinki.fi Helsingin yliopisto Kieliteknologian oppiaine, Nykykielten laitos 1. helmikuuta 2012 tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 1 / 18 tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 2 / 18 1. taulukkohaut 2. frekvenssien muunnos todennäköisyyksiksi Kahden hakuehdon yhdistys joko &&-merkinnällä tai kahdella awk-komennolla suht lyhyt sed-poiminta vielä mahdollinen, mutta teoriassa vaatii hieman tarkkaavaisuutta (rivin alku, ainakin 1 etuvokaali saneessa, toinen kenttä jne.) tietysti on niin, että etuvokaalit foneettisest on [eiyäö], kävi ratkaisuksi siinä missä esimerkkejä vastaava sointuvokaalijoukko [äöy] valmiiksi lasketulla korpuskoolla helppo; laskut muiden työkalujen avulla aiemmissa tehtävissä awkilla frkevenssien summaus onnistuu esim. laskemalla {saneet = saneet + $1} awkinkin kanssa on järkevintä käydä tiedosto kahdesti läpi kahdella eri komennolla jos sanat laskee ja käyttää laskun tulosta; tämä johtuu siitä että tuloksen tietää vasta kun tiedosto on käyty läpi mutta sitä kuitenkin tarvitaan jo ensimmäisen frekvenssin aikana tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 3 / 18 tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 4 / 18
3. Gutenbergin rivien rajat 4. CSV2TSV Gutenbergin lisenssin poisto onnistui joko jollain jo aiemmin todetulla tavalla tai hakulausekevälillä /BEGIN OF.../, /END OF.../ rivin viimeinen sane on awkissa mahdollista poimia hyödyntämällä sanelaskuri-muuttujaa NF: {print $NF}. käytännössä melko haastava tehtävä millä tahansa lähestymistavalla peruslähtököhta on helppo: muunnetaan, \t väärien pilkkujen suojaaminen lainausmerkkiparien välistä vaatii melko paljon prosessointia väärien lainausmerkkien suojaaminen ehkä vähän lisää (mutta ne esiintyvät myös pareina) hakulauseke joka löytää vain oikeat pilkut on mutkikas mutta melko suoraviivainen tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 5 / 18 tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 6 / 18 5. Vierasperäiset sanat 8.4 Harjoitustyöesittelyt tässä esimerkissä on ehkä enemmän työtä ymmärtää annettuja sääntöjä kuin toteuttaa lopputulos voi olla aika suoraviivainen joukko korvauksia sedillä tai awkilla käänteisessä ilmoittaumisjärjestyksessä; siirretään seuraaviin kertoihin tarpeen mukaan tänään: Mika, Hege, Juha, Georgios 8.2.: Helena, Leo, Heli, Harry 15.2.: Teemu, Jukka, Meliina, Sini, Erkki-Ilmari uudelleenjärjestellään tarpeen mukaan, käytännössä tämä kerta on luentojen osalta lyhyempi ja seuraavilla ei ole varsinaisia täysimittaisia valmisteltuja luentoja tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 7 / 18 tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 8 / 18
Asialista Make Make on käytännössä projektinhallintatyökalu Olennaisin hyöty siitä on projekteissa, joissa on paljon tiedostoja, jotka tavalla tai toisella vaikuttavat toisiinsa Make-määrittelyt ovat käytännössä shelli-skriptien erikoistapauksia, joissa syötetiedostoista saadaan tulostiedostoja Make ymmärtää myös tiedostojen aikaleimoja, joten sillä voi hallita tapauksia joissa paitsi tuodaan uusia tiedostoja projektiin, vanhat päivittyvät tämä mm. varmistaa että tiedostonimet noudattavat järjestelmää eikä vanhoja versioita suotta loju ympäriinsä tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 9 / 18 tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 10 / 18 Make-tiedoston rakennuspalikat Make-säännöt kirjoitetaan aina omaan tiedostoon joka on yleensä nimeltään Makefile Make-määrittely muodostuu kahdesta osasta: Tiedostonimien välisistä suhteista tulostiedosto: lähdetiedostot... ja shell-skriptistä, joka on sisennetty yhdellä sarkaimella tiedostonimimäärittelyt voivat sisältää muuttujaosan %, joka toimii kuten säännöllinen lauseke.*: %.frekvenssit: %.txt Näiden määrittelyjen avuilla make osaa tehdä puuttuvat tiedostot tai päivittää tulostiedostot jos lähdetiedostoissa on uudempi aikaleima skripti-osassa ei ole muuta erikoista, kuin että se ajetaan /bin/sh-tulkilla, eikä bashillä, joten siitä puuttuu jotain ominaisuuksia nämä puutteet voi kiertää käyttämällä skriptinä erillistä tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 11 / 18 bash-skriptiä ja komentoa bash skripti.sh Asialista tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 12 / 18
Rakennetaan esimerkkejä tutuilla skripteillä Asialista Tiedostoon Makefile rautatien saneistus: rautatie.saneet: rautatie.txt tr < rautatie.txt > rautatie.saneet tiedostonimissä voi käyttää erikoismuuttujia $@ ja $< tulosja lähdetiedostolle, eritoten muuttujallisissa säännöissä: %.saneet: %.txt tr < $< > $@ nyt, minkä tahansa tekstiedston jonka nimi loppuu.txt voi saneistaa komennolla make tiedosto.saneet tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 13 / 18 tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 14 / 18 Mika Pohto: Wikipedia Hege Roivainen: Runomitta-analyysi tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 15 / 18 tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 16 / 18
Juha Häkkänen: Wikipedia Georgios Tsambikakis: Kanojen translitterointi tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 17 / 18 tommi.pirinen+clt131@helsinki.fi (HY) CLT131: 10. luento 1. helmikuuta 2012 18 / 18