[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