[voikko] Common Lisp ja libvoikko
Teemu Likonen
tlikonen at iki.fi
Thu Jul 7 12:49:32 EEST 2011
Harri Pitkänen kirjoitti 4.7.2011 klo 16.01:
> Jos haluat, voisit laittaa tuon koodin mukaan libvoikkoon, - -
Laitoin koodin cl-hakemistoon. Koodi on tarkoitus ladata ASDF:n avulla
tai mieluummin vielä korkeamman tasoisella apuohjelmalla, Quicklispillä
<http://www.quicklisp.org/>, joka hakee automaattisesti kaikki
tarvittavat kirjastot netistä. Quicklispin asentamisen jälkeen (ks.
edellä mainittu nettisivu) Voikko-kirjastoa voi kokeilla vaikka näin:
$ export CL_SOURCE_REGISTRY="$HOME/voikko/libvoikko/cl/:"
$ sbcl --noinform # Käynnistetään SBCL-niminen CL-toteutus.
* (ql:quickload "voikko")
[Kirjastoja ladataan netistä (tai omalta levyltä) ja käännetään.]
* (voikko:version)
"3.3"
Tässä vaiheessa funktioiden dokumentit puuttuvat kokonaan. Lisäilen
niitä pikku hiljaa. Nämä toiminnot ovat nyt valmiina:
VOIKKO> (with-instance (i)
(print (spell i "kissa"))
(print (suggest i "kisssa"))
(set-option i :no-ugly-hyphenation nil) ; ja kaikki muutkin optiot
(print (multiple-value-list (hyphenate i "yliopisto")))
(set-option i :no-ugly-hyphenation t)
(print (multiple-value-list (hyphenate i "yliopisto")))
(print (analyze i "nykyisyys"))
(version))
"kissa"
("kissa" "kissaa" "kisassa" "kisussa")
(("y" "li" "o" "pis" "to") " - -- - ")
(("yli" "opis" "to") " - - ")
((("CLASS" . "nimisana") ("NUMBER" . "singular") ("SIJAMUOTO" . "nimento")
("STRUCTURE" . "=pppp=ppppp"))
(("CLASS" . "nimisana") ("NUMBER" . "singular") ("SIJAMUOTO" . "nimento")
("STRUCTURE" . "=ppppppppp")))
=> "3.3"
Voikko-istunnon voi käynnistää ja lopettaa INIT- ja
TERMINATE-funktioillakin. WITH-INSTANCE-makro tekee ne vain
automaattisesti. Lisäksi tein funktion SPLIT-WORD, jolla voi jakaa sanan
tavurajan kohdalta kahteen osaan, jos sanan pituus ylittää tietyn
merkkimäärän. Seuraavan esimerkkisanan kohdalla tietenkin tarvittaisiin
asetusta "no ugly hyphenation".
VOIKKO> (with-instance (i)
(loop with sana = "yliopisto"
for l from 0 upto (length sana)
do (format t "~2D ~S~%" l (split-word i l sana))))
0 ("" . "yliopisto")
1 ("y" . "liopisto")
2 ("y" . "liopisto")
3 ("yli" . "opisto")
4 ("ylio" . "pisto")
5 ("ylio" . "pisto")
6 ("ylio" . "pisto")
7 ("yliopis" . "to")
8 ("yliopis" . "to")
9 ("yliopisto" . "")
=> NIL
More information about the voikko
mailing list