Gorazd Generator

Aplikace byla vytvořena v rámci projektu GORAZD: Digitální portál staroslověnštiny (projekt je realizován v rámci programu NAKI II Ministerstva kultury ČR, DG16P02H024, 2016-2020). Aplikace automaticky rozpozná strukturu hesel na stránce, respektive obrázku, a výslednou strukturu uloží ve formátu Gorazd XML, který byl v rámci projektu vyvinut (XSD schema formátu Gorazd XML).

Vstupem pro Gorazd Generator mohou být mohou být soubory formátu ALTO XML (https://www.loc.gov/standards/alto) jako výstup optického rozpoznání tištěného slovníku v programu ABBYY Recognition Servere (https://www.abbyy.com/cs-cz/recognition-server) nebo v podobě běžného HTML formátu.

Vlastní rozpoznání struktury hesel je originální inovací v rámci softwarové části projektu. Struktura hesel je zachycena formální gramatikou zapsanou v jazyce knihovny ANTLR, která je využita pro generování parseru této formální gramatiky. Popsání struktury hesel je tedy prováděno v jazyce, jehož pojmový aparát je blízký jak programátorům tak jazykovědcům.

Výstupem této aplikace je vygenerování specifického XML souboru pro každé rozpoznané heslo. Tento soubor je určen k dalšímu zpracování v Gorazd Editoru a zobrazení či předtiskovou přípravu pomocí Gorazd Exportu. Kromě rozpoznaných hesel je výstupem též soubor ve formátu MARC XML, kterým se tato hesla importují do systému Invenio (https://invenio-software.org), což je systém pro správu dat, ve kterém jsou slovníková hesla spravována a upravována.

Instalace

Aplikace Gorazd Generator je distribuována ve formě Pythonového balíčku/modulu a lze ji instalovat standardním způsobem pomocí utility pip. Aplikace Gorazd Generator potřebuje ke svému běhu několik knihoven, které se automaticky nainstalují pokud už nejsou v systému přítomny. Z toho důvodu může být nutné instalovat aplikaci Gorazd Generator s právy roota případně do Pythonovského virtuálního prostředí virtualenv.

    $ pip install [-t cilovy_adresar] gorazd_generator-1.zip

Spuštění

Aplikace je spouštěna z příkazové řádky přímo na serveru, na kterém systém Invenio běží.

    $ python generator.py

    usage: generator.py [-h] [-g GENERATOR] [-p] [-l LOG_DIR] [-r]
    input_dir output_dir
    generator.py: error: too few arguments

Aplikaci se předávají parametry na příkazové řádce standardním způsobem a nápovědu lze získat parametrem -h

    $ python generator.py –h

    usage: generator.py [-h] [-g GENERATOR] [-p] [-l LOG_DIR] [-r]
    input_dir output_dir

    SJSGenerator of vocabulary records from plain text / ALTO XML.

    positional arguments:
    input_dir Directory containing ALTO XML files for input.
    output_dir Directory containing generated files.

    optional arguments:
    -h, --help show this help message and exit
    -g GENERATOR, --generator GENERATOR
    Type of generator: SJS, RSI, SNSP
    -p, --preprocess If preprocessing is turned on we fix slavonic and greek characters and join words that were split at line breaks.
    -l LOG_DIR, --log_dir LOG_DIR
    Directory for log files. Default is the current working directory.
    -r, --run_bibupload Run bibupload.

Parametry input_dir a output_dir jsou povinné. Jako input_dir se typicky používají podadresáře v adresáři gorazd-generator/in, pro output_dir doporučujeme vytvořit vždy nový podadresář v gorazd-generator/out/ Pokud zadaný podadresář v adresáři out není nalezen, aplikace si ho vytvoří, pokud nalezen je, data v něm budou přepsána.

Parametrem -g se vybírá typ zpracovaných dat. Defaultně je nastaven na SJS.

V adresáři input_dir očekává ALTO XML soubory, které jsou výstupem z ABBYY Recognition Serveru, nebo html soubory. Názvy těchto souborů budou tvořit první část PAGE ID hesel. To jest, je potřeba dodržovat správný formát názvů.

Pokud se v adresáři input_dir budou nacházet i textové soubory se stejným názvem jako ALTO XML soubory (tedy lišit se budou pouze příponou txt), pak je generátor použije jako zdroj pro opravu starořecké diakritiky. Tyto soubory lze získat z aplikace ABBYY FineReader.

Výskyt jakýchkoliv jiných souborů povede k chybám, které budou zalogovány do logovacích souborů a běh programu pravděpodobně skončí předčasně s neodchycenou chybou. Jakékoliv chyby se zapíší do adresáře log (i když není součástí příkazu pro spuštění).

Při běhu programu se na obrazovku vypisují informace o průběhu a zároveň se tyto informace ukládají do logovacího souboru. (Jeho konfigurace viz níže.) Po dokončení běhu aplikace vypíše jednoduchou statistiku výsledků (počet hesel, počet nalezených překladů a podobně).

    2016-12-01 21:57:09,146 - INFO - -------------- STATISTIKY --------------
    2016-12-01 21:57:09,536 - INFO - Pocet hesel: 932
    2016-12-01 21:57:09,740 - INFO - Pocet nerozpoznanych zahlavi: 1 + 131
    2016-12-01 21:57:09,775 - INFO - Pocet elementu vyskyt: 765
    2016-12-01 21:57:09,807 - INFO - Pocet prekladu do modernich jazyku: 561
    2016-12-01 21:57:09,838 - INFO - Pocet prekladu do starych jazyku: 548

Do adresáře output_dir generátor uloží svůj výstup. Nejdůležitější je soubor final-marc.xml, který vznikne jen při úspěšně dokončeném běhu aplikace a do Invenia se nahrává spuštěním

    $ sudo -u www-data /opt/invenio/bin/bibupload -i output_dir/final-marc.xml

Vygenerovaná hesla si lze všechna prohlédnout v souboru result-parsed-postprocessed.xml. Soubory obsahující v názvu „marc“ jsou metadata nagenerovaná z těchto hesel pro Invenio.

Dalším zajímavým souborem je errors.xml, do kterého jsou zkopírovaná hesla u nichž generátor nerozpoznal správně strukturu.

Tato hesla jsou součástí final-marc.xml a lze je tedy nahrát do Invenia. Soubor errors.xml slouží pouze ke kontrole gramatiky.

Pro případ archivace tedy doporučujeme uchovávat soubory final-marc.xml, errors.xml a result-parsed-postprocessed.xml

Parametr -p slouží pro přeskočení preprocesové fáze, ve které se nahrazují znaky a opravuje se starořečtina. Je to pouze z důvodu urychlení testovacích běhů během ladění gramatiky a tedy v rámci běžného provozu nemá význam.

Parametr -l LOG_DIR určuje adresář, do kterého se ukládají logovací záznamy o průběhu generování. Defaultně je nastaven na „log“.

Parametr -r slouží k automatickému spuštění uploadu do Invenia po nagenerování všech hesel.

Příklad spuštění:

    $ python generator.py –g SJS in/sjs_ii_1-200 out/sjs_ii_1-200 -l log/sjs_ii

    $ python generator.py in/3strany out/ -l log/ -g SJS

Licence

Aplikace je distribuovaná na základě otevřené licence GNU GPL v3. Úpravou zdrojového kódu lze aplikaci použít pro generování hesel jiných slovníků. Autoři této aplikace vám budou vděčni, když nás budete o využití zdrojového kódu této aplikace nebo jeho částí v jiných projektech informovat na e-mailové adrese gorazd@slu.cas.cz.

Instalační balíček:

Gorazd Generator 1.0

Na vzniku aplikace se podíleli:

• Mgr. Vít Tuček, Ph.D. (programátor)
• Mgr. Olga Čiperová (analytik vývoje)
• Bc. Martin Majer (manažer vývoje)
• PhDr. Štefan Pilát, Ph.D. (odborný konzultant vývoje)

© 2018, Slovanský ústav AV ČR, v. v. i.