CLT131: Tekstityökalut 2010, toinen luento Tommi A Pirinen tommi.pirinen@helsinki.fi Helsingin yliopisto Kieliteknologian oppiaine, Nykykielten laitos 2010-11-12 päivitetty: 2010-11-14
Asialista Käytännön asioita vielä Ongelman kuvaus Menetelmät ja aineistot Työkalut Viitteitä
Laskuharjoitukset: ke 12 13 / 13 14 valitaan parempi aika huutoäänestyksellä laskareissa käydään siis läpi palautettuja ratkaisuja: korjataan toistuvia virheitä kerrotaan lisätietoja / vastauksia joita kukaan ei ole vastannut selvitetään taustoja ym. lisätietoja käytännön ongelmia ympäristöissä, komennoissa jne. tarpeen mukaan, saa ehdottaa muutakin
Tammikuun ohjelma Aloitetaan tammikuu viikolta 4: kurssin kalenteri on http://www.ling.helsinki.fi/ kit/2010s/clt131/kalenteri.shtml tarkemmin alku tulee tietoon lähempänä, mutta todennäköisesti perjantain luennoilla aloitetaan
hippu ja.bashrc Hipulle luotavassa tiedostossa.bashrc oli viime kalvoissa viivaparista tullut ajatusviiva, verkkosivuilla copypastettava versio oli kuitenkin oikea. Lisäksi module load riviin pitänee lisätä tätä luentoa varten jo: export GREP_OPTIONS=- -colour=auto module load gcc/4.4.4 openfst/1.2 libtool hfst/2.4.1 hfst/3 python/3.1.1-gcc omorfi Lisäksi joillakuilla on hipulla käytössä csh eikä bash, joten ohje ei toimi suoraan. Komennolla chsh voi vaihtaa bashiin, jos tämä ei toimi tai haluaa käyttää csh:ta tms., csh-ohjeita voi kysellä sähköpostitse
Asialista Käytännön asioita vielä Ongelman kuvaus Menetelmät ja aineistot Työkalut Viitteitä
Tutkimusongelma: tekstin morfologisen jäsennyksen selvittely Tehtäväkuvaus: Lähtökohdat: Ongelma:
Tutkimusongelma: tekstin morfologisen jäsennyksen selvittely Tehtäväkuvaus: halutaan selvittää erään tekstin morfologinen jäsennys tulevaa tutkimusta varten Lähtökohdat: Ongelma:
Tutkimusongelma: tekstin morfologisen jäsennyksen selvittely Tehtäväkuvaus: halutaan selvittää erään tekstin morfologinen jäsennys tulevaa tutkimusta varten Lähtökohdat: morfologinen analysaattori, joka osaa analysoida saneita yksi kerrallaan gutenbergistä napattu raakateksti, joka pitää analysoida Ongelma:
Tutkimusongelma: tekstin morfologisen jäsennyksen selvittely Tehtäväkuvaus: halutaan selvittää erään tekstin morfologinen jäsennys tulevaa tutkimusta varten Lähtökohdat: morfologinen analysaattori, joka osaa analysoida saneita yksi kerrallaan gutenbergistä napattu raakateksti, joka pitää analysoida Ongelma: miten jakaa teksti analysaattorin haluamiksi saneiksi (ns. tokenisointi-ongelma) miten tallentaa saneet sellaiseen muotoon, jota analysaattori ymmärtää
Asialista Käytännön asioita vielä Ongelman kuvaus Menetelmät ja aineistot Työkalut Viitteitä
Perinteisen tyhmän morfologisen analysaattorin rakenteesta syötteenä valmiita leksikaalisia yksikköjä tai tokeneja:
Perinteisen tyhmän morfologisen analysaattorin rakenteesta syötteenä valmiita leksikaalisia yksikköjä tai tokeneja: saneita välimerkkejä koodeja ym. ilmauksia idiomeja ym. moniosaisia yksiköitä
Perinteisen tyhmän morfologisen analysaattorin rakenteesta syötteenä valmiita leksikaalisia yksikköjä tai tokeneja: saneita välimerkkejä koodeja ym. ilmauksia idiomeja ym. moniosaisia yksiköitä syötteen pitää olla yksi em. yksikkö per rivi
Perinteisen tyhmän morfologisen analysaattorin rakenteesta syötteenä valmiita leksikaalisia yksikköjä tai tokeneja: saneita välimerkkejä koodeja ym. ilmauksia idiomeja ym. moniosaisia yksiköitä syötteen pitää olla yksi em. yksikkö per rivi moniselitteisistä saneista tulee monta tulkintaa
Esimerkki: omorfi-interactive.sh hipulla kirjaudu hippu.csc.fi
Esimerkki: omorfi-interactive.sh hipulla kirjaudu hippu.csc.fi käynnistä omorfi-interactive.sh jollei toimi: module load omorfi ja module load hfst/2.4.1
Esimerkki: omorfi-interactive.sh hipulla kirjaudu hippu.csc.fi käynnistä omorfi-interactive.sh jollei toimi: module load omorfi ja module load hfst/2.4.1 syötä suomenkielisiä sanoja (esimerkiksi): omorfi-interactive.sh kissa kissa kissansgnom koiralle koiralle koiransgall
Gutenberg-aineistot http://www.gutenberg.org/ tekstitiedostoja vanhoista, tekijänoikeudettomista kaunokirjallisuusteoksista
Gutenberg-aineistot http://www.gutenberg.org/ tekstitiedostoja vanhoista, tekijänoikeudettomista kaunokirjallisuusteoksista sisältävät mm. lisenssitekstejä, joista pitää päästä eroon ennen analysointia
Gutenberg-aineistot http://www.gutenberg.org/ tekstitiedostoja vanhoista, tekijänoikeudettomista kaunokirjallisuusteoksista sisältävät mm. lisenssitekstejä, joista pitää päästä eroon ennen analysointia... ja lisenssitekstit eivät ole vakiomuotoisia saati mittaisia
Gutenberg-aineistot http://www.gutenberg.org/ tekstitiedostoja vanhoista, tekijänoikeudettomista kaunokirjallisuusteoksista sisältävät mm. lisenssitekstejä, joista pitää päästä eroon ennen analysointia... ja lisenssitekstit eivät ole vakiomuotoisia saati mittaisia välimerkit saattavat olla poikkeuksellisiakin, esim. vanhan ortografian mukaisia (toki sisältökin usein)
Gutenberg-aineistot http://www.gutenberg.org/ tekstitiedostoja vanhoista, tekijänoikeudettomista kaunokirjallisuusteoksista sisältävät mm. lisenssitekstejä, joista pitää päästä eroon ennen analysointia... ja lisenssitekstit eivät ole vakiomuotoisia saati mittaisia välimerkit saattavat olla poikkeuksellisiakin, esim. vanhan ortografian mukaisia (toki sisältökin usein) merkistöt ja merkkaus pitää valita oikein (nykyään raakateksti ja UTF-8 Plain Text UTF-8 löytyvät suoraan sivustolta)
Gutenbergistä: Juhani Aho Rautatie Suora linkki: http://www.gutenberg.org/ebooks/10481
Asialista Käytännön asioita vielä Ongelman kuvaus Menetelmät ja aineistot Työkalut Viitteitä
Työsuunnitelma 1. haetaan kirja gutenbergistä hipulle ( wget)
Työsuunnitelma 1. haetaan kirja gutenbergistä hipulle ( wget) 2. jos gutenberg olisi vielä vanhan malliin koodattu, tässä muunettaisiin koodaus, nyt tarvitsee lähinnä korjata rivinvaihdot, jos sitäkään ( recode, dos2unix)
Työsuunnitelma 1. haetaan kirja gutenbergistä hipulle ( wget) 2. jos gutenberg olisi vielä vanhan malliin koodattu, tässä muunettaisiin koodaus, nyt tarvitsee lähinnä korjata rivinvaihdot, jos sitäkään ( recode, dos2unix) 3. hankiudutaan eroon englanninkielisistä osioista ( head-tail riittää aluksi)
Työsuunnitelma 1. haetaan kirja gutenbergistä hipulle ( wget) 2. jos gutenberg olisi vielä vanhan malliin koodattu, tässä muunettaisiin koodaus, nyt tarvitsee lähinnä korjata rivinvaihdot, jos sitäkään ( recode, dos2unix) 3. hankiudutaan eroon englanninkielisistä osioista ( head-tail riittää aluksi) 4. tehdään tekstistä saneita (ja välimerkkejä, ym. otuksia) ( tr)
Työsuunnitelma 1. haetaan kirja gutenbergistä hipulle ( wget) 2. jos gutenberg olisi vielä vanhan malliin koodattu, tässä muunettaisiin koodaus, nyt tarvitsee lähinnä korjata rivinvaihdot, jos sitäkään ( recode, dos2unix) 3. hankiudutaan eroon englanninkielisistä osioista ( head-tail riittää aluksi) 4. tehdään tekstistä saneita (ja välimerkkejä, ym. otuksia) ( tr) 5. analysoidaan lopputulos ( omorfi-interactive.sh)
Työsuunnitelma 1. haetaan kirja gutenbergistä hipulle ( wget) 2. jos gutenberg olisi vielä vanhan malliin koodattu, tässä muunettaisiin koodaus, nyt tarvitsee lähinnä korjata rivinvaihdot, jos sitäkään ( recode, dos2unix) 3. hankiudutaan eroon englanninkielisistä osioista ( head-tail riittää aluksi) 4. tehdään tekstistä saneita (ja välimerkkejä, ym. otuksia) ( tr) 5. analysoidaan lopputulos ( omorfi-interactive.sh) 6. käytetään analyysi hyödyksi ( fgrep)
Verkkosivun haku etäpäätteelle selaimella paikalliselle koneella haku ja siirto (scp:llä tms.) on aina mahdollista eri järjestelmien välillä siirtely voi kuitenkin aiheuttaa vaikeuksia
Verkkosivun haku etäpäätteelle selaimella paikalliselle koneella haku ja siirto (scp:llä tms.) on aina mahdollista eri järjestelmien välillä siirtely voi kuitenkin aiheuttaa vaikeuksia myös etäpäätteillä voi joskus käyttää (graafisiakin) selaimia (lynx, firefox) näiden automatisointi on kuitenkin hankalaa
Verkkosivun haku etäpäätteelle selaimella paikalliselle koneella haku ja siirto (scp:llä tms.) on aina mahdollista eri järjestelmien välillä siirtely voi kuitenkin aiheuttaa vaikeuksia myös etäpäätteillä voi joskus käyttää (graafisiakin) selaimia (lynx, firefox) näiden automatisointi on kuitenkin hankalaa wget on tehokkaimpia verkkohakimia unixeille: wget http://www.gutenberg.org/cache/epub/ 10481/pg10481.txt
Koodausasiat koodauksella tässä tarkoitetaan miten kirjaimet esitetään tietokoneen muistissa: eritoten ääkköset ym. ei alkuperäiseen US-ASCII-aakkostoon sisältyvät merkit, ja rivinvaihdot
Koodausasiat koodauksella tässä tarkoitetaan miten kirjaimet esitetään tietokoneen muistissa: eritoten ääkköset ym. ei alkuperäiseen US-ASCII-aakkostoon sisältyvät merkit, ja rivinvaihdot lähes kaikissa nykysovelluksissa merkistökoodaus on UTF-8, myös gutenbergissä
Koodausasiat koodauksella tässä tarkoitetaan miten kirjaimet esitetään tietokoneen muistissa: eritoten ääkköset ym. ei alkuperäiseen US-ASCII-aakkostoon sisältyvät merkit, ja rivinvaihdot lähes kaikissa nykysovelluksissa merkistökoodaus on UTF-8, myös gutenbergissä recode ja iconv muuntavat koodauksia (jos esim. vanhat gutenbergit ovat ns. latin1:tä): iconv -f latin1 -t utf8 < vanha > konvertoitu recode l1..u8 vanha
Koodausasiat koodauksella tässä tarkoitetaan miten kirjaimet esitetään tietokoneen muistissa: eritoten ääkköset ym. ei alkuperäiseen US-ASCII-aakkostoon sisältyvät merkit, ja rivinvaihdot lähes kaikissa nykysovelluksissa merkistökoodaus on UTF-8, myös gutenbergissä recode ja iconv muuntavat koodauksia (jos esim. vanhat gutenbergit ovat ns. latin1:tä): iconv -f latin1 -t utf8 < vanha > konvertoitu recode l1..u8 vanha gutenbergissä on vielä joitain enimmäkseen harmittomia rivinvaihtoja (jotka näkyvät vimissä ikävästiˆm:inä)
Koodausasiat koodauksella tässä tarkoitetaan miten kirjaimet esitetään tietokoneen muistissa: eritoten ääkköset ym. ei alkuperäiseen US-ASCII-aakkostoon sisältyvät merkit, ja rivinvaihdot lähes kaikissa nykysovelluksissa merkistökoodaus on UTF-8, myös gutenbergissä recode ja iconv muuntavat koodauksia (jos esim. vanhat gutenbergit ovat ns. latin1:tä): iconv -f latin1 -t utf8 < vanha > konvertoitu recode l1..u8 vanha gutenbergissä on vielä joitain enimmäkseen harmittomia rivinvaihtoja (jotka näkyvät vimissä ikävästiˆm:inä) fromdos tai dos2unix muuntavat rivinvaihdot: dos2unix rautatie.txt fromdos rautatie.txt
Vakiomuotoisten tekstiosioiden poisto Lisenssiä Ahon Rautatiessä ovat ensimmäiset 27 ja viimeiset 396 riviä head näyttää ensimmäiset n riviä ja tail viimeiset m riviä tiedostosta
Vakiomuotoisten tekstiosioiden poisto Lisenssiä Ahon Rautatiessä ovat ensimmäiset 27 ja viimeiset 396 riviä head näyttää ensimmäiset n riviä ja tail viimeiset m riviä tiedostosta haluamme tiedoston keskeltä osan joka sisältää viimeiset tiedoston koko x miinus 27 riviä ja tästä ensimmäiset jäljellejäävistä paitsi 396 riviä: tail -n +28 rautatie.txt head -n 4314
Vakiomuotoisten tekstiosioiden poisto Lisenssiä Ahon Rautatiessä ovat ensimmäiset 27 ja viimeiset 396 riviä head näyttää ensimmäiset n riviä ja tail viimeiset m riviä tiedostosta haluamme tiedoston keskeltä osan joka sisältää viimeiset tiedoston koko x miinus 27 riviä ja tästä ensimmäiset jäljellejäävistä paitsi 396 riviä: tail -n +28 rautatie.txt head -n 4314...mutta 4314 on tässä laskettu käsin
Tekstin saneistus ks. myös tämän vuoden CLT130 johdatus atk-järjestelmiin haluttiin jokainen sane omalle rivilleen ja välimerkit omilleen, tai pois
Tekstin saneistus ks. myös tämän vuoden CLT130 johdatus atk-järjestelmiin haluttiin jokainen sane omalle rivilleen ja välimerkit omilleen, tai pois tr on yleistyökalu yksinkertaisiin merkkimuunnoksiin:
Tekstin saneistus ks. myös tämän vuoden CLT130 johdatus atk-järjestelmiin haluttiin jokainen sane omalle rivilleen ja välimerkit omilleen, tai pois tr on yleistyökalu yksinkertaisiin merkkimuunnoksiin: tr -s \n muuntaa välilyönnit rivivaihdoiksi (ts. sijoittaa välilyöntien erottamat saneet omille riveilleen) tr -d.,?!:;- poistaa välimerkit
Lopulta: analysointi saneiden analysointiinhan käytettiin omorfi-interactive.sh:ta
Lopulta: analysointi saneiden analysointiinhan käytettiin omorfi-interactive.sh:ta putkituksen avulla voimme koostaa kaikesta tästäkin vain yhden toiminnon (seuraava kohta on yksi komento ilman rivinvaihtoja): tail -n +28 rautatie.txt head -n 4314 tr -s \n tr -d.,;!?- omorfi-interactive.sh
Lopulta: analysointi saneiden analysointiinhan käytettiin omorfi-interactive.sh:ta putkituksen avulla voimme koostaa kaikesta tästäkin vain yhden toiminnon (seuraava kohta on yksi komento ilman rivinvaihtoja): tail -n +28 rautatie.txt head -n 4314 tr -s \n tr -d.,;!?- omorfi-interactive.sh tiedämme jo, miten haetaan tarkkoja merkkijonoja fgrepillä, katsotaan siis esimerkiksi tekstin mahdollisia abessiiveja lisäämällä vielä yksi putki:... fgrep Abe
Asialista Käytännön asioita vielä Ongelman kuvaus Menetelmät ja aineistot Työkalut Viitteitä
Linkit omorfista lisää ks. http://home.gna.org/omorfi/ tai suomeksi vanhahko graduni http://www.helsinki.fi/%7etapirine/gradu/ http://nlp.stanford.edu/ir-book/html/ htmledition/tokenization-1.html merkistöasioista http://www.unicode.org sisältää mm. Unicode-kirjan verkkoversion suomen kieliopista mm. http://kaino.kotus.fi/visk Ison suomen kieliopin verkkoversio morfologinen analyysi käydään tarkemmin kurssilla clt260