OMorFi: Omorfin käyttö ja ylläpito csc.fi-koneilla

This page describes compiling and using of omorfi transducers and software on csc.fi shells. The rest of the text is in Finnish language, as I assume most of the users of csc.fi shell accounts are Finnish?

Omorfin käyttö

Omorfi saattaa olla asennettuna hakemistoon /c/appl/ling/koskkenni/omorfi, ja sitä voi käyttää README:ssä (eli myös KitWiki-sivulla OMorFiSFSTVersion) kuvatulla tavalla. Esim:

[tpirinen@corpus3 ~]$ fst-mor /c/appl/ling/koskenni/omorfi/omorfi.sfsta

[tpirinen@corpus3 ~]$ fst-infl2 /c/appl/ling/koskenni/omorfi/omorfi.sfstc saneistettu_teksti

Tämän testauksessa vastaan tulleita virheitä tai muita ongelmia on syytä kirjata ylös sivulle OmorfiBugs tai ilmoittaa paketin ajantasaiselle ylläpitäjälle (vissiinkin TommiPirinen, mutta saattaa olla joku muukin)

Asennus Corpuksella CVS:stä

Tässä kohdittainen esimerkki miten corpus-koneella voi asentaa Kotus-sanalistan ja omorfin mielivaltaiseen hakemistoon, käytin esimerkissä kotihakemistoa. Asentaessani minulla oli jo Saxon8.4b asennettuna niin, että hakemistossa ${HOME}/bin/ oli saxon8 (yksinkertainen skripti, joka kutsuu javoitse net.sf.saxon.Transform-luokkaa). Tämä asennus tehdään tyhjästä, niin ettei cvs-hakemistoa ole vielä checkoutattu:

[tpirinen@corpus3 ~]$ cvs -d /c/appl/ling/koskenni/cvsrepo co kotus
[tpirinen@corpus3 ~]$ cvs -d /c/appl/ling/koskenni/cvsrepo co omorfi
[tpirinen@corpus3 ~]$ cd kotus/
[tpirinen@corpus3 kotus]$ cd kotus-sanalista
[tpirinen@corpus3 kotus-sanalista]$ autoreconf -i
[tpirinen@corpus3 kotus-sanalista]$ ./configure --prefix=$HOME 
[tpirinen@corpus3 kotus-sanalista]$ make 
[tpirinen@corpus3 kotus-sanalista]$ make install
[tpirinen@corpus3 kotus-sanalista]$ cd ..
[tpirinen@corpus3 kotus]$ cd ..
[tpirinen@corpus3 ~]$ cd omorfi/
[tpirinen@corpus3 omorfi]$ autoreconf -i
[tpirinen@corpus3 omorfi]$ ./configure --prefix=$HOME (--with-kotus-sanalista=$HOME/share/kotus-sanalista/kotus-sanalista_v1-r1.xml)
[tpirinen@corpus3 omorfi]$ make
[tpirinen@corpus3 omorfi]$ make test
[tpirinen@corpus3 omorfi]$ make install

Myöhemmin vastaavasti samasta ympäristöstä riittää vain:

[tpirinen@corpus3 ~]$ cd kotus-sanalista
[tpirinen@corpus3 kotus-sanalista]$ cvs up
[tpirinen@corpus3 kotus-sanalista]$ make
[tpirinen@corpus3 kotus-sanalista]$ make install
[tpirinen@corpus3 kotus-sanalista]$ cd ../omorfi
[tpirinen@corpus3 omorfi]$ cvs up
[tpirinen@corpus3 omorfi]$ make
[tpirinen@corpus3 omorfi]$ make test
[tpirinen@corpus3 omorfi]$ make install

Omorfi coronalla

Corona.csc.fi on csc:n hajautettu monisuoritinympäristö johon joillakuilla saattaa olla käyttöoikeus. Ympäristö ei ole intel x86-suoritin -linux vaan solaris, joten samat binäärit eivät toimi vaan pitää olla käytössä solarikselle käännetty fst-compiler, java taas on alustariippumaton joten saxon toimii. Koska prosessoreja ja resursseja on riittävästi, maken sijaan kannattaa ajaa qmake -- -j, joka siis on make-wrapperi resurssijonoa varten ja -j sanoo että rinnakkaistetaan niin paljon kuin pystytään (-j on maken optio, ei qmaken, mutta sitä ei kannata käyttää jollei varmasti ole enempää suorittimia kuin prosesseja tulee olemaan).

FSM, openfst ja testailut coronalla

FSM:stä saa solarisversion hakemalla. OpenFST:n kääntämiseen pitää käyttää GNU gcc:tä: /v/solaris9/gnu/gcc/latest/bin/.

SFST-transduktoreista saa FSM- ja openfst-versiot putkittamalla fst-print | fstcompile tai fst-print | fsmcompile. Tämän jälkeen niitä voi ja pitää optimoida esim fstarcsortilla. Sitten kellotukset voi tehdä qsh-skripteillä, jotka on tyyppiä:

#!/bin/sh
#$ -S /usr/bin/bash
#$ -N example
#$ -o $HOME/fsm-omorfi-pipe-times.txt
#$ -j y
#$ -m beas
#$ -M example@example.com
#$ -cwd
#$ -l h_rt=48:00:00
#$ -l h_vmem=8000M
#$ -V
echo kotus-sanalista
time fsmcompose kotus-sanalista.fsm plurale-tantum.fsm |\
                fsmrmepsilon - | fsmdeterminize -  |\
        fsmcompose - avvk.fsm |\
                fsmrmepsilon - | fsmdeterminize -  |\
        fsmcompose - avvp.fsm |\
                fsmrmepsilon - | fsmdeterminize -  |\
...

Jne., jossa fsmcompose tai fstcompose vastaa ||:aa SFST:ssä ja niin poispäin. Ja rivi fsmrmepsilon | fstdeterminize yrittää simuloida mitä SFST tekee transduktoreille automaattisesti. Skripti toimii vain jos envissä on tarvittavat jutut.


-- TommiPirinen - 09 Jan 2008
Topic attachments
I Attachment Action Size Date Who Comment
Unknown file formatEXT saxon8 manage 0.3 K 2007-11-25 - 15:25 UnknownUser Saxon8-skriptin esimerkki
Topic revision: r9 - 2009-12-11 - TommiPirinen
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2018 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback