[hunspell-fi-devel] Sukija ja suomi-malaga versio 0.5 UTF-8
Harri Pitkänen
hatapitk at cc.jyu.fi
Thu Apr 27 10:43:24 EEST 2006
On Wednesday 26 April 2006 23:42, Reijo Tomperi wrote:
> Harri Pitkänen wrote:
> >Jos näin tosiaan on, voisi olla hyödyllisempää toteuttaa
> >jonkinlainen C-tyylinen esikääntäjä, jonka läpi Malaga-kieliset
> > lähdekoodit ajettaisiin ennen malmake-komennon suorittamista.
> >
> >
> >Eli voisin jotain tällaista toteuttaa, mikäli siinä ei ole mitään
> >periaatteellisia ongelmia jotka tekisivät hommasta täysin hyödyttömän.
>
> Vähentäisikö tuo sääntöjen (rule) määrää ja siten execute_rule()
> funktion kutsujen määrää? Jos näin on, niin uskoisin että sillä saadaan
> jonkinverran nopeutta kyllä. Testisanalla tosiaan kutsuja oli noin 300,
> eli tuplasti nopeampi versio vaatisi 150 säännön karsimista. Joku 10
> säännön karsiminen tuskin aiheuttaa mitään näkyviä muutoksia.
Nyt aletaan olla jäljillä, koska sääntöjen ja execute_rule() -kutsujen välillä
on käytännössä yksi yhteen vastaavuus. Tässä optimoinnissa kannattaa tosiaan
keskittyä Suomi-Malagaan. Onneksi malagassa on oma debuggeri, joka auttaa
asiassa todella paljon. Annanpa esimerkin:
Aluksi lisäsin tiedostoon rules.c riville 258
printf("execute_rule() called\n");
ja käänsin malagan uudelleen. Sitten tein seuraavaa:
$ ./malaga /usr/local/voikkodict/suomi.pro
This is malaga, version 7.3.
Copyright (C) 1995 Bjoern Beutel.
This program is part of Malaga, a system for Natural Language Analysis.
You can distribute it under the terms of the GNU General Public License.
malaga> ma-debug kissa
execute_rule() called
At "suomi.mor", line 144, rule "nimisana".
State: 0, surf: "", link: "k".
debug> step
execute_rule() called
At "suomi.mor", line 208, rule "laatusana".
State: 0, surf: "", link: "k".
debug> step
execute_rule() called
At "suomi.mor", line 241, rule "asemosana".
State: 0, surf: "", link: "k".
debug> step
execute_rule() called
At "suomi.mor", line 252, rule "apusana".
State: 0, surf: "", link: "k".
debug> step
At "suomi.mor", line 257.
debug> step
At "suomi.mor", line 259.
debug> step
execute_rule() called
At "suomi.mor", line 123, rule "etuliite".
State: 0, surf: "", link: "k".
debug> step
execute_rule() called
At "suomi.mor", line 336, rule "teonsana".
State: 0, surf: "", link: "k".
debug> step
execute_rule() called
At "suomi.mor", line 454, rule "kieltosana".
State: 0, surf: "", link: "k".
debug>
Toisin sanoen malagan debuggerissa voi kulkea tuota säännöstöä läpi, ja se
vielä ystävällisesti kertoo lähdekooditiedoston nimen ja rivin missä
milloinkin ollaan menossa. Näiden tietojen perusteella luulisi pystyvän
tekemään aika paljon, jos vain ensin oppii hahmottamaan Hannun tekemän
säännöstön rakennetta. Täytyykin tutkailla asiaa.
Harri
More information about the devel
mailing list