ajkamajka

Doposud jsem se snažil udržovat oba analyzátory, ale nastal čas ajku opustit.

majka je v /nlp/projekty/ajka/bin/majka, 32 bitová verze je .../majka32, majka pro apollo .../majka64-apollo.

Použití je zatím zcela triviální:

/nlp/projekty/ajka/bin/majka -h
-f soubor  data [default: /nlp/projekty/ajka/lib/majka.w-lt]
-p         tisknout i zadane slovo
-h         help

echo test | /nlp/projekty/ajka/bin/majka
test:k1gInSc1
test:k1gInSc4
test:k1gMnSc1
testa:k1gFnPc2
Defaultní soubor dělá analýzu slovní tvar → lemma:značka, kdy ve značce jsou i všechny značky z poznámek (hM atp.).

/nlp/projekty/ajka/lib/majka.l-wt je soubor, který k lemmatu dogeneruje všechny slovní tvary se značkami, /nlp/projekty/ajka/lib/majka.lt-w je soubor, který pro lemma a značku vygeneruje slovní tvary.

Jiný formát výstupu či jiné typy analýz na požádání. :-) (Nechci kopírovat ajku, aniž bych věděl, že to někdo skutečně používá atp.)

Zdrojáky a C/C++ interface

Zdrojový kód je v /nlp/projekty/ajka/devel/majka. Příkladem použití je zdroják binárky majky, což je majka_bin.cc. V obecnosti to bude nějaké
#include "majka.h"

automat majka(data);
if (majka) exit(0);
char * vysledky = new char[majka.maxvelikost()];
      
majka.najdi(word, vysledky);
for (vysledek = vysledky, i = 0; i < majka.vysledku; i++, vysledek += strlen(vysledek) + 1) {
  if (tisk) cout << word << ":";
  cout << vysledek << '\n';
  }

Perlový interface

perl -I/nlp/projekty/ajka/lib -MMajka -Mv5.10 -e '
        my $m = Majka->new; map say, @{$m->find("test")}'
test:k1gInSc1
test:k1gInSc4
test:k1gMnSc1
testa:k1gFnPc2
případně
#!/usr/bin/perl -w

use strict;
use lib '/nlp/projekty/ajka/lib/';
use Majka;

my $m = Majka->new("/nlp/projekty/ajka/lib/majka.w-lt");

print map "$_\n", @{$m->find("test")};
Více viz (konec) /nlp/projekty/ajka/lib/Majka.pm

Python interface, ...

?

Srovnání analyzátorů

Velikost kódu bez komentářů:
  • ajka: cca 9030 řádků a 225 kB
  • majka: cca 770 řádků a 24 kB
  • majka bez il2 ↔ utf-8: cca 630 řádků a 18 kB

    majka je >7 x rychlejší (v DP byla >6 x, ale ještě hodlám zkusit pár dalších věcí)

    Chyby a rozdíly ajka vs. majka

    Chyby ajky

    Dále zmíněné chyby ajky už nehodlám opravovat, bylo by to příliš „drahé“. Majka by se v těchto situacích měla chovat správně, pokud ne, zmiňuju.

    Chyby majky

    Rozdíly ajky a majky


    Kontakt: smerk @ mail.muni.cz