Vícejazyčné NER: Výzvy při detekci PII
Aktualizováno pro rok 2026
Propast v přesnosti
NER modely trénované na angličtině dosahují F1 skóre 85–92 % na standardních testech. Aplikujte tyto modely na arabský nebo čínský text — přesnost klesá na 50–70 %.
Pro ochranu PII je tato mezera problémem. Úspěšnost 70 % znamená, že 30 % citlivých dat zůstane nezachyceno.
Příčiny nejsou chyby v kódu. Vyplývají z toho, jak se jednotlivé písemné systémy od sebe liší.
Čtyři hlavní příčiny
1. Hranice slov
Angličtina odděluje slova mezerami. Tokenizace je snadná.
Čínština nepoužívá mezery vůbec.
"张伟住在北京"
→ Nejprve rozdělit: ["张伟", "住在", "北京"]
Model nemůže označit to, co nedokáže najít. Rozdělení musí předcházet NER.
Arabština spojuje písmena uvnitř slov. Krátké samohlásky se vynechávají. Text se čte zprava doleva.
"محمد يعيش في دبي"
→ Bez krátkých samohlásek, zprava doleva, propojená písmena
2. Morfologie
Anglická slovesa se mění jen několika způsoby. Arabština používá kořenový systém. Z jednoho kořene vznikají desítky slov.
كتب (k-t-b, "psát")
→ كاتب (pisatel), كتاب (kniha), مكتبة (knihovna)
NER musí analyzovat kořeny, aby v odvozených tvarech slov rozpoznal jména.
3. Jmenné konvence
Latinská jména se uvádějí jako jméno a poté příjmení. V jazycích psaných zprava doleva se řetězí rodinné vazby.
محمد بن عبد الله
(Muhammad, syn Abdulláha)
Čínská jména uvádějí příjmení na prvním místě. Většina jmen má dvě nebo tři znaky.
张伟 (Zhang Wei) — 2 znaky
欧阳修 (Ouyang Xiu) — 3 znaky
Model trénovaný na západních vzorech jmen tyto struktury přehlédne.
4. Směr textu
Některé jazyky se čtou zprava doleva. Když text psaný zprava doleva obsahuje anglické jméno, vizuální a logické pořadí se rozchází. Tato situace se nazývá BiDi text a vyžaduje pečlivé zpracování.
F1 skóre podle písemného systému
| Jazyk | Písemný systém | Rozsah F1 | Náročnost |
|---|---|---|---|
| Angličtina | Latinka | 85–92 % | Nízká |
| Němčina | Latinka | 82–88 % | Nízká |
| Francouzština | Latinka | 80–87 % | Nízká |
| Španělština | Latinka | 81–86 % | Nízká |
| Ruština | Cyrilice | 75–83 % | Střední |
| Arabština | Abjad | 55–75 % | Vysoká |
| Čínština | Hanzi | 60–78 % | Vysoká |
| Japonština | Smíšený | 65–80 % | Vysoká |
| Thajština | Thajské písmo | 50–70 % | Velmi vysoká |
| Hindština | Dévanágarí | 60–75 % | Vysoká |
Nelatinkové systémy a chybějící mezery mezi slovy snižují skóre napříč všemi jazyky.
Třívrstvé řešení
Pro pokrytí 48 jazyků a písemných systémů používáme tři vrstvy.
Vrstva 1: spaCy — 25 jazyků
Pro jazyky se silnými, otestovanými modely. Zahrnuje angličtinu, němčinu, francouzštinu, španělštinu, italštinu, portugalštinu, holandštinu, polštinu, ruštinu a řečtinu.
Vrstva 2: Stanza — složité jazyky
Stanford Stanza zpracovává arabštinu, čínštinu, japonštinu a korejštinu. Před NER provádí rozdělení slov a analýzu kořenů.
Vrstva 3: XLM-RoBERTa — jazyky s omezenými zdroji
Pro jazyky bez dedikovaných modelů. Thajština, vietnamština, hindština, bengálština, hebrejština, turečtina a perština. Zvládá vícejazyčný text bez nutnosti explicitního označení jazyka.
Text psaný zprava doleva a BiDi
Text psaný zprava doleva vyžaduje další kroky nad rámec rozdělení slov.
Naše pipeline:
- Normalizuje text do logického pořadí.
- Spustí NER na tomto pořadí.
- Mapuje pozice entit zpět na vizuální pořadí.
Před NER odstraňujeme připojené předpony a po zpracování je přidáváme zpět.
"محمد" — pouze jméno
"لمحمد" — "pro Muhammada" (s předponou)
Přepínání kódu
Reálné dokumenty často mísí jazyky v jednom řádku.
"El meeting con John es at 3pm"
"我今天跟John去shopping"
Naše pipeline rozdělí text podle jazyka, spustí správný model na každou část a poté spojí výsledky s mapováním pozic.
Interní benchmarky
Výsledky z interních testů na vícejazyčných datech:
| Scénář | F1 |
|---|---|
| Pouze angličtina | 91 % |
| Pouze němčina | 88 % |
| Pouze arabština | 79 % |
| Pouze čínština | 81 % |
| Angličtina-arabština | 83 % |
| Angličtina-čínština | 84 % |
| Angličtina-němčina | 89 % |
Poznámky k nastavení
Desktopová aplikace automaticky rozpozná jazyk u každého dokumentu. U souborů s více jazyky zpracovává každý segment správným modelem. Žádný ruční krok není potřeba.
Jazyk v API nastavte, pokud ho znáte:
{
"text": "محمد بن عبد الله",
"language": "ar"
}
Použijte automatické rozpoznávání, pokud ho neznáte:
{
"text": "محمد بن عبد الله",
"language": "auto"
}
Vlastní vzory by měly pokrývat místně specifické číslice:
# Latinské ID zaměstnance
EMP-[0-9]{6}
# Arabské ID zaměstnance (včetně arabsko-indických číslic)
موظف-[٠-٩0-9]{6}
Celý seznam entit najdete na stránce entit. Pro nastavení API navštivte stránku funkcí API. Náš průvodce GDPR vysvětluje, jak mezery v detekci ovlivňují zákon o ochraně osobních údajů.
anonym.legal používá třívrstvý NER stack — spaCy, Stanza a XLM-RoBERTa — pro pokrytí 48 jazyků s konzistentní detekcí PII.