Formaty wejściowe i wyjściowe

Biblioteka corpus2 udostępnia wiele tzw. czytników i piśników różnych formatów korpusu. Narzędzia wykorzystujące corpus2 zazwyczaj pozwalają na wybranie dowolnego formatu za pomocą przełączników -i oraz -o dla odpowiednio formatu wejścia i wyjścia.

Ogólna składnia to FORMAT(,OPCJA)*, np. xces,ign,sh. Opcje sa zazwyczaj specyficzne dla konkretnego formatu. Opcje mogą sterować dialektem, formatowaniem itp.

Formaty wejściowe

Dostępne formaty: ccl iob-chan rft xces xces-fast

Wspólne opcje czytników

  • ,ign — Niemożliwe do sparsowania tagi będą zamieniane na tag ign (lub jego odpowiednik w tagsecie).
  • ,loose — „swobodne” parsowanie tagów: dopuszcza atrybuty spoza dopuszczalnych dla danej klasy, typu np. ign:pl w KIPI oraz dopuszcza brak wymaganych atrybutów, na wyjściu mogą się więc pojawiać „niepełne” tagi typu subst:::.
  • ,strict — „ścisłe” parsowanie tagów: obecnie sprawdza tylko dodatkowo czy tagi są „jednostkowe”, tj. czy nie ma zapisu w rodzaju inf:perf.imperf. todo: trochę to dziwne
  • ,ann — wczytuje zdania jako zdania anotowane (AnnotatedSentence) nawet jeśli dany format nie zawiera informacji o anotacjach

XCES — znany i lubiany

xces odpowiada formatowi CORPUS z TaKIPI, ale jest czytany przez poprawniejszy (acz potencjalnie wolny) parser XML (SAX, libxml2++). Ten czytnik może się obrazić gdy dostanie niepoprawny XML, ale za to doprze obsłuży poprawne konstrukcje trudne do załatwienia regeksami.
  • ,disamb_only — wczytuje tylko leksemy oznaczone disambem.
  • ,sh — dialekt Pantery: leksemy oznaczone disamb_sh=0 są traktowane jak zwykłe, a nieoznaczone — jak gdyby miały disamb=1.
  • ,no_warn_unexpected_xml — wyłącza ostrzeżenia o nadmiarowych tagach XML-owych (struktura poza nimi musi być poprawna)
  • ,no_warn_inconsistent — wyłącza kilka mechanizmów ostrzegających o niespójności XMLa

Szybki XCES

xces-fast jest zapożyczonym z Pantery (która bazuje na boostowych przykładach) parserem XML opartym o sendmaila i emacsa wyrażenia regularne Boosta. Jest szybszy od xces, ale wybredny, może się psuć gdy np. wcięcia będą „nie takie”. Nie ma opcji.

CCL

Format ccl opiera się o XCES, zakłada podział na chunki i zdania (tagi chunk i sentence), dodatkowo zawiera informacje o anotacjach w kanałach.

  • ,disamb_only — wczytuje tylko leksemy oznaczone disambem.
  • ,no_warn_inconsistent — wyłącza kilka mechanizmów ostrzegających o niespójności XMLa

RFT

rft to prosty format tabelaryczny, orth\ttag. Zdania oddzielane są pustymi liniami. Nie zawiera informacji o lematach i jest wczytywany jeden tag jako leksem z lematem NO-BASE, a wartości w nim oddzielane są kropkami a nie dwukropkami (zgodność z RFTaggerem).

  • ,set_disamb — zakłada że wczytywane leksemy są disambowe (format nie zawiera informacji o tym) todo: niespójne
  • ,mbt — dialekt MBT: zdania oddzielane sekwencją <utt>, a nie pustą linią

IOB-CHAN~~~~~

Nowy format iob-chan zapisuje anotacje w postaci IOB w formacie tabelarycznym: orth\tlemma\ttag\tannotations, anotacje w formacie kanał-IOB, np. NP-I oddzielane przecinkami.

  • ,no_set_disamb — zakłada że wczytywane leksemy nie są disambowe (format nie zawiera informacji o tym), domyślnie zakłada się, że są. todo: niespójne

Formaty wyjściowe

Dostępne formaty: ccl iob-chan none orth plain premorph rft stat xces

Ponownie znany i lubiany XCES

