Tokenizace je takové zpracování textu, při němž se identifikují jednotlivé řetězce, zvané tokeny, které se pak značkují jako oddělené, nezávislé elementy – slovní tvary. Každému z nich je v dalším průběhu zpracování přiřazena při morfologické analýze množina dvojic typu (lemma, značka). Popis tokenizace úzce souvisí s obsahem kapitoly Symboly # 08-13.
V § 2 stručně představíme problém tokenizace jakožto identifikaci tokenů v textu a v § 3 uvedeme hlavní zásady, jimiž by se tokenizace měla řídit.
Tokenem je v textu typicky řetězec od mezery k mezeře, tzv. ortografické slovo. Například ve větě:
Chcete-li přispět na dobročinný účel, vložte do kasičky peníze; výtěžek půjde do haitského hlavního města Port-au-Prince.
jsou kandidáty na tokeny tyto řetězce nacházející se mezi mezerami:
Chcete-li
přispět
na
dobročinný
účel,
vložte
do
kasičky
peníze;
výtěžek
půjde
do
haitského
hlavního
města
Port-au-Prince.
Je však vhodné netokenizovat slovo spolu s těsně (zleva/zprava) nalepenými interpunkčními znaménky, tedy ortografické slovo (mezi mezerami), jako jeden token, ale interpunkční znaménka vydělit – jak bývá při tokenizacích běžné – jako separátní tokeny. Vhodnější je tedy tato tokenizace:
Chcete
-
li
přispět
na
dobročinný
účel
,
vložte
do
kasičky
peníze
;
výtěžek
půjde
do
haitského
hlavního
města
Port-au-Prince nebo: Port / - / au / - / Prince
.
Zde jsou od slov oddělena interpunkční znaménka: čárka, středník, koncová tečka. Spojovník „-“ v řetězci Chcete-li je tu značkován jako separátní token. Může být vydělen jako separátní token v řetězci Port-au-Prince.
V této části uvedeme pravidla a zásady, jimiž by se měla tokenizace řídit. Především navrhujeme dvouúrovňovou/dvoufázovou tokenizaci, při níž:
(i) se na 1. úrovni (v první fázi) text co nejvíce tokenizuje na nejmenší jednotky, tj. tokeny, aby bylo možné tyto jednotky studovat odděleně, tj. jako takové
(ii) se na 2. úrovni (v druhé fázi) některé tokeny, jež vznikly v první fázi, mohou spojit ve větší token, který pak vstupuje do další lingvistické anotace.
Při zpracování textu je první fáze obligatorní, druhá se může řídit potřebami daného projektu/záměru.
Není-li řečeno jinak (tj. není-li zmínka o 2. úrovni tokenizace), míní se tokenizace na 1. úrovni jakožto tokenizace definitivní, po níž už nedochází k tokenizaci na 2. úrovni.
Pravidla:
1. Řetězec sestávající pouze z písmen a/nebo číslic
Je-li v textu řetězec sestávající pouze z písmen a/nebo číslic (chlapec, 2826, 5kilovému) a oddělený od ostatního textu z obou stran mezerou / tvrdou mezerou (koncem řádky), je to token.
Příklad:
Ve větě:
Včera dostal 5000 korun, které musel vymáhat.
jsou řetězce Včera, dostal, 5000, které a musel tokeny.
2. Ortografický řetězec STR
Je-li v textu ortografický řetězec STR (řetězec z obou stran oddělený mezerou / tvrdou mezerou (koncem řádky) sestávající ze zřetězení dvou podřetězců:
STR1.INTP, kde
STR1 je neprázdný řetězec skládající se jen z písmen a/nebo číslic
INTP je neprázdná posloupnost symbolů, tj. interpunkčních znamének nebo znaků (srov. kapitolu Symboly # 08-13, § 2.1), kterými jsou:
tečka.
čárka,
středník;
dvojtečka:
tři tečky:…
vykřičník nebo posloupnost vykřičníků:!!!!!!!!!...
otazník nebo posloupnost otazníků:?????????...
uvozovky libovolného typu
apostrof libovolného typu
pomlčka: –
matematické operátory a relace: + – ± × / \ * = <>
různé znaky: ¬ & % † § Ø © ™ $ £ € a dále závorky a šipky
pak:
● řetězec STR1 tvoří token
● řetězec INTP buď tvoří token, nebo posloupnost tokenů.
Příklad:
Ve větě:
Včera dostal 5000 korun, které musel vymáhat.
jsou (mimo řetězce Včera, dostal, 5000, které a musel) řetězce korun, čárka, vymáhat a tečka tokeny.
Ve větě:
Byl případ, který se propíral v tisku, typický pro českou politickou scénu??
jsou (mimo řetězce Byl, který, se, propíral, v, typický, pro, českou, politickou) i řetězce případ, tisku, čárka a dvojice “??” samostatné tokeny.
3. Neprázdný ortografický řetězec STR
Je-li v textu neprázdný ortografický řetězec STR (řetězec z obou stran obklopený mezerou / tvrdou mezerou (koncem řádky) sestávající ze zřetězení dvou podřetězců:
INTP.STR2, kde
INTP je neprázdná posloupnost symbolů jako výše
STR2 je neprázdný řetězec skládající se jen z písmen a/nebo číslic
pak:
● řetězec INTP buď tvoří token, nebo posloupnost tokenů
● řetězec STR2 tvoří token.
Příklad:
Ve větě:
(„Nikdy jste si nemysleli, že je to tak špatné?)
jsou (mimo řetězce jste, si, nemysleli, čárku, že, je, to, tak, špatné, otazník, pravou závorku) i tyto tokeny:
levá závorka (viz níže), počáteční uvozovky, řetězec Nikdy.
4. Posloupnost otazníků, resp. vykřičníků
Posloupnost otazníků, resp. vykřičníků tvoří jeden token, jehož lemma je normalizované: představuje je jediný reprezentující znak: vykřičník, resp. otazník.
5. Řetězec?!,?!?!,?!?!?!...
Řetězec?!,?!?!,?!?!?!... tvoří vždy jeden token, jehož lemma je normalizované:?!.
6. Řetězec!?,!?!?,!?!?!?...
Řetězec!?,!?!?,!?!?!?... tvoří jeden token, jehož lemma je normalizované:!?.
7. Ortografický řetězec tvořený posloupností odlišných symbolů
Ortografický řetězec tvořený posloupností odlišných symbolů, tj. interpunkčních znamének a/nebo znaků (srov. kapitolu Symboly # 08-13), se tokenizuje tak, že jednotlivé symboly budou tokeny.
Například posloupnost („
se skládá z tokenu “(“ a tokenu “„“.
8. Pomlčka a spojovník/rozdělovník
Na 1. úrovni tokenizace bude spojovník, rozdělovník a pomlčka představovat vždy samostatný token. Jednotlivé typy se liší podle případné tokenizace na 2. úrovni.
8.1 Typ číslo1-číslo2
Číslo1, číslo2 i pomlčka a spojovník/rozdělovník jsou samostatné tokeny.
Například ve větě:
Bylo tam 13–18 děvčat. (s pomlčkou)
Bylo tam 13-18 děvčat. (se spojovníkem)
je pomlčka i spojovník token:
Tvar
Lemma
Značka
13
13
POS=C & SUB== (číslovka psaná číslicemi)
-/ –
- / - (normalizace)
POS=Z & SUB=z (interpunkční znaménko nepárové)
18
18
POS=C & SUB== (číslovka psaná číslicemi)
8.2 Typ chcete-li
Ortografický řetězec chcete-li bude tokenizován na tři tokeny, z nichž druhý je spojovník:
Tvar
Lemma
Značka
chcete
chtít
POS=V (sloveso)
-
-
POS=Z & SUB=z (interpunkční znaménko nepárové)
li
li
POS=J & SUB=, (spojka podřadicí)
8.3. Typ česko-německého
Ortografický řetězec česko-německého bude tokenizován na 1. úrovni tokenizace na tři tokeny, z nichž druhý je spojovník:
Tvar
Lemma
Značka
česko
česko
POS=S & SUB=P (prefixový segment)
-
-
POS=Z & SUB=z (interpunkční znaménko nepárové)
německého
německý
POS=A & SUB=0 (adjektivum typu ostatní)
Na 2. úrovni tokenizace lze spojit tři tokeny z 1. fáze v jediný, který pak bude lemmatizován a značkován takto:
Tvar
Lemma
Značka
česko-německého
česko-německý
POS=A & SUB=0 (adjektivum ostatní)
8.4 Typ člověka-obojživelníka
Ortografický řetězec člověka-obojživelníka bude tokenizován na tři tokeny, z nichž druhý je spojovník:
Tvar
Lemma
Značka
člověka
člověk
POS=N & SUB=0 (substantivum ostatní)
-
-
POS=Z & SUB=z (interpunkční znaménko nepárové)
obojživelníka
obojživelník
POS=N & SUB=0 (substantivum ostatní)
Podobně: Filozof-peripatetik, prezident-Osvoboditel
8.5 Typ Hodinová-Spurná a Hodinová–Spurná
Ortografický řetězec Hodinová-Spurná (se spojovníkem), resp. Hodinová–Spurná (s pomlčkou), je tokenizován na 1. úrovni takto:
Tvar
Lemma
Značka
Hodinová
Hodinová
POS=N & SUB=0... (ostatní substantivum)
-/ –
- / - (normalizace)
POS=Z & SUB=z (interpunkční znaménko nepárové)
Spurná
Spurná
POS=N & SUB=0... (ostatní substantivum)
Na 2. úrovni tokenizace lze spojit tři tokeny z 1. fáze (Hodinová, spojovník a Spurná) v jediný:
Tvar
Lemma
Značka
Hodinová-Spurná
Hodinová-Spurná
POS=N & SUB=0... (ostatní substantivum)
8.6 Typ tří- a čtyřlůžkovém pokoji (prefixový segment)
Ve větách typu:
Bydlel v tří- a později čtyřlůžkovém pokoji.
bude ortografický řetězec tří- tokenizován na dva tokeny, z nichž druhý je spojovník:
Tvar
Lemma
Značka
tří
tří
POS=S & SUB=P (prefixový segment)
-
-
POS=Z & SUB=z (interpunkční znaménko nepárové)
8.7 Typ 5-ti
Ve větě typu:
Bydleli nejprve po 5-ti a pak po čtyřech.
se řetězec 5-ti tokenizuje na 1. úrovni tokenizace na tři tokeny, z nichž druhý je spojovník:
Tvar
Lemma
Značka
5
5
POS=C & SUB= = (číslo psané číslicemi)
-
-
POS=Z & SUB=z (interpunkční znaménko nepárové)
ti
ti
POS=S & SUB=S (sufixový segment)
Na 2. úrovni tokenizace je pro řadu aplikací vhodné slepit jednotlivé tokeny z 1. úrovně tokenizace v jediný token:
Tvar
Lemma
Značka
5-ti
pět
POS=C & SUB=z & FMU=č... (základní číslovka se zvláštní číselnou mutací)
8.8 Typ Sainte-Germaine-de-Près
Řetězec Sainte-Germaine-de-Près se na 1. úrovni tokenizace tokenizuje na sedm tokenů:
Tvar
Lemma
Značka
Sainte
Sainte
POS=F (cizí slovo)
-
-
POS=Z & SUB=z (interpunkční znaménko nepárové)
Germaine
Germaine
POS=F (cizí slovo)
-
-
POS=Z & SUB=z (interpunkční znaménko nepárové)
de
de
POS=F (cizí slovo)
-
-
POS=Z & SUB=z (interpunkční znaménko nepárové)
Près
Près
POS=F (cizí slovo)
Na 2. úrovni tokenizace je pro řadu aplikací vhodné slepit jednotlivé tokeny z 1. úrovně tokenizace v jediný token:
Tvar
Lemma
Značka
Sainte-Germaine-de-Près
Sainte-Germaine-de-Près
POS=F (cizí slovo)
Podobně: řetězec Jang-c’tiang se na 1. úrovni rozdělí na pět tokenů:
Jang, -, c, ’, tiang
a na 2. úrovni se tyto tokeny slepí do jednoho původního substantivního řetězce.
Podobně by se tokenizoval například řetězec cha-cha (tanec) na:
tři tokeny na 1. úrovni tokenizace: cha, -, cha
jediný token na 2. úrovni tokenizace: cha-cha
Podobně: wi-fi, Wi-fi, WI-fi, Wi-Fi, Wi-fi
9. Typ km/h
Řetězec km/h (kilometrů za hodinu) se tokenizuje na tři tokeny:
km, /, h
Podobně bude řetězec Brouk/Babka rozdělen na tři tokeny:
Brouk, /, Babka
10. Nepárový apostrof/čárka
Nepárový apostrof (někdy chybně psaný jako čárka) je v některých případech samostatný token, v jiných nikoli.
V anglických jménech typu O’Connor, MacDonalds’s se apostrof nevyděluje na 1. úrovni tokenizace od svého okolí jako zvláštní token:
Tvar
Lemma
Značka
O’Connor
O’Connor
POS=N & SUB=0 ... (nedeverbativní substantivum)
MacDonalds’s
MacDonalds’s
POS=N & SUB=0 ... (nedeverbativní substantivum)
Je ovšem samozřejmě možné rozdělit uvedené řetězce na 1. úrovni tokenizace na tři tokeny a pak je na 2. úrovni tokenizace spojit v jediný.
Vyjadřuje-li apostrof apokopu, tvoří samostatný token. Tak ve větě:
Nemoh’ tam aspoň přijít?
Bude ortografický řetězec Nemoh’ rozdělen na dva tokeny:
Tvar
Lemma
Značka
Nemoh
moci
POS=V & SUB=0 & VRB=L (apokopa l-ového příčestí)
’
’
POS=Z & SUB=z (interpunkční znaménko nepárové)
Případy typu:
’Se ví, ne? (s jednoduchou uvozovkou typu 9 nahoře)
'Se ví, ne? (s rovným apostrofem)
´Se ví, ne? (mylně s čárkou)
A podobně všechna nepárová užití apostrofů a pseudoapostrofů v takovýchto pozicích
doporučujeme tokenizovat takto:
Tvar
Lemma
Značka
’ / ´ / '
' (normalizovaný apostrof)
POS=Z & SUB=z (interpunkční znaménko nepárové)
Se
se
POS=P & SUB=o & DEI=S (osobní zvratné zájmeno)
11. Typ manžel/ka (sufixový segment)
Řetězec manžel/ka bude tokenizován na tři tokeny, z nichž druhý je lomítko, třetí pak sufixový segment:
Tvar
Lemma
Značka
manžel
manžel
POS=N & SUB=0 (substantivum ostatní)
/
/
POS=Z & SUB=z (interpunkční znaménko nepárové)
ka
ka
POS=S & SUB=P (sufixový segment)
12. Tečka
Tečka je znak vícenásobně homonymní. Probereme hlavní případy:
12.1 Tečka ukončující větu
Není-li tečka součástí elipsy (tří teček) a ukončuje větu, tvoří samostatný token. Ve větě:
Nebylo jasné, kam šel.
je ortografický řetězec šel. rozdělen na tyto tokeny:
Tvar
Lemma
Značka
šel
jít
POS=V & SUB=0 & VRB=L (sloveso v l-ovém příčestí)
.
.
POS=Z & SUB=z (interpunkční znaménko nepárové)
12.2 Tečka ukončující zkratku uvnitř věty
Není-li tečka součástí elipsy a ukončuje-li zkratku uvnitř věty, netvoří samostatný token.
Ve větě:
Roku 43 př. Kr. zemřel Caesar.
je vhodné tokenizovat jak ortografický řetězec př., tak ortografický řetězec Kr. jako jeden token:
Tvar
Lemma
Značka
př.
př
POS=R & ABR=+ (zkratka předložky)
Kr.
Kr
POS=N & SUB=0 & ABR=+ (zkratka ostatního substantiva)
12.3 Tečka ukončující zkratku a zároveň větu
Není-li tečka součástí elipsy a ukončuje-li zkratku a zároveň větu, tvoří samostatný token. Ve větě:
Caesar zemřel roku 43 př. Kr.
je vhodné ortografický řetězec Kr. tokenizovat jako dva tokeny:
Tvar
Lemma
Značka
Kr
Kr
POS=N & SUB=0 & ABR=+ (substantivum ostatní, zkratka)
.
.
POS=Z & SUB=z (interpunkční znaménko nepárové)
Tečka na konci věty je haplologií tečky ukončující zkratku a tečku ukončující větu. Uvedená tokenizace preferuje tečku ukončující větu.
Obecně: zkratku zakončenou tečkou lze lemmatizovat buď s koncovou tečkou, nebo bez ní. V uvedených příkladech uvádíme variantu bez tečky.
Podobně by se zpracovaly případy: s.r.o. (3 tokeny: s., r., o.), př.n.l. (3 tokeny: př., n., l.).
Problematika identifikace vět a zkratek, které mohou/nemohou být na konci věty, je pojednána v kapitole Větná segmentace # 03, § 2.1.
12.4 Typ s iniciálami: T.G.M.
Řetězec T.G.M. uprostřed věty je vhodné tokenizovat takto:
Tvar
Lemma
Značka
T.
T
POS=N & SUB=0 & ABR=+ (substantivum ostatní, zkratka)
G.
G
POS=N & SUB=0 & ABR=+ (substantivum ostatní, zkratka)
M.
M
POS=N & SUB=0 & ABR=+ (substantivum ostatní, zkratka)
Na konci věty pak jako:
Tvar
Lemma
Značka
T.
T
POS=N & SUB=0 & ABR=+ (substantivum ostatní, zkratka)
G.
G
POS=N & SUB=0 & ABR=+ (substantivum ostatní, zkratka)
M
M
POS=N & SUB=0 & ABR=+ (substantivum ostatní, zkratka)
.
.
POS=Z & SUB=z (interpunkční znaménko nepárové)
12.5 Čárka/Tečka v necelém čísle
Polyfunkční čárka, resp. tečka se může objevit v česky, resp. anglicky psaném čísle, např. 3,141597, resp. 3.141597. Navrhujeme tokenizovat jako jediný token POS=C & SUB==, čárka, resp. tečka je tu tedy součástí tokenu.
13. Elipsa
Elipsa (výpustka) se tokenizuje jako jeden token:…, nikoli jako tři tokeny-tečky.
14. Procento
Znak % (procento) se po základní (substantivní) číslovce píše správně zvlášť:
Přišlo 10 % uchazečů.
Přišlo deset % uchazečů.
Řetězce 10, % a deset jsou samostatné tokeny.
Mylně: Přišlo 10% uchazečů.
V adjektivním užití je naopak spojení číslem psané číslovky se znakem %:
Došlo k 15% nárůstu porodnosti.
Mylně: Chlubíme se 15 % nárůstem porodnosti.
Nesprávně zapsaný řetězec 15% nedoporučujeme tokenizovat jako dva tokeny 15 a %, doporučujeme naopak tokenizovat jako jeden token: 15%.
15. Ostatní znaky
Ostatní znaky (viz kapitola Symboly # 08-13) by se na 1. úrovni tokenizace měly tokenizovat jako samostatné tokeny.
Příklad:
Řetězce 35° a 35°C ve větách:
Koupali se v 35° vedru.
Koupali se v 35°C vedru.
je vhodné tokenizovat takto:
Tvar
Lemma
Značka
35
35
POS=C & SUB= = (číslovka psaná číslem)
°
°
POS=Z & SUB=N (znak substantivní)
C
C
POS=N & SUB=0 & ABR=+ (substantivní zkratka)
Další možností je chápat řetězec °C jako zkratkový agregát.
Příklad:
Řetězec §2.1 ve větě:
Poté v §2.1 popíšeme vlastnosti spřežek.
je vhodné tokenizovat takto:
Tvar
Lemma
Značka
§
§
POS=Z & SUB=N (znak substantivní)
2.1
2.1
POS=C & SUB== (číslovka psaná číslem)
Je také možné na 1. úrovni tokenizace rozdělit řetězec 2.1 na tři tokeny a na 2. úrovni je slepit v jeden token.
16. Webové adresy a emaily
Webové adresy a emaily je vhodné chápat jako jeden token:
lemma(http://wiki.korpus.cz/doku.php/start?do=search&id=tokenizace&button=) = http://wiki.korpus.cz/doku.php/start?do=search&id=tokenizace&button=, POS=N
lemma(jan.dvoracek.starsi@seznam.cz) = jan.dvoracek.starsi@seznam.cz, POS=N