Wiki spuštěna 24. 7. 2025

Ruční anotace korpusů

Návod jak připravit data pro anotátory a potom jimi označkovaná data dále zpracovat.

Příprava dat

Data musí být v csts. Máme-li vertikálu, použijeme program vert_csts.pl. Konvence pro pojmenovávání adresářů je:

  • vert-import — původní data
  • csts-import — původní data převedená do csts připravená k importu do programu
  • csts-export — anotovaná data
  • vert-export — anotovaná data převedená do vertikály

Chceme-li využít na každý soubor dva anotátory, budeme potřebovat více adresářů:

  • csts-merge-import — slitá data od dvou anotátorů připravená k importu do programu
  • csts-merge-export — anotovaná slitá data
  • vert-merge-export — anotovaná slitá data převedená do vertikály

Převod z vertikály do csts provedeme klasickým příkazem

make-corp.sh -s vert-import -t csts-import -v -p45

Převod z csts zpět do vertikály provádíme příkazem csts_vert_annot.pl.

Import dat

  • Data pro každého anotátora označíme příponou -JP, kde J je první písmeno jména a P je první písmeno příjmení.
  • Přihlásíme se na jakobsona a provedeme import:
    cd .../csts-import
    for ff in *-JP; do echo $ff; /usr/local/annotate/bin/csts-import-utkl.pl $ff; done

    Pokud provádíme import opakovaně, použijeme přepínač --force:

    for ff in *-JP; do echo $ff; /usr/local/annotate/bin/csts-import-utkl.pl --force $ff; done
  • Do souboru /usr/local/annotate/users přidáme uživatele. Login bude utkl-JP. Struktura souboru users je
    utkl-JP heslo file1 file2 file3 ...

    Všechny soubory musí být na jednom řádku. Hotové soubory můžeme zakomentovat znakem #.

Export dat

Starší metoda

  • Předem si vytvoříme adresář csts-export
  • Přihlásíme se na jakobsona a provedeme export:
    cd .../csts-import
    for ff in *-JP; do echo $ff; /usr/local/annotate/bin/csts-export.pl --verbose $ff > /dev/null; done

    Vypisují se nám názvy souborů a chyby při převodu – chybějící anotace. Záznam chyb posíláme anotátorovi, dokud vše nedoplní. Když vše projde bez chyb, uložíme hotové soubory do csts-export:

    for ff in *-JP; do echo $ff; /usr/local/annotate/bin/csts-export.pl --verbose $ff > ../csts-export/$ff; done

Novější metoda

Tato metoda kontroluje, jestli anotátor na soubor vůbec sáhl. Taky vytváří potřebné adresáře a zpracované soubory přsouvá do adresáře $path-import-done

  • Přihlásíme se na jakobsona.
  • Přesuneme se do adresáře csts-import nebo merge-import
  • Soubory zkontrolujeme příkazem
    check-annot.sh <maska>

    Pokud něco chybí, napíšeme anotátorovi, ať to opraví.

  • Soubory exportujeme teprve po provedení všech oprav! Uděláme to příkazem
    export-annot.sh <maska>

Sloučení dat od dvou anotátorů

  • Vytvoříme adresář merge-import
  • Na jakobsonovi se přesuneme do adresáře csts-export a provedeme tuto akci:
    paste <file1> <file2> | perl -pe 's/"utkl-.."/"utkl"/g' | merge-csts | remove-MM.pl > ../merge-import/<file3>

    anebo spustíme tento skript:

    merge-anot.sh
    #!/bin/bash
     
    print_help() {
        echo "Merge two annotations and prepare data for final annotation"
        echo "Usage: $(basename "$0") [ -f from_dir ] [ -t to_dir ]"
        echo "       $(basename "$0") -h"
        echo "Defaults: from_dir - current dir"
        echo "          to_dir - ../merge-import (must exist)"
        echo "from_dir files: *-??"
        echo "to_dir files: *-??-??"
        exit 1
    }
     
    fdir="."
    tdir="../merge-import"
     
    while getopts f:ht: FLAG; do
        case $FLAG in
    	f) fdir=$OPTARG ;;
    	h) print_help ;;
    	t) tdir=$OPTARG ;;
            *) echo "Unknown option \"$1\""; print_help ;;
        esac
    done
     
    ff=''
    aa=''
    cd $fdir
    for gg in *-??; do
        bb=${gg%-??}
        if [ "x$aa" = "x$bb" ]; then
    	if [ ! -f $tdir/$ff${gg: -3} ]; then
    	    echo "$ff${gg: -3}"
    	    paste $ff $gg | perl -pe 's/"utkl-.."/"utkl"/g' \
    		| merge-csts | remove-MM.pl > $tdir/$ff${gg: -3}
    	fi
        fi
        aa=$bb
        ff=$gg
    done
  • Slité a znovuanotované soubory exportujeme stejně jako původní soubory a nakonec je převedeme do formátu vert tímto příkazem:
    cd .../merge-export
    mkdir -p ../vert-merge
    for ff in *; do echo $ff; convert-annotation-to-vert.pl < $ff > ../vert-merge/$ff; done

    anebo, je-li jich víc, paralelně:

    parallel-filter.sh -C convert-annotation-to-vert.pl -s . -t ../vert-merge -v
  • Nakonec ještě opravíme invalidy s tagem XY-------------.

QR Code
QR Code wiki:user:skoumal:manual_annot (generated for current page)