[voikko-devel] Ehdotus: lisäys libvoikkoon

Hannu Väisänen hvaisane at joyx.joensuu.fi
Thu Jan 11 07:53:40 EET 2007


On Wed, Jan 10, 2007 at 07:31:05PM +0200, Harri Pitkänen wrote:
> Hmm. Mahtaakohan tuollainen toimia kunnolla todellisissa sovelluksissa? 
> Tämähän tarkoittaisi sitä, että kutsuva sovellus itse käyttää suoraan 
> Suomi-malagan Voikko-versiota, enkä heti kyllä keksi mikä muu kuin libvoikko 
> voisi järkevästi niin tehdä. Sukija ei ainakaan niin tietääkseni tee :)

Tarkoitus onkin käyttää Suomi-malagan Sukija-versiota (-:
ja funktiota voikko_suggest_ucs4. Jotenkin näin:

iterator first (worddb->get_word_db(), DB_NEXT);
iterator last;

for ( ; first != last; ++first) {
  if (malaga ei tunnista sanaa *first) {
    wchar_t **w = voikko_suggest_ucs4 (handle, first->c_str());
    if (w) {
      for (wchar_t **i = w; *i; ++i) {
        if (malaga tunnistaa sanan *i) {
          tallenna sanan *i perusmuoto perusmuototietokantaan
        }
      }
    }
  }
}

Äääh!!! Voiko tuo ylipäänsä toimia, sillä voikko_suggest_ucs4 näköjään
käyttää Suomi-malagan Voikko-versiota, ja Sukija tarvitsee tietenkin
Sukija-version. Minulla kun oli sellainen mielikuva, että
suggest-funktiot eivät käytä malagaa ollenkaan.


> Jos sovelluksen on käytettävä sekä malagaa että libvoikkoa suoraan, parempi 
> olisi toimia jotenkin seuraavasti:
> 
> terminate_libmalaga();
> const char * voikko_error = voikko_init(&handle, "fi_FI", 0);
> [ käytetään Voikkoa mihin käytetään ]
> voikko_terminate(handle);
> init_libmalaga(sovelluksen_oma_malaga_projekti);

Siis näin...

iterator first (worddb->get_word_db(), DB_NEXT);
iterator last;
for ( ; first != last; ++first) {
  if (malaga ei tunnista sanaa *first) {
x    terminate_libmalaga();
x    const char * voikko_error = voikko_init(&handle, "fi_FI", 0);
x    wchar_t **w = voikko_suggest_ucs4 (handle, first->c_str());
x    voikko_terminate(handle);
x    init_libmalaga(sovelluksen_oma_malaga_projekti)
    if (w) {
      for (wchar_t **i = w; *i; ++i) {
        if (malaga tunnistaa sanan *i) {
          tallenna sanan *i perusmuoto perusmuototietokantaan
        }
      }
    }
  }
}

x:llä merkityt rivit voi paketoida funktion tai luokan sisälle.

Suoritusajan kannalta on tietysti parempi, että tunnistamattomat sanat
tallennetaan väliaikaisesti johonkin ja yritetään tunnistaa
voikko_suggest_ucs4:n avulla kaikki yhdellä kertaa.



> Jos olet ihan varma, että tarvitset tällaisen ominaisuuden libvoikkoon, niin 
> kaipa sen voi lisätä.

Unohdetaan koko asia.



More information about the devel mailing list