XCES zapisuje chunki i zdania, brak spacji przed tokenem oznacza tagiem <ns/>. Zapisuje tez atrybuty chunków.

  • ,flat — wyłącza generowanie wcięć w wynikowym XMLu
  • ,chunk — ???
  • ,nochunk — ???
  • ,nodisamb — wypisuje leksemy bez znaczników disamb
  • ,sorttags — sortuje leksemy (deterministycznie)
  • ,split — Dzieli wyjście na chunki tam, gdzie zdanie zaczyna się tokenem przd którym były 2 lub więcej nowych linii (ws = ManyNewlines)
  • ,ws — wypisuje pełne informacje o białych znakach przed tokenem w postaci atrybutu ws="none" (przykładowo) na elementach <tok>.

CCL

Takie same opcje, jak XCES.

IOB-CHAN

Format tabelaryczny z anotacjami. Zapisuje jeden tzw. najlepszy leksem z tokenu.

  • ,nowarn — wyłącza ostrzeganie o np. braku leksemów w tokenie
  • ,noforce — nie wymusza konwersji wewnętrznej zapisu anotacji w postaci indeksów segmentów na IOB przed zapisem (to nie jest ładne)

Format RFTaggera i podobne

Format zgodny z RFTaggerem, plus dialekty. Domyślnie rozdziela kategorie kropkami, a brak atrybutu opcjonalnego zaznacza wstawiają nazwę kategorii. DomuyZapisuje jeden tzw. najlepszy leksem z tokenu.

  • ,mbt — rozdziela zdania <utt> a nie pustą linią
  • ,nowarn — wyłącza ostrzeganie o np. braku leksemów w tokenie
  • ,colon — zapisuje tagi w zwykły sposób, czyli inf:perf a nie inf.perf
  • ,alltags — zapisuje wszystkie tagi (oddzielone tabami)
  • ,opt — zapisuje brakujące atrybuty opcjonalne w zwykły sposób (pomijając je), a nie jako nazwę kategorii
  • ,latin2 — konwertuje wyjście do iso8859-2 todo: brzydkie

Brak wyjścia

none powoduje, że nie jest wypisywane nic. Szybsze i czasami prostsze od przekierowywania wyjścia na /dev/null. Nie ma opcji.

Same orthy

Format orth zapisuje same formy napotkane, bez informacji o leksemach etc. Domyślnie zapisuje jeden orth w linii i oddziela zdania pustą linią.
  • ,actual_ws — rozdziela tokeny w przybliżeniu takimi białymi znakami, jakie były w tekście (powinno dać w rezultacie tekst prawie identyczny z wejściowym czystym tekstem przed Macaniem)
  • ,end_nl — Dopsuje nową linię na końcu wszystkiego

Premorph

Zapis premorph jest podobny do orth,actual_ws, z tym, że tworzy premorpha.
  • ,chunk — wymusza <chunk> naokoło wszystkiego todo: po co, czy działa spójnie

Prosty format tekstowy

plain to prosty format tabelaryczno-liniowy do testów. Wypisuje orth i informację o białych znakach, a w kolejnych liniach leksemy tokenu wcięte tabem w postaci \tlemma\ttag\tdisamb (tagi niedisambowe nie mają oznaczenia disamb). Koniec zdania oznaczany jest pustą linią, koniec chunka kolejną. Brak informacji o metadanych chunka.

  • ,nows — nie zaznacza informacji o białych znakach po orcie tokenu
  • ,no_disamb_info — nie zanzacza disambów
  • ,disamb_only — wypisuje tylko leksemy z disambem
  • ,ds — alias na ,no_disamb_info,disamb_only — wypisuje tylko leksemy z disambem, ale nie oznacza ich znacznikiem

Podgląd anotacji

stat pokazuje tylko pierwsze litery tokenów oraz anotacje w zdaniach w kompaktowej formie. Nie ma opcji.

Przykłady danych w różnych formatach

CCL bez anotacji

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cesAna SYSTEM "xcesAnaIPI.dtd">
<chunkList xmlns:xlink="http://www.w3.org/1999/xlink">
 <chunk id="ch1" type="p">
  <sentence>
   <tok>
    <orth>Ala</orth>
    <lex><base>al</base><ctag>subst:sg:gen:m1</ctag></lex>
    <lex><base>al</base><ctag>subst:sg:acc:m1</ctag></lex>
    <lex><base>ala</base><ctag>subst:sg:nom:f</ctag></lex>
   </tok>
   <tok>
    <orth>ma</orth>
    <lex><base>mieć</base><ctag>fin:sg:ter:imperf</ctag></lex>
    <lex><base>mój</base><ctag>adj:sg:nom:f:pos</ctag></lex>
   </tok>
   <tok>
    <orth>kota</orth>
    <lex><base>kot</base><ctag>subst:sg:gen:m2</ctag></lex>
    <lex><base>kot</base><ctag>subst:sg:acc:m2</ctag></lex>
    <lex><base>kota</base><ctag>subst:sg:nom:f</ctag></lex>
   </tok>
   <ns/>
   <tok>
    <orth>.</orth>
    <lex><base>.</base><ctag>interp</ctag></lex>
   </tok>
  </sentence>
 </chunk>
</chunkList>

CCL

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cesAna SYSTEM "xcesAnaIPI.dtd">
<chunkList xmlns:xlink="http://www.w3.org/1999/xlink">
 <chunk id="ch1" type="p">
  <sentence>
   <tok>
    <orth>Ala</orth>
    <lex><base>al</base><ctag>subst:sg:gen:m1</ctag></lex>
    <lex><base>al</base><ctag>subst:sg:acc:m1</ctag></lex>
    <lex><base>ala</base><ctag>subst:sg:nom:f</ctag></lex>
    <ann chan="NP">1</ann>
    <ann chan="ZX">1</ann>
    <ann chan="ZZZ">0</ann>
   </tok>
   <tok>
    <orth>ma</orth>
    <lex><base>mieć</base><ctag>fin:sg:ter:imperf</ctag></lex>
    <lex><base>mój</base><ctag>adj:sg:nom:f:pos</ctag></lex>
    <ann chan="NP">0</ann>
    <ann chan="ZX">1</ann>
    <ann chan="ZZZ">0</ann>
   </tok>
   <tok>
    <orth>kota</orth>
    <lex><base>kot</base><ctag>subst:sg:gen:m2</ctag></lex>
    <lex><base>kot</base><ctag>subst:sg:acc:m2</ctag></lex>
    <lex><base>kota</base><ctag>subst:sg:nom:f</ctag></lex>
    <ann chan="NP">2</ann>
    <ann chan="ZX">0</ann>
    <ann chan="ZZZ">0</ann>
   </tok>
   <ns/>
   <tok>
    <orth>.</orth>
    <lex><base>.</base><ctag>interp</ctag></lex>
    <ann chan="NP">0</ann>
    <ann chan="ZX">0</ann>
    <ann chan="ZZZ">1</ann>
   </tok>
  </sentence>
 </chunk>
</chunkList>

XCES

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cesAna SYSTEM "xcesAnaIPI.dtd">
<cesAna xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" type="lex disamb">
<chunkList>
<chunk type="s">
<tok>
<orth>Ala</orth>
<lex><base>al</base><ctag>subst:sg:gen:m1</ctag></lex>
<lex><base>al</base><ctag>subst:sg:acc:m1</ctag></lex>
<lex><base>ala</base><ctag>subst:sg:nom:f</ctag></lex>
</tok>
<tok>
<orth>ma</orth>
<lex><base>mieć</base><ctag>fin:sg:ter:imperf</ctag></lex>
<lex><base>mój</base><ctag>adj:sg:nom:f:pos</ctag></lex>
</tok>
<tok>
<orth>kota</orth>
<lex><base>kot</base><ctag>subst:sg:gen:m2</ctag></lex>
<lex><base>kot</base><ctag>subst:sg:acc:m2</ctag></lex>
<lex><base>kota</base><ctag>subst:sg:nom:f</ctag></lex>
</tok>
<ns/>
<tok>
<orth>.</orth>
<lex><base>.</base><ctag>interp</ctag></lex>
</tok>
</chunk>
</chunkList>
</cesAna>

RFT

Ala     subst.sg.nom.f
ma      adj.sg.nom.f.pos
kota    subst.sg.nom.f
.       interp


(pusta linia na końcu)

IOB-CHAN bez anotacji

Ala     ala     subst:sg:nom:f
ma      mój     adj:sg:nom:f:pos
kota    kota    subst:sg:nom:f
.       .       interp

(pusta linia na końcu, znaki tabulacji na końcach lini 1-4)

IOB-CHAN

Ala     ala     subst:sg:nom:f     NP-B,ZX-B,ZZZ-O
ma      mój     adj:sg:nom:f:pos   NP-O,ZX-I,ZZZ-O
kota    kota    subst:sg:nom:f     NP-B,ZX-O,ZZZ-O
.       .       interp     NP-O,ZX-O,ZZZ-B

Plain

Ala
        al      subst:sg:gen:m1
        al      subst:sg:acc:m1
        ala     subst:sg:nom:f     disamb
ma
        mieć    fin:sg:ter:imperf  disamb
        mój     adj:sg:nom:f:pos
kota
        kot     subst:sg:gen:m2
        kot     subst:sg:acc:m2    disamb
        kota    subst:sg:nom:f
.
        .       interp  disamb