CCL jest formatem XML do reprezentacji otagowanego i anotowanego tekstu. Format CCL wywodzi się z formatu XCES. Zakłada podział tekstu na fragmenty, zdania i tokeny. Tokeny opisane są formą tekstową, listą analiz morfosynaktycznych oraz listą anotacji, do których należy token. Analiza morfologiczna składa się z formy bazowej i tagu morfologicznego.
<?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>
Główny znacznik zawiera listę chunków (fragmentów tekstów, np. paragrafów). Każdy chunk składa się ze zdań (znacznik sentence). Zdanie jest listą tokenów (znacznik <tok>
) i znaczników <ns/>
informujących o braku spacji przed tokenem.
Każdy token składa się z:
<orth>
)<lex>
), które zawierają:
<base>
)<ctag>
)Taki plik uzyskiwany jest na wyjściu analizatora morfo-syntaktycznego (tagera WCRFT2). Kolejne narzędzia do przetwarzania języka polskiego mogą te informacje wzbogacać. Wykorzystuje się do tego mechanizm anotacji (znacznik <ann>
). Każda anotacja związana jest z kanałem, którego nazwa określona jest przez wartość atrybutu chan, a wartość (wartość znacznika <ann>
) jest liczbą naturalną. Wartość zero oznacza, że dany token nie jest związany z daną anotacją. Te same wartości znacznika <ann>
w tokenach w obrębie jednego zdania oznaczają, że dana anotacja rozciąga się na takie znaczniki.
Przykład pliku CCL z anotacjami wyznaczonymi przez narzędzie Liner2 pokazana poniżej. Wartości atrybutów chan są nazwami klas anotacji wyznaczanych przez Liner2 (mogą się różnić w zależności od użytego modelu).
<?xml version="1.0" ?>
<chunkList>
<chunk>
<sentence>
<tok>
<orth>Pani</orth>
<lex><base>pani</base><ctag>subst:sg:nom:f</ctag></lex>
<lex><base>pani</base><ctag>subst:sg:gen:f</ctag></lex>
<lex><base>pani</base><ctag>subst:sg:dat:f</ctag></lex>
<lex><base>pani</base><ctag>subst:sg:loc:f</ctag></lex>
<lex><base>pani</base><ctag>subst:sg:voc:f</ctag></lex>
<ann chan="person_nam">0</ann>
<ann chan="person_first_nam">0</ann>
<ann chan="city_nam">0</ann>
<ann chan="person_last_nam">0</ann>
</tok>
<tok>
<orth>Ala</orth>
<lex><base>Ala</base><ctag>subst:sg:nom:f</ctag></lex>
<ann chan="person_nam">1</ann>
<ann chan="person_first_nam">1</ann>
<ann chan="city_nam">0</ann>
<ann chan="person_last_nam">0</ann>
</tok>
<tok>
<orth>Nowak</orth>
<lex><base>Nowak</base><ctag>subst:sg:nom:m1</ctag></lex>
<ann chan="person_nam">1</ann>
<ann chan="person_first_nam">0</ann>
<ann chan="city_nam">0</ann>
<ann chan="person_last_nam">1</ann>
</tok>
<tok>
<orth>mieszka</orth>
<lex><base>mieszkać</base><ctag>fin:sg:ter:imperf</ctag></lex>
<ann chan="person_nam">0</ann>
<ann chan="person_first_nam">0</ann>
<ann chan="city_nam">0</ann>
<ann chan="person_last_nam">0</ann>
</tok>
<tok>
<orth>w</orth>
<lex><base>w</base><ctag>prep:acc:nwok</ctag></lex>
<lex><base>w</base><ctag>prep:loc:nwok</ctag></lex>
<lex><base>wiek</base><ctag>brev:pun</ctag></lex>
<lex><base>wielki</base><ctag>brev:pun</ctag></lex>
<lex><base>wiersz</base><ctag>brev:pun</ctag></lex>
<lex><base>wieś</base><ctag>brev:pun</ctag></lex>
<lex><base>wyspa</base><ctag>brev:pun</ctag></lex>
<ann chan="person_nam">0</ann>
<ann chan="person_first_nam">0</ann>
<ann chan="city_nam">0</ann>
<ann chan="person_last_nam">0</ann>
</tok>
<tok>
<orth>Warszawie</orth>
<lex><base>Warszawa</base><ctag>subst:sg:dat:f</ctag></lex>
<ann chan="person_nam">0</ann>
<ann chan="person_first_nam">0</ann>
<ann chan="person_last_nam">0</ann>
<ann chan="city_nam">1</ann>
</tok>
</sentence>
</chunk>
</chunkList>