CCL¶
CCL jest prostym 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:
- formy napotkane z tekstu (znacznik <orth>)
- listy leksemów zaproponowanych przez tager (znaczniki <lex>), które zawierają:
- lemat (<base>)
- tag morfosyntaktyczny w formacie NKJP (<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>