porovnat.pl

Porovná dva nebo více souborů se syntakticky anotovaným textem. Vhodné pro testování úspěšnosti parseru nebo pro porovnávání výsledků dvou a více různých parserů.

Volání s jedním parametrem

porovnat.pl analyza.csts

Porovná soubor analyza.csts se souborem obsahujícím vzorovou (správnou) analýzu. Cesta ke vzorovému souboru je uvedena v konfiguračním souboru parser.ini:

test = /home/zeman/data/test.a

Na standardní výstup vypíše hlášení, ve kterém místo o rozdílech hovoří o chybách.

Do tzv. rozdílového souboru opíše ze souboru analyza.csts ty věty, které obsahovaly alespoň jednu chybu, tj. alespoň jedno slovo zavěšené jinak než ve vzorovém souboru. Jako cesta ke složce s rozdílovým souborem se použije cesta "prac" z konfiguračního souboru. Jméno rozdílového souboru v této složce je dáno konfiguračním parametrem "rozdil":

prac = /home/zeman/programy/parser/pracovni
rozdil = rozdil.csts

V případě, že vzorový a testovaný soubor neobsahují stejný počet vět nebo že některé jejich věty neobsahují shodný počet slov, chování programu není definováno.

Volání se dvěma parametry

porovnat.pl a.csts b.csts

Porovná syntaktické anotace v souborech a.csts a b.csts. V každém souboru se musí rozhodnout, kterou anotaci vybere, pokud je jich tam více. Nejdříve hledá ruční anotaci značkou <g>, a pokud žádnou nenajde, tak strojovou <MDg> (s libovolnou hodnotou atributu src). U druhého souboru se snaží nevzít stejnou anotaci jako u prvního. Pokud je v obou souborech <g> i <MDg>, vezme z prvního <g> a z druhého <MDg>. Pokud ani v jednom není <g>, snaží se ve druhém najít <MDg> s jiným src. Ale když to nejde, vezme zavděk tím, co je. Dostane-li program jako první parametr cestu ke vzorovému souboru, bude se chovat velmi podobně, jako kdyby byl zavolán pouze s parametrem b.csts.

Zdroj anotace, který se má brát z každého souboru, se výše zmíněným způsobem stanovuje podle prvního slova souboru. Na vybrané anotaci se pak trvá i u ostatních slov, i kdyby ji neobsahovala.

Hlášení na standardním rozdílu hovoří o počtu rozdílů, nikoli chyb.

Rozdílový soubor obsahuje všechny anotace (nejen syntaktické) ze souboru a.csts a dále ty anotace ze souboru b.csts, které se v a.csts nevyskytly. Anotací se má na mysli SGML/CSTS značka. Pokud se tedy v obou souborech vyskytl stejný SGML prvek se stejnými atributy (např. <MDg src="dz">), ale různým textem uvnitř prvku (za počáteční SGML značkou), vypíše se pouze verze ze souboru a.csts.

Volání s více parametry

porovnat.pl a.csts b.csts ... x.csts

Podobné jako u dvou parametrů, hlášení obsahuje počet slov shodně zavěšených v každé podmnožině souborů (např. slova zavěšená shodně v a.csts a b.csts, ale odlišně v c.csts). Všechny soubory se porovnávají proti vzoru, na nějž vede odkaz z parser.ini.

Rozdílový soubor se nevytváří.

Možnost stanovit zdroj anotace

Ve všech výše uvedených případech lze zdroj stanovit zkratkami "g" (ruční anotace), nebo "mdg" (strojová anotace), popř. rozšířenou o identifikaci programu (např. "mdgdz" odpovídá SGML značce <MDg src="dz">). Tyto zkratky lze předat dvěma níže předvedenými způsoby. První je názornější, ale druhý neklade překážky linuxovému doplňování jmen souborů na příkazovém řádku tabulátorem. Pokud zkratka není rovna "g" ani nezačíná na "mdg", automaticky se na jejím začátku předpokládá "mdg". Obě níže uvedená volání tedy říkají totéž:

porovnat.pl mc=mc.csts mdgdz=dz.csts
porovnat.pl -mdgmc mc.csts -dz dz.csts