Table of Contents
Etalon.v2020
Postup práce
Potřebujeme:
- Starý
Etalon
- Převedený Etalon:
Etalon.v2020
- Etalon sjetý MorphoDitou z vert:
MDita
- Etalon sjetý MorphoDitou z in-utf8:
MDita-plain
Postup:
- Starý
Etalon
převedeme naEtalon.v2020
, tím dostaneme fázivert-morf-simp
- Dorazíme ho do konce programem
process_vert.sh
- Porovnáme s
MDitou
a sMDita-plain
Rychlý návod
- Opravy v
…/Etalon.v2020/tokenizace/…
- Nový
…/Etalon.v2020/corr-Etalon/vert-Et
a…/Etalon.v2020/corr-Etalon/vert
:cd /home/skoumal/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/bin ./01_make-vert-Et.sh
- Nová
…/Etalon.v2020/corr-Etalon/MDita
a…/Etalon.v2020/corr-Etalon/MDita-plain
:cd /home/skoumal/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/bin ./02_make-MDita.sh
- Nový
…/Etalon.v2020/corr-Etalon/Etalon.v2020
- Porovnání
Etalon.v2020
aMDita-plain
Adresáře
- Kde budeme skladovat data ke sloučení a porovnání:
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/corr-Etalon
- Etalon:
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/tokenizace/in-utf8.done
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/tokenizace/vert_Etalon.done
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/tokenizace/Honza_done/in-utf8
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/tokenizace/Honza_done/vert-Etalon
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/corr-Etalon/vert-ET
— linky na hotové vertikály
- Etalon.v2020:
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/corr-Etalon/Etalon.v2020
- v adresáři
in-utf8
jsou linky do tokenizace, musí být bez.txt
- MDita:
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/corr-Etalon/MDita
- v adresáři
in-utf8
jsou linky do tokenizace, musí být bez.txt
- MDita-plain:
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/corr-Etalon/MDita-plain
- v adresáři
in-utf8
jsou linky do tokenizace, musí být bez.txt
- Sloučený Etalon s MDitou, ze kterého vyrábíme Etalon.v2020:
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/corr-Etalon/vert-ET-MDita
Závislosti na verzi
Kdy je třeba předělat některý kus korpusu:
Etalon.v2020/corr-Etalon/vert-Et
obsahuje linky, netřeba předělávatEtalon.v2020/corr-Etalon/vert
— pokud se změní tokenizacevert-Et
:cd .../corr-Etalon ll -rt vert | tail ll -rtL vert-Et | tail cmp-lines.sh vert-Et vert
MDita
— pokud se změní tokenizace a tím pádem ivert
:cd .../corr-Etalon ll -rt MDita/vert-morf | tail ll -rtL vert | tail
(
MDita/vert
jsou linky dovert
)vert-Et-MDita
— pokud se změnívert-Et
neboMDita/vert-morf-simp
:cd .../corr-Etalon ll -rtL vert-Et-MDita | tail ll -rtL vert-Et | tail ll -rtL MDita/vert-morf-simp | tail
Etalon.v2020
— pokud se změnívert-Et-MDita
:cd .../corr-Etalon ll -rtL Etalon.v2020/vert-morf-simp | tail ll -rtL vert-Et-MDita | tail
Automatický převod z Etalonu
Popis na fóru
- Tabulka je na fóru: Etalon.v2020 | Převodní tabulka mezi Etalonem a NÚM
- Data jsou na grimmovi:
/store/corp/EtalonMerged/vert-EtalonMerged
a v bonitu: http://utkl.ff.cuni.cz/bonito/run.cgi/first_form?corpname=EtalonMerged-EtalonMerged;align= - Vyrobíme seznam tagů podle jednotlivých POS v Etalonu a v NÚM:
cd /store/corp/EtalonMerged/vert-EtalonMerged cat * | cut -f3 | grep "^V" | sort -u > ../Verb-Etalon.txt cat * | cut -f8- | perl -pe 's/\t/\n/g' | cut -f2- -d' ' | perl -pe 's/ /\n/g' | grep "^V" | sort -u > ../Verb-NUM.txt
Podle toho, jaké máme POS, upravíme buď …-Etalon.txt nebo …-NUM.txt:
cd .. perl -i -pe 's/$/-/' Num-NUM.txt
nebo
perl -pe 's/.(..)(.)$/$2$1/' Verb-Etalon.txt | sort -u > qqq.txt mv qqq.txt Verb-Etalon.txt
- Potom porovnáváme rozdíly:
comm ../Verb-Etalon.txt ../Verb-NUM.txt | l
- Tvary tagů zapisujeme do tabulky.
- Kontrolujeme i případy, kdy si POS v Etalonu a v NÚM neodpovídají. Jana vytvořila tabulku, kde jsou tyto rozdíly sepsány.
Program pro převod
- Program je (zatím) v adresáři
~skoumal/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/bin
- Program vypisuje na
STDIN
převedený korpus a naSTDERR
chybové hlášky:- Capitalization: lemmata i tagy se shodují, liší se pouze velikost písmen v lemmatu
- Different lemmas: našli jsme vhodný tag, ale lemma se liší (např. vy X ty apod.)
- No suitable lemma: nenašli jsme žádný vhodný tag (a tudíž ani lemma)
- Suspicious abbr: slovo je v Etalonu tagováno jako zkratka, ale v morfflexu ne
- Unknown abbr: slovo je v Etalonu tagováno jako zkratka, ale v morfflexu je neznámé
- Unknown pronoun
- Corrupted line
- Program se spouští takto (na grimmovi):
cd /store/corp/EtalonMerged/vert-EtalonMerged (for ff in *; do echo $ff >&2; ~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/bin/Etalon2v2020.pl < $ff \ > ~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/data/$ff; done) 2> ~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/errors.txt
Výroba finálního korpusu
- Převedeme kompletně opravený Etalon do formátu SYN2020:
cd .../Etalon.v2020/corr-Etalon/vert-Et-MDita (for ff in *; do echo $ff; ../../bin/Etalon2v2020.pl -f4 < $ff > ../vert-syn2020/$ff; done) 2> ../errors-200611.txt
- Vyrobíme korpus:
cd .../Etalon.v2020 ln -s corr-Etalon/vert-syn2020 manatee-registry.sh -c. -f vert-syn2020 -t
Kontrola
- Zkontrolujeme i tagy programem
check-vert-tag.pl
:cd .../Etalon.v2020/corr-Etalon/vert-syn2020 cat * | /net/grimm/usr/local/corp/bin/check-vert-tag.pl -t > /dev/null
- Vyrobíme korpus z převedeného Etalonu a MorphoDity:
cd .../Etalon.v2020/corr-Etalon/vert-syn2020 for ff in *; do echo $ff; paste $ff <(cut -f2- ../vert-morf-simp/$ff) | perl -pe 's/^[\t\ ]+$//' > ../vert-syn2020-MDita/$ff; done
- Zkontrolujeme programem
Etalon-cmp-v2020.pl
a vyrobíme korpus:cd ../vert-syn2020-MDita for ff in *; do echo $ff; ../../bin/Etalon-cmp-v2020.pl < $ff > ../vert-cmp-MDita/$ff; done
cd ../.. ln -s corr-Etalon/vert-cmp-MDita manatee-registry.sh -c. -f vert-cmp-MDita
config:
PATH /net/chomsky/store/manatee-registry/Etalon.v2020-cmp-MDita-data ENCODING utf-8 INFO "Převedený Etalon porovnaný s nabídkou z MDity, 17.6.2020" ATTRIBUTE word { TYPE "FD_FGD" } ATTRIBUTE elemma { TYPE "FD_FGD" } ATTRIBUTE etag { TYPE "FD_FGD" } ATTRIBUTE lt { TYPE "FD_FGD" } ATTRIBUTE l { TYPE "FD_FGD" } ATTRIBUTE t { TYPE "FD_FGD" } ATTRIBUTE lemma { TYPE "FD_FGD" MULTIVALUE y MULTISEP " " } ATTRIBUTE tag { TYPE "FD_FGD" MULTIVALUE y MULTISEP " " } STRUCTURE doc { ATTRIBUTE file } STRUCTURE s
Vývoj převodního programu
- Roztřídíme chyby na
Capitalization.txt
,Different_lemmas.txt
aNo_suitable_lemma.txt
a hledáme rozdíly. Buď opravíme Etalon, nebo doplníme seznamy pro program:SeznamEtalon_abbreviations.tsv
SeznamEtalon_elemmas.tsv
SeznamEtalon_etags.tsv
SeznamEtalon_mlemmas.tsv
SeznamEtalon_mlemmas_mtags.tsv
SeznamEtalon_mtags.tsv
Morfologická analýza Etalonu MDitou
- Vyrobíme adresář
…/Etalon.v2020/corr-Etalon
a v něm tyto další adresáře:Etalon.v2020
MDita
MDita-plain
in-utf8
vert-Et
vert-Et-MDita
- Do
vert-Et
zkopírujeme opravený Etalon přetokaný programemdisconnect.pl
:cd .../Etalon.v2020/tokenizace/vert_Etalon.done for ff in *; do echo $ff; ../../bin/disconnect.pl < $ff > ../../corr-Etalon/vert-Et/$ff; done cd ../Honza_done/vert-Etalon for ff in *; do echo $ff; ../../../bin/disconnect.pl < $ff > ../../../corr-Etalon/vert-Et/$ff; done
a výsledek zkontrolujeme:
cd .../corr-Etalon parallel-filter.sh -C "check-vert-tag.pl -t -l16" -s vert-Et -n -p10
- Do vert z něj uřízneme vertikálu:
cd vert-Et for ff in *; do cut -f1 $ff > ../vert/$ff; done
nebo paralelně:
parallel-filter.sh -C "cut -f1" -e -p10 -s vert-Et -t vert -v
- Provedeme analýzu MDitou:
cd ../MDita mkdir vert cd vert for ff in ../../vert/*; do ln -s $ff; done cd .. process_vert.sh -v -p10 -s vert
a omrkneme tokenizaci:
cd .. cmp-lines.sh vert-Et MDita-plain/vert-morf-simp-nosp-sgcr-con-sublm/ | l
- Sloučíme Etalon s takto vyrobeným korpusem:
cd ../vert-Et for ff in *; do paste $ff <(cut -f2- ../MDita/vert-morf-simp/$ff) | perl -pe 's/^[\ \t]+$//' > ../vert-Et-MDita/$ff; done
- Zkontrolujeme, zda nedošlo k posunu:
cd ../vert-Et-MDita tail * | l -S
nebo
grep -P "^[\t\ ]" * grep -P "[\t\ ]$" *
- Můžeme vyrobit korpus
Etalon.v2020-Et-MDita
:cd .../Etalon.v2020 ln -s corr-Etalon/vert-Et-MDita manatee-registry.sh -c. -f vert-Et-MDita
config:
PATH /net/chomsky/store/manatee-registry/Etalon.v2020-Et-MDita-data ENCODING utf-8 INFO "Celý Etalon porovnaný s MDitou, RC1, 16.6.2020" ATTRIBUTE word { TYPE "FD_FGD" } ATTRIBUTE elemma { TYPE "FD_FGD" } ATTRIBUTE etag { TYPE "FD_FGD" } ATTRIBUTE lemma { TYPE "FD_FGD" MULTIVALUE y MULTISEP " " } ATTRIBUTE tag { TYPE "FD_FGD" MULTIVALUE y MULTISEP " " } STRUCTURE doc { ATTRIBUTE file } STRUCTURE s
Převod Etalonu do formátu SYN2020 a porovnání s MDitou
- Provedeme převod Etalonu do formátu MDity a vypíšeme si chybové hlášky:
cd .../Etalon.v2020/corr-Etalon/vert-Et-MDita (cat * | ../../bin/Etalon2v2020.pl -f4 > /dev/null) 2> ../errors.txt
Chceme-li dostat i převedený Etalon, spustíme program takto:
(for ff in *; do echo $ff; ../../bin/Etalon2v2020.pl -f4 < $ff > ../Etalon.v2020/vert-morf-simp/$ff; done) 2> ../errors-200611.txt
- Dorazíme Etalon.v2020 do konce:
cd ../Etalon.v2020 /usr/local/syn2020/bin/process_vert.sh -v -p10 -s vert-morf-simp
- Sloučíme s MDitou a přitom provedeme porovnání:
cd ../Etalon.v2020/vert-morf-simp-nosp-sgcr-con-sublm for ff in *; do echo $ff; paste $ff <(cut -f3- ../../MDita/vert-morf-simp-nosp-sgcr-con-sublm/$ff) |\ perl -pe 's/^[\t\ ]+$//' | ../../../bin/Etalon-cmp-v2020.pl > ../../vert-cmp-v2020-MDita/$ff; done
- Vyrobíme si korpus:
cd .../Etalon.v2020 ln -s corr-Etalon/vert-cmp-v2020-MDita manatee-registry.sh -c. -f vert-cmp-v2020-MDita
config:
PATH /net/chomsky/store/manatee-registry/Etalon.v2020-Merged-data ENCODING utf-8 INFO "Celý Etalon porovnaný s MDitou, 29.5.2020" ATTRIBUTE word { TYPE "FD_FGD" } ATTRIBUTE elemma { TYPE "FD_FGD" } ATTRIBUTE etag { TYPE "FD_FGD" } ATTRIBUTE lemma { TYPE "FD_FGD" MULTIVALUE y MULTISEP " " } ATTRIBUTE tag { TYPE "FD_FGD" MULTIVALUE y MULTISEP " " } STRUCTURE doc { ATTRIBUTE file } STRUCTURE s
Dodatečné opravy
- V Etalonu:
- Entity
&url;
a&email;
mají tag <html>NN————8-</html> - Slovo
spíše
má lemmaspíš
a tag s1
na konci
- V seznamech:
- Slovo
nazdar
podle MDity
- Po konverzi:
- Slovo
dřív
má mít variantu1
, ne5
- Slovo
lidé
nemá mít variantu, slovolidi
naopak má mít1
(v 1. a 5. pádě) - Slova
líp
,hůř
,míň
,víc
- Slova
sto
,tisíc
,pár
- Slova s
X
in-line
(<html>AAXXX—-1A—-</html>)džiu-džitsu
,tai-či
,Sado-maso
,go-go
,sci-fi
(<html>NNNXX—–A—-</html>)pop-music
(<html>NNFXX—–A—-</html>)
Použití pro trénování pajpy
- Je třeba dodat
verbtagy
a dále pracovat s tímto korpusem - Převedený
Etalon.v2020
, který už se nebude znovu generovat ze staréhoEtalonu
je umístěn v~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/testing-rules/Opravy/final
.Vymyslet lepší adresář a přesunout ho tam. Pro teď máme link
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/final
. Aktuální nejlepší
Etalon.v2020
je umístěn v~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/MorphoDiTa-training/vert-final
. Odtud je pravidelně kopírován do/data/syn2020/Etalon/vert-final
, což je finální umístění korpusu.Podobně finální plain texty jsou pravidelně kopírovány do
/data/syn2020/Etalon/in-utf8
.
Přidání verbtagů
- Pouhé přidání
verbtagů
:parallel-filter.sh -C "add_verbtag_and_clsep.pl -l | bin/remove-person.pl" -s final -t vrbtg8 -v -p10
- Přidání
verbtagů
a odstranění nesprávných osob u participií:parallel-filter.sh -C "add_verbtag_and_clsep.pl -l | bin/prune-vrbtg.pl" -s final -t vrbtg8-prune -v -p10
Porovnání osob s Etalonem
- Pracuje se v adresáři
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/testing-rules/Opravy
. - Adresář
final
obsahuje aktuální nejlepší Etalon.v2020 s tagy o délce 15. Soubory mají formát<p> forma<TAB>space<TAB>lemma<SPACE>tag
- Vyrobí se
vrbtg8
, ale jenom u sloves:parallel-filter.sh -C "add_verbtag_and_clsep.pl -l | ../../bin/remove-person.pl" -s final -t vrbtg8 -v -p45
- Spustí se pravidla (celý
root
):parallel-filter.sh -C "/net/grimm/usr/local/langr/rules/bin/gc_ucs2_release.x --lex=/usr/local/syn2020/LEX_ucs2 \ --action=single --input=wide_vertical --output=wide_vertical --collocations=restore --empty_positions=restore \ --trace_deletions=no --group=root | remove-dupl-vert-utf8.pl" \ -s vrbtg8 -t vrbtg8-rules -p 45 -v 2> errlog/rules-pers.log
- Vyrobí se korpus tímto příkazem:
cd vrbtg8-rules for ff in *; do echo $ff; paste <(paste <(grep -v "<p>" ../final/$ff) \ <(../../../bin/move-person.pl < $ff | remove-dupl-vert-utf8.pl | cut -f2- ) \ | ../../../bin/Etalon.v2020-cmp-rules.pl | cut -f1-7) <(cut -f2- $ff) | perl -pe 's/^[\t ]+$//' > ../osoby/$ff; done
Porovnání s všemi pravidly
- Pracujeme v adresáři
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/MorphoDiTa-training
.
- Spustíme
process_text.sh
na plain text:process_text.sh -l -v -p45
a spravíme segmentaci:
mkdir -p vert-segcor-vrbtg8 cd vert-vrbtg8 for ff in *; do echo $ff; ../../bin/correct_segm.pl ../vert-korpus/$ff $ff > ../vert-segcor-vrbtg8/$ff; done
a zkontrolujeme zarovnání:
cd ../vert-segcor-vrbtg8 for ff in *; do echo $ff; sdiff -s <(cut -f1 $ff) <(cut -f1 ../vert-korpus/$ff); done
- Spustíme pravidla:
cd .. parallel-filter.sh -C "/net/grimm/usr/local/langr/rules/bin/gc_ucs2_release.x --lex=/usr/local/syn2020/LEX_ucs2 \ --action=single --input=wide_vertical --output=wide_vertical --empty_positions=restore \ --trace_deletions=no --group=root | negr_kolokace_vert_ucs2.pl | remove-dupl-vert-utf8.pl" \ -s vert-segcor-vrbtg8 -t vert-segcor-vrbtg8-rules -p 45 -v 2> errlog/rules.log
- Nakonec vyrobíme korpus:
mkdir rules cd vert-segcor-vrbtg8-rules for ff in *; do echo $ff; paste <(cut -f1,3- ../vert-korpus/$ff) <(cut -f2- $ff) \ | ../../bin/Etalon.v2020-cmp-rules.pl > ../rules/$ff; done
- Program
manatee-registry.sh
spouštíme s přepínačem-t
:manatee-registry.sh -c. -f vert-cmp-rules -t
Definitivní Etalon s dlouhými tagy
- Pro trénování MorphoDiTy potřebujeme Etalon s dlouhými tagy (21 pozic???)
- Pracujeme v adresáři
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/MorphoDiTa-training
- Za zdroj slouží Etalon s osobami:
cd .../Etalon.v2020/testing-rules/Opravy/vrbtg8-rules for ff in $(ls -B); do echo $ff; \ cat $ff | perl -pe 's/(\ .{21})[^\ ][^\ ]/$1/g' | remove-dupl-vert-utf8.pl \ > ../../../MorphoDiTa-training/MDita-21/$ff; done
- Opravíme osoby podle Etalonu:
cd .../Etalon.v2020/testing-rules/Opravy/final for ff in $(ls -B); do echo $ff; \ ../../../bin/correct_segm.pl $ff ../../../MorphoDiTa-training/MDita-21/$ff \ > ../../../MorphoDiTa-training/MDita-21-segcor/$ff; done for ff in $(ls -B); do echo $ff; \ paste $ff <(cut -f2- ../../../MorphoDiTa-training/MDita-21-segcor/$ff) | perl -pe 's/^[\t\ ]+$//' \ | ../../../bin/Etalon.v2020-corr-pers.pl | perl -pe 's/ Vp.{13}V..[13]v.//g' | remove-dupl-vert-utf8.pl \ > ../../../MorphoDiTa-training/MDita-21-segcor-pers/$ff; done
- Připravíme data pro ruční opravy:
cd ../../../MorphoDiTa-training ln -s MDita-21-segcor-pers vert-MDita make-corp.sh -s vert-MDita -t csts-MDita -v -p45 mv csts-MDita Etalon-import
- Po ruční opravě připravíme vertikálu pro dokončení oprav:
cd ~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/MorphoDiTa-training/Etalon-export for ff in *-HS; do mv $ff ${ff%-HS}; done for ff in *-TJ; do mv $ff ${ff%-TJ}; done for ff in *-JS; do mv $ff ${ff%-JS}; done for ff in *; do echo $ff; \ cat $ff | perl -pe 's/(<f[^<]+)(.*<t[^\n]+)$/$1<src>M$2/' | perl -pe 's/(<[fd][^<]+)(.*<MMt>[^<\n]+)$/$1<src>R$2/' \ | perl -pe 's/<MM.*(<l[^>]+>.*<t[^>]+>[^i][^n][^v][^a][^l][^i][^d])/$1/' \ | perl -pe 's/(<f[^>]*>[^<]+<src>.<MMl>[^<]+)(.*)<l[^>]+>invalid<t[^>]+>(.*)$/$1<MMt>$3$2/' \ | perl -pe 's/<([lt])[^>]+>/<MM$1>/g' \ > ../csts-export/$ff; done cd .. make-corp.sh -s csts-export -t vert-export -v -p45
a připravíme finální vertikálu, kterou budeme ručně opravovat:
cd vert-export for ff in *; do echo $ff; \ cat $ff | perl -pe 's/<src>/\t/' | perl -pe 's/ /\t/' | perl -pe 's/(\tinvalid) /$1\t/' \ > ../vert-korpus/$ff; done
- Pro Bonito vyrobíme vertikálu, ve které budou oddělené verbtagy:
cd ../vert-korpus for ff in $(ls -B); do echo $ff; \ perl -pe 's/(\t.{15})(.{6})$/$1\t$2/' $ff > ../vert-korpus-verbtags/$ff; done
- Korpus pro Bonito bude mít název
Etalon.v2020-verbtags
a vyrobí se v adresářiEtalon.v2020
příkazemmanatee-registry.sh -c. -f vert-verbtags -t
Sjednocení in-utf8, vert-vrbtags a vert-korpus
- Všechny finální verze korpusů si musí odpovídat.
- Hlavní adresář se všemi (polo)verzemi je
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020
. - Finální
in-utf8
je vtokenizace/in-utf8.done
atokenizace/Honza_done/in-utf8
. Vedou tam linky zcorr-Etalon/in-utf8
. Další linky jsou vtesting-rules/Opravy
atesting-rules/Rules
. - Finální Etalon s mezerami a
<p>
je vtesting-rules/Opravy/final
. - Finální Etalon s verbtagy je v
MorphoDiTa-training/vert-korpus
. V těchto souborech musíme opravit entity:cd MorphoDiTa-training/vert-korpus for ff in $(ls -B | xargs grep -l '%'); do echo $ff; perl -i.bak -pe 's/%/%/g' $ff; done for ff in *.bak; do echo ${ff%.bak}; sdiff -s ${ff%.bak} $ff; done rm *.bak for ff in $(ls -B | xargs grep -l '*'); do echo $ff; perl -i.bak -pe 's/*/*/g' $ff; done for ff in $(ls -B | xargs grep -l '['); do echo $ff; perl -i.bak -pe 's/[/[/g' $ff; done for ff in $(ls -B | xargs grep -l ']'); do echo $ff; perl -i.bak -pe 's/]/]/g' $ff; done for ff in $(ls -B | xargs grep -l '&'); do echo $ff; perl -i.bak -pe 's/&/&/g' $ff; done
- V
in-utf8
je třeba ohlídat segmentaci a mezery před,
(čárkou) a.
(tečkou). - To, že si odpovídají
in-utf8
avert-korpus
, zkontrolujeme takto:cd MorphoDiTa-training/vert-korpus for ff in $(ls -B); do echo $ff; \ no_space_after_token_morphanal.pl ../in-utf8/$ff /dev/null < $ff > /dev/null; done
- Podobně zkontrolujeme
in-utf8
afinal
:cd testing-rules/Opravy/final for ff in $(ls -B); do echo $ff; \ grep -v "<p>" $ff | no_space_after_token_morphanal.pl ../in-utf8/$ff /dev/null > /dev/null; done
Data pro Tomáše
- Nalézají se v adresáři
/data/syn2020/Etalon
. - V podadresářích
vert-verbtag
(kopieverb-korpus
ode mne) ain-utf8
jsou zkopírovaná moje data. - Je třeba vytvořit morfologickou nabídku pro MorphoDiTu, opravit segmentaci a vyrobit trénovací data.
- Morfologická nabídka:
cd /data/syn2020/Etalon process_text.sh -l -v -p45
- Oprava segmentace:
cd vert-vrbtg8 for ff in $(ls -B); do echo $ff; ~skoumal/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/bin/correct_segm.pl ../vert-verbtag/$ff $ff \ > ../vert-vrbtg8-segcor/$ff; done
- Trénovací data:
cd ../Tools ./train_data_for_MDita.sh
- Trénovací data jsou v adresáři
vert-morphodita
.
Porovnávání s výsledky z natrénované MorphoDiTy
- Adresář
/data/syn2020/Etalon/vert-morphodita-result
se porovnává svert-korpus
.
Zarovnání obou korpusů
- Porovnáme zarovnání:
cd .../vert-korpus for ff in $(ls -B); do echo $ff; sdiff -s <(cut -f1 $ff) <(cut -f1 /data/syn2020/Etalon/vert-morphodita-result/$ff); done | l sdiff -l <(cut -f1 klidXXXXX) <(cut -f1 /data/syn2020/Etalon/vert-morphodita-result/klidXXXXX) | l -j10
Výroba korpusu pro porovnání
- V adresáři
~/PROJEKTY/INFRASTRUKTURA/Etalon.v2020/MorphoDiTa-training
uděláme linkvert-Morphodita → /data/syn2020/Etalon/vert-morphodita-result
- Vytvoříme adresář
vert-Morphodita-verbtags
a v něm vyrobíme korpus s oddělenými verbtagy:cd vert-korpus for ff in $(ls -B); do echo $ff; \ perl -pe 's/(\t.{15})(.{6})$/$1\t$2/' ../vert-Morphodita/$ff > ../vert-Morphodita-verbtags/$ff; done
- Vytvoříme adresář
vert-cmp-MorphoDiTa
a v něm vyrobíme texty pro korpus:cd ../vert-korpus for ff in $(ls -B); do echo $ff; \ paste $ff <(cut -f2- ../vert-Morphodita/$ff) | perl -pe 's/^[\t\ ]+$//' \ | ../../bin/Etalon.v2020-cmp-morphodita.pl > ../vert-cmp-MorphoDiTa/$ff; done
Výroba korpusu pro porovnání s vert
- Pracujeme v adresáři
/store/corp/Etalon.2020
, kam si zkopírujeme všechny potřebné soubory/adresáře. - Adresář
start-vert
obsahuje vertikálu a soubory vyrobené z ní.- Adresáře zkopírované:
in-utf8
vert-final
- Adresáře vytvořené skripty:
vert
— formátem odpovídávert-mdita
vert-final-sublm-agr
— z tohoto adresáře se vyrobívert
vert-mdita-kolok-sublm-agr
vert-rules-mdita-kolok-sublm-agr
vert-rules0-frazrl-rules-mdita-kolok-sublm-agr
- Adresář
etalon
obsahuje hotový Etalon.- Adresáře zkopírované:
vert-final
- Linky:
in-utf8 → ../start-vert/in-utf8
vert → ../start-vert/vert
vert-mdita → vert-final
vert-morf-simp-nosp-sgcr-con → ../start-vert/vert-morf-simp-nosp-sgcr-con
- Adresáře vytvořené skripty:
vert-mdita-kolok-sublm-agr
- Potřebujeme docílit toho, aby
vert-final
byl segmentován stejně jakovert
. Problém je v tom, ževert-final
má rozlepené agregáty. ale vevert
je potřebujeme slepené. Cesta je vyrobitvert-final-sublm-agr
a z něj pak ukousnoutvert
. - Postup výroby
vert-final-sublm-agr
:- V adresáři
start-vert
vyrobímevert-mdita-sublm-agr
, abychom získalivert-morf-simp-nosp-sgcr-con
:cd start-vert process_text.sh -s vert -m -v -p45
- V adresáři
etalon
vyrobímevert-mdita-sublm-agr
(pozor, ať nesmažeme soubory ve
vert-final
):
cd etalon process_text.sh -s vert-mdita -v -p45
- Porovnáme vyrobený
etalon
svert
:cd etalon/vert-mdita-sublm-agr for ff in *; do echo "FILE: $ff"; sdiff -s <(cut -f1 $ff) ../vert/$ff; done | l
Porovnání Etalonu s rules, frazrl a mditou
- Vytvoříme kolokace z ručně udělaného etalonu. Dále etalon sjedeme pravidly, pravidly s frazrl a holou MorphoDiTou z vertikály a výsledky taky opatříme kolokacemi.
Kolokace z Etalonu
- V adresáři
/store/corp/Etalon.2020/etalon
vyrobímevert-morf-simp-nosp-sgcr-con
:cd etalon process_text.sh -s vert -t vrbtg8 -v -p45
- Soubory ve
vert-morf-simp-nosp-sgcr-con
zarovnáme s těmi zvert-final
pomocícorrect_segm.pl
:mkdir vert-morf-simp-nosp-sgcr-con.prac mkdir vert-final-space cd vert-morf-simp-nosp-sgcr-con cp -p * ../vert-morf-simp-nosp-sgcr-con.prac
cd vert-morf-simp-nosp-sgcr-con for ff in *; do split-sufixoid.pl < $ff > ../vert-morf-simp-nosp-sgcr-con.prac/$ff; donecd ../vert-final for ff in *; do echo $ff; no_space_after_token_morphanal.pl ../in-utf8/$ff /dev/null < $ff > ../vert-final-space/$ff; done cd ../vert-final-space for ff in *; do echo $ff; correct_segm.pl $ff ../vert-morf-simp-nosp-sgcr-con.prac/$ff > ../vert-morf-simp-nosp-sgcr-con/$ff; done
- Vyrobíme
vert-mdita-correct
:ln -s vert-final vert-mdita process_text.sh -s vert-mdita -t in -v -p45
- Vyrobíme kolokace:
process_kolok.sh -s vert-mdita-correct -v -p45
a zkontrolujeme:
cd vert-mdita-kolok-sublm-agr for ff in *; do echo $ff; no_space_after_token_morphanal.pl ../in-utf8/$ff /dev/null < $ff > /dev/null; done for ff in *; do cut -f1-6 $ff | check-vert-tag-v2020.pl -c5 -t -V > /dev/null; done
Zpracování třemi metodami
- Pracujeme v adresáři
/store/corp/Etalon.2020/start-vert
S kolokacemi
- Vyrobíme vertikály z
vert
:cd start-vert process_text.sh -s vert -t in -m -v -p45 process_text.sh -s vert -t in -v -p45 process_text.sh -s vrbtg8 -t in -f -v -p45
- Opravíme slepená adjektiva s kolokacemi ve
vert-mdita-correct
:mkdir -p vert-mdita-correct.prac mkdir -p vert-rules-mdita-correct.prac mkdir -p vert-rules0-frazrl-rules-mdita-correct.prac cd vert-mdita-correct for ff in *; do correct-sufixoid.pl < $ff > ../vert-mdita-correct.prac/$ff; done cd ../vert-rules-mdita-correct for ff in *; do correct-sufixoid.pl < $ff > ../vert-rules-mdita-correct.prac/$ff; done cd ../vert-rules0-frazrl-rules-mdita-correct for ff in *; do correct-sufixoid.pl < $ff > ../vert-rules0-frazrl-rules-mdita-correct.prac/$ff; done
a přesuneme opravené soubory zpět do
-correct
:cd ../vert-mdita-correct.prac mv * ../vert-mdita-correct/ cd ../vert-rules-mdita-correct.prac mv * ../vert-rules-mdita-correct/ cd ../vert-rules0-frazrl-rules-mdita-correct.prac mv * ../vert-rules0-frazrl-rules-mdita-correct/
- Vyrobíme kolokace:
cd .. process_kolok.sh -s vert-mdita-correct -v -p45 process_kolok.sh -v -p45 process_kolok.sh -s vert-rules0-frazrl-rules-mdita-correct -v -p45
Bez kolokací
- Vyrobíme vertikály z
vert
:process_text.sh -s vert -m -v -p45 process_text.sh -s vert -v -p45 process_text.sh -s vrbtg8 -f -v -p45
- Opravíme slepená adjektiva ve
vert-mdita-sublm-agr
:mkdir -p vert-mdita-sublm-agr.prac mkdir -p vert-rules-mdita-sublm-agr.prac mkdir -p vert-rules0-frazrl-rules-mdita-sublm-agr.prac cd vert-mdita-sublm-agr for ff in *; do correct-sufixoid.pl < $ff > ../vert-mdita-sublm-agr.prac/$ff; done cd ../vert-rules-mdita-sublm-agr for ff in *; do correct-sufixoid.pl < $ff > ../vert-rules-mdita-sublm-agr.prac/$ff; done cd ../vert-rules0-frazrl-rules-mdita-sublm-agr for ff in *; do correct-sufixoid.pl < $ff > ../vert-rules0-frazrl-rules-mdita-sublm-agr.prac/$ff; done
- Přesuneme opravené soubory zpět do
-sublm-agr
:cd ../vert-mdita-sublm-agr.prac mv * ../vert-mdita-sublm-agr/ cd ../vert-rules-mdita-sublm-agr.prac mv * ../vert-rules-mdita-sublm-agr/ cd ../vert-rules0-frazrl-rules-mdita-sublm-agr.prac mv * ../vert-rules0-frazrl-rules-mdita-sublm-agr/
- Zkontrolujeme vůči
in-utf8
ve všech adresářích:cd ../vert-mdita-sublm-agr for ff in *; do no_space_after_token_morphanal.pl ../in-utf8/$ff /dev/null < $ff > /dev/null; done cd ../vert-rules-mdita-sublm-agr for ff in *; do no_space_after_token_morphanal.pl ../in-utf8/$ff /dev/null < $ff > /dev/null; done cd ../vert-rules0-frazrl-rules-mdita-sublm-agr for ff in *; do no_space_after_token_morphanal.pl ../in-utf8/$ff /dev/null < $ff > /dev/null; done
Výroba korpusu pro porovnání všech tří metod s Etalonem
- Pracujeme v adresáři
/store/corp/Etalon.2020/compare
- V něm jsou tyto adresáře:
etalon
,etalon-prac
,frazrl
,frazrl-prac
,mdita
,mdita-prac
,rules
arules-prac
, ve kterých připravujeme zarovnaná data pro korpus, akorpus
, kde je výsledná vertikála.
S kolokacemi
- Nejdříve nakopírujeme data do pracovních adresářů:
cd ../etalon/vert-mdita-kolok-sublm-agr cp -p * ../../compare/etaloncd ../start-vert/vert-mdita-kolok-sublm-agr cp -p * ../../compare/mdita-prac # for ff in astroprvX bulv0518 si080520 zitkonceX; do split-sufixoid.pl < $ff > ../../compare/mdita-prac/$ff; done cd ../vert-rules-mdita-kolok-sublm-agr cp -p * ../../compare/rules-prac # for ff in astroprvX bulv0518 si080520 zitkonceX; do split-sufixoid.pl < $ff > ../../compare/rules-prac/$ff; done cd ../vert-rules0-frazrl-rules-mdita-kolok-sublm-agr cp -p * ../../compare/frazrl-prac # for ff in astroprvX bulv0518 si080520 zitkonceX; do split-sufixoid.pl < $ff > ../../compare/frazrl-prac/$ff; done
a v adresáři
compare/mdita-prac
ještě ručně opravíme roztržené Cos v souboruzassrdvf01
okolo řádky 31776, nemohls v souboruo_lasceXX
okolo řádky 34872 a Neměls v souboru samanebX01 okolo řádky 48870. - Spravíme segmentaci a při tom vytvoříme soubory v základních adresářích:
cd ../../compare/etalon for ff in $(ls -B); do echo $ff; correct_segm.pl $ff ../mdita-prac/$ff > ../mdita/$ff; done for ff in $(ls -B); do echo $ff; correct_segm.pl $ff ../rules-prac/$ff > ../rules/$ff; done for ff in $(ls -B); do echo $ff; correct_segm.pl $ff ../frazrl-prac/$ff > ../frazrl/$ff; done
- Korpusy rozházíme po sloupcích:
cd ../compare/etalon for ff in $(ls -B); do cut -f1-2 $ff > ../etalon-prac/$ff.1-2; done for ff in $(ls -B); do for ii in {3..8}; do cut -f$ii $ff > ../etalon-prac/$ff.$ii; done; done cd ../rules for ff in $(ls -B); do for ii in {3..8}; do cut -f$ii $ff > ../rules-prac/$ff.$ii; done; done cd ../frazrl for ff in $(ls -B); do for ii in {3..8}; do cut -f$ii $ff > ../frazrl-prac/$ff.$ii; done; done cd ../mdita for ff in $(ls -B); do for ii in {3..8}; do cut -f$ii $ff > ../mdita-prac/$ff.$ii; done; done
- Vyrobíme další sloupce s porovnáním atributů:
cd ../etalon-prac for ff in *.3; do paste $ff ../rules-prac/$ff ../frazrl-prac/$ff ../mdita-prac/$ff | add_collumn_to_corp.pl > $ff.9 2>$ff.log; done for ff in *.4; do paste $ff ../rules-prac/$ff ../frazrl-prac/$ff ../mdita-prac/$ff | add_collumn_to_corp.pl > $ff.10 2>$ff.log; done for ff in *.5; do paste $ff ../rules-prac/$ff ../frazrl-prac/$ff ../mdita-prac/$ff | add_collumn_to_corp.pl > $ff.11 2>$ff.log; done for ff in *.6; do paste $ff ../rules-prac/$ff ../frazrl-prac/$ff ../mdita-prac/$ff | add_collumn_to_corp.pl > $ff.12 2>$ff.log; done for ff in *.7; do paste $ff ../rules-prac/$ff ../frazrl-prac/$ff ../mdita-prac/$ff | add_collumn_to_corp.pl > $ff.13 2>$ff.log; done for ff in *.8; do paste $ff ../rules-prac/$ff ../frazrl-prac/$ff ../mdita-prac/$ff | add_collumn_to_corp.pl > $ff.14 2>$ff.log; done
- Nakonec vytvoříme korpus:
cd ../etalon-prac for ff in $(cat ../list.txt); do echo $ff; paste $ff.1-2 $ff.3 $ff.4 $ff.5 $ff.6 $ff.7 $ff.8 ../rules-prac/$ff.3 ../rules-prac/$ff.4 ../rules-prac/$ff.5 ../rules-prac/$ff.6 ../rules-prac/$ff.7 ../rules-prac/$ff.8 ../frazrl-prac/$ff.3 ../frazrl-prac/$ff.4 ../frazrl-prac/$ff.5 ../frazrl-prac/$ff.6 ../frazrl-prac/$ff.7 ../frazrl-prac/$ff.8 ../mdita-prac/$ff.3 ../mdita-prac/$ff.4 ../mdita-prac/$ff.5 ../mdita-prac/$ff.6 ../mdita-prac/$ff.7 ../mdita-prac/$ff.8 $ff.3.9 $ff.4.10 $ff.5.11 $ff.6.12 $ff.7.13 $ff.8.14 | perl -pe 's/^[\t]+$//' | cat -s > ../korpus/$ff; done
- Ke korpusu vede link z adresáře
/store/corp/Etalon.2020
:vert-compare → compare/korpus
- Korpus má tento definiční soubor:
Bez kolokací
- Nejdříve nakopírujeme data do pracovních adresářů:
cd ../../start-vert/vert-mdita-sublm-agr cp -p * ../../compare/mdita-prac cd ../vert-rules-mdita-sublm-agr cp -p * ../../compare/rules-prac cd ../vert-rules0-frazrl-rules-mdita-sublm-agr cp -p * ../../compare/frazrl-prac
a ještě ručně opravíme v adresáři
compare/mdita-prac
roztržené Cos v souboruzassrdvf01
okolo řádky 31778, nemohls v souboruo_lasceXX
okolo řádky 34873 a Neměls v souboru samanebX01 okolo řádky 48870. - Spravíme segmentaci a při tom vytvoříme soubory v základních adresářích:
cd ../../compare/etalon for ff in $(ls -B); do echo $ff; correct_segm.pl $ff ../mdita-prac/$ff > ../mdita/$ff; done for ff in $(ls -B); do echo $ff; correct_segm.pl $ff ../rules-prac/$ff > ../rules/$ff; done for ff in $(ls -B); do echo $ff; correct_segm.pl $ff ../frazrl-prac/$ff > ../frazrl/$ff; done
- Korpusy rozházíme po sloupcích:
cd ../compare/etalon for ff in $(ls -B); do cut -f1-2 $ff > ../etalon-prac/$ff.1-2; done for ff in $(ls -B); do for ii in {3..6}; do cut -f$ii $ff > ../etalon-prac/$ff.$ii; done; done cd ../rules for ff in $(ls -B); do for ii in {3..6}; do cut -f$ii $ff > ../rules-prac/$ff.$ii; done; done cd ../frazrl for ff in $(ls -B); do for ii in {3..6}; do cut -f$ii $ff > ../frazrl-prac/$ff.$ii; done; done cd ../mdita for ff in $(ls -B); do for ii in {3..6}; do cut -f$ii $ff > ../mdita-prac/$ff.$ii; done; done
- Vyrobíme další sloupce s porovnáním atributů:
cd ../etalon-prac for ff in *.3; do paste $ff ../rules-prac/$ff ../frazrl-prac/$ff ../mdita-prac/$ff | add_collumn_to_corp.pl > $ff.9 2>$ff.log; done for ff in *.4; do paste $ff ../rules-prac/$ff ../frazrl-prac/$ff ../mdita-prac/$ff | add_collumn_to_corp.pl > $ff.10 2>$ff.log; done for ff in *.5; do paste $ff ../rules-prac/$ff ../frazrl-prac/$ff ../mdita-prac/$ff | add_collumn_to_corp.pl > $ff.11 2>$ff.log; done for ff in *.6; do paste $ff ../rules-prac/$ff ../frazrl-prac/$ff ../mdita-prac/$ff | add_collumn_to_corp.pl > $ff.12 2>$ff.log; done
- Nakonec vytvoříme korpus:
cd ../etalon-prac for ff in $(cat ../list.txt); do echo $ff; paste $ff.1-2 $ff.3 $ff.4 $ff.5 $ff.6 ../rules-prac/$ff.3 ../rules-prac/$ff.4 ../rules-prac/$ff.5 ../rules-prac/$ff.6 ../frazrl-prac/$ff.3 ../frazrl-prac/$ff.4 ../frazrl-prac/$ff.5 ../frazrl-prac/$ff.6 ../mdita-prac/$ff.3 ../mdita-prac/$ff.4 ../mdita-prac/$ff.5 ../mdita-prac/$ff.6 $ff.3.9 $ff.4.10 $ff.5.11 $ff.6.12 | perl -pe 's/^[\t]+$//' | cat -s > ../korpus/$ff; done
- Ke korpusu vede link z adresáře
/store/corp/Etalon.2020
:vert-compare → compare/korpus
- Korpus vyrobíme takto:
manatee-registry.sh -c . -f vert-compare -p10 -t
- Korpus má tento definiční soubor:
- Vyrobíme korpus, vyhledáme chyby a opravy provádíme rovnou v adresáři
korpus
. Provedené opravy promítneme zpět do adresářeetalon
cd korpus for ff in *; do echo $ff; cut -f1-8 $ff | perl -pe 's/[\t]+$//' | cat -s > ../etalon/$ff; done
a celý korpus vyrobíme znova
- Nejlepší etalon:
Aktuální nejlepší etalon je v adresáři
compare/etalon
. Pro trénování a kolokace z něj vyrobíme vertikálu takto:cd compare/etalon for ff in $(ls -B); do echo $ff; cut -f2-3,5-6 $ff | split-agreg.pl | perl -pe 's/\t([^\t]+)$/$1/' | cat -s > ../../etalon/vert-final/$ff; done
Udržované varianty
- Konečný formát obsahující
word
,synword
,lemma
,sublemma
,tag
averbtag
. Nachází se v adresářicompare/etalon
- Verze pro Korpus
- Verze pro Lindat
- Verze pro trénování MorphoDiTy a pravidel
Texty do Lindatu
- Z hotového korpusu uloupneme prvních 6 sloupců.
- Nasekáme po 100 slovech programem
split-text.pl
.- Dlouhé soubory nasekáme (i v
in-utf8
) a zkusíme znovu.
- Zashufflujeme programem, který vznikne jako výstup z
make-rename.pl
ashuffle-files.pl
:cd Lindat/Etalon ls | shuffle-files.pl | make-rename.pl > ../skript.sh chmod +x ../skript.sh ../skript.sh
Texty pro výrobu porovnání a pro trénování MorphoDiTy
- Z hotového korpusu vezmeme 2., 3., 5. a 6. sloupec, rozdělíme agregáty a slepíme tagy a verbtagy:
cd compare/etalon for ff in $(ls -B); do echo $ff; cut -f2-3,5-6 $ff | split-agreg.pl | perl -pe 's/\t([^\t]+)$/$1/' | cat -s > ../../Training/etalon/$ff; done for ff in $(ls -B); do echo $ff; cut -f2-3,5-6 $ff | split-agreg.pl | perl -pe 's/\t([^\t]+)$/$1/' | cat -s > ../../etalon/vert-final/$ff; done
a vyrobíme novou vertikálu pro testování:
for ff in $(ls -B); do echo $ff; cut -f1 $ff > ../../start-vert/vert/$ff; done
Toto je třeba udělat po každé opravě Etalonu!
Kontroly prováděné po ručních opravách Etalonu
- Validita tagů:
cd /store/corp/Etalon.2020/compare/etalon for ff in $(ls -B); do echo $ff; check-vert-tag-v2020.pl -c5 -k -t -V < $ff > /dev/null; done
- Shoda textů s
in-utf8
:for ff in $(ls -B); do echo $ff; no_space_after_token_morphanal.pl ../../start-vert/in-utf8/$ff /dev/null < $ff > /dev/null; done
Postup při opravách v klikátku
Opravy verbtagů
- V Bonitu najdeme problematické jevy v korpusu a vytvoříme seznam souborů
aux.lst
v adresáři/store/corp/Etalon.2020/compare
. - Příslušné soubory zkopírujeme do adresáře
compare/klikatko/korpus
:cd /store/corp/Etalon.2020/compare for ff in $(cut -f1 aux.lst); do cp -p korpus/$ff klikatko/korpus/; done
- Vyrobíme alternativy:
cd klikatko/korpus for ff in *; do echo $ff; cut -f2,3,5,6,10 $ff | perl -pe 's/^([^\t]+\t[^\t]+\t[^\t]+\tA-----)\t(V.....)$/\1 \2\t\2/' \ | cut -f1-4 | split-agreg.pl | glue-verbtag.pl > ../etalon/vert-import/$ff; done
- Pak postupujeme jako při ručním značkování.
- V adresáři
etalon
máme podadresářevert-import
,csts-import
,csts-export
a nakonec vytvořímevert-export
. V něm vyrobíme a zkontrolujeme soubory takto:cd etalon/csts-export for ff in *; do echo $ff; cat $ff | csts_vert_annot.pl | rem-ent.pl | perl -pe 's/(......)$/\t\1/' \ | restore-aggreg.pl ../korpus/$ff > ../vert-export/$ff; done cd ../vert-export for ff in *; do sdiff -s <(cut -f1 $ff) <(cut -f1 ../../../korpus/$ff); done
- Vyrobíme opravené soubory v adresáři
klikatko/corr
:for ff in *; do echo $ff; paste <(cut -f1-5 ../../korpus/$ff) <(cut -f4 $ff) | perl -pe 's/^\s+$/\n/' > ../corr/$ff; done
- Můžeme zkontrolovat rozdíly:
cd ../corr for ff in *; do echo $ff; sdiff -s -w200 $ff <(cut -f1-6 ../../../etalon/$ff); done | l
- Opravené soubory zkopírujeme do
…/compare/etalon
:cd ../corr rsync -avz * ../../../etalon/