====== 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 -ua soubory znovu sjedeme nebo ručně opravíme. * Rozdíly jsou označeny takto: * **E** -- úplná shoda (**E**qual) * **S** -- jedna kolokace je podřetězcem druhé (**S**ubstring) * **D** -- kolokace se liší (**D**ifference) * **L** -- kolokace je pouze v novém značkování (**L**eft) * **R** -- kolokace je pouze ve starém značkování (**R**ight) * **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 .../ 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; donePak provedeme kontrolu: cd ../vert-prislovi-kolok-10 for ff in *; do find-corrupt-kolok.pl $ff < $ff; done