Wiki spuštěna 24. 7. 2025

Výroba korpusu s kolokacemi

Spouštění programu process_kolok.sh

  • Program spouštíme na adresář vert-rules-mdita-correct (default) a výsledkem bude vert-rules-mdita-kolok-sublm-agr:
    process_kolok.sh -p45 -v

Spouštění programu až po sublm-agr

  • Nejdřív musíme zpětně vyrobit formát correct, který ale bude v sobě už obsahovat závěrečné opravy. Pustíme tedy na vert-rules-mdita-sublm-agr program sublmagr2correct.pl:
    parallel-filter.sh -C sublmagr2correct.pl -s vert-rules-mdita-sublm-agr -t vert-rules-mdita-correct -v -p45
  • Potom pustíme obvykle process_kolok:
    process_kolok.sh -p45 -v
  • Nakonec musíme spravit přebytečná |:
    cd vert-rules-mdita-kolok-sublm-agr
    for ff in $(grep -Pl "|$" *); do echo $ff; perl -i.bak -pe 's/\|\t(..)\|$/\t$1/' $ff; done
    for ff in *.bak; do echo ${ff%.bak}; sdiff -s -w230 ${ff%.bak} $ff; done | l
    rm *.bak

Porovnání dvou korpusů s kolokacemi

  • Pracujeme s hotovými korpusy v adresáři vert-rules-mdita-kolok-sublm-agr
  • Soubory ze dvou adresářů sloučíme:
    cd vert-rules-mdita-kolok-sublm-agr
    paste <(cut -f1-6 macek_blanokridl.txt) <(cut -f7- macek_blanokridl.txt) \
          <(cut -f7- ../vert-rules-mdita-kolok-sublm-agr.sav/macek_blanokridl.txt) | perl -pe 's/\t+$//' \
          | perl -pe 's/([^\t]\t\t)([^\t])/$1\t$2/' | l
  • Výsledný soubor opatříme dalším sloupcem, který označuje typ rozdílu. K tomu slouží program compare-kolok.pl.
  • Výsledek uložíme v adresáři vert-rules-mdita-kolok-compare:
    cd vert-rules-mdita-kolok-sublm-agr
    mkdir ../vert-rules-mdita-kolok-compare
    for ff in *; do echo $ff; paste <(cut -f1-6 $ff) <(cut -f7- $ff) <(cut -f7- ../vert-rules-mdita-kolok-sublm-agr.sav/$ff) \
        | perl -pe 's/\t+$//' | perl -pe 's/([^\t]\t\t)([^\t])/$1\t$2/' | compare-kolok.pl > ../vert-rules-mdita-kolok-compare/$ff; done
  • Můžeme zkontrolovat, že řádky mají 10 tabulátorů:
    cd ../vert-rules-mdita-kolok-compare
    cat * | grep -cP "^[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*$"
    cat * | grep -c .
  • Pokud se liší, najdeme kde:
    grep -v "^$" * | grep -vP "^[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*$" | cut -f1 | sort -u

    a soubory znovu sjedeme nebo ručně opravíme.

  • Rozdíly jsou označeny takto:
    • E – úplná shoda (Equal)
    • S – jedna kolokace je podřetězcem druhé (Substring)
    • D – kolokace se liší (Difference)
    • L – kolokace je pouze v novém značkování (Left)
    • R – kolokace je pouze ve starém značkování (Right)
    • 0 (nula) – slovo není součástí žádné kolokace

Přidání přísloví

Jde o mimořádný krok učiněný při přípravě SYNv9. Poté, co byl celý korpus opatřen kolokacemi, se dodá ještě nová verze přísloví:

  • Vstupní data jsou v vert-rules-mdita-correct (stejně jako při přidávání všech kolokací).
  • Spustí se upravený skript process_prisloví.sh:
    cd .../<korpus>
    process_prislovi.sh -v -p45
  • Tento skript provede i závěrečné opravy a výsledky uloží do adresáře vert-rules-mdita-prislovi-sublm-agr.
  • Je třeba ještě sloučit tato přísloví se starými kolokacemi:
    cd vert-rules-mdita-prislovi-sublm-agr
    for ff in *; do echo $ff; paste $ff <(cut -f7-8 ../vert-rules-mdita-kolok-sublm-agr/$ff) | perl -pe 's/[\t\ ]+$//' \
    | cut -f1-8 > ../vert-prislovi-kolok/$ff; done
  • Nevhodné překryvy nových a starých kolokací můžeme zkontrolovat programem find-corrupt-kolok.pl. Za tím účelem ale musíme vyrobit jiný formát, kde jsou všechny kolokace a soubory mají 10 sloupců:
    cd vert-rules-mdita-prislovi-sublm-agr
    for ff in *; do echo $ff; paste <(cut -f1-6 $ff) <(cut -f7-8 $ff) <(cut -f7-8 ../vert-rules-mdita-kolok-sublm-agr/$ff) \
    | perl -pe 's/[\t\ ]+$//' | perl -pe 's/\t\t/\t\t\t/' > ../vert-prislovi-kolok-10/$ff; done

    Pak provedeme kontrolu:

    cd ../vert-prislovi-kolok-10
    for ff in *; do find-corrupt-kolok.pl $ff < $ff; done

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