Flerspråkig NER: Utmaningar vid PII-detektering
Uppdaterad för 2026
Noggrannhetsgapet
NER-modeller tränade på engelska når 85–92% F1 på standardtester. Applicera samma modeller på arabisk eller kinesisk text. Noggrannheten sjunker till 50–70%.
För PII-arbete är det gapet ett problem. En träffrate på 70% innebär att 30% av känslig data förblir oupptäckt.
Orsakerna är inte buggar. De kommer från hur skriftsystem skiljer sig åt.
Fyra grundorsaker
1. Ordgränser
Engelska delar ord med mellanslag. Tokenisering är enkel.
Kinesiska har inga mellanslag alls.
``` "张伟住在北京" → Dela först: ["张伟", "住在", "北京"] ```
En modell kan inte märka vad den inte kan hitta. Uppdelning måste komma före NER.
Arabiska binder ihop bokstäver inom ett ord. Korta vokaler utelämnas. Text löper från höger till vänster.
``` "محمد يعيش في دبي" → Inga korta vokaler, höger till vänster, bundna bokstäver ```
2. Morfologi
Engelska verb förändras på några få sätt. Arabiska använder ett rotsystem. En rot skapar dussintals ord.
``` كتب (k-t-b, "skriva") → كاتب (författare), كتاب (bok), مكتبة (bibliotek) ```
NER måste tolka rötter för att hitta namn i härledda ordformer.
3. Namnkonventioner
Latinska namn placerar förnamnet före efternamnet. Namn i RTL-språk kedjar familjeband.
``` محمد بن عبد الله (Muhammad son till Abdullah) ```
Kinesiska namn sätter familjenamnet först. De flesta namn är två eller tre tecken långa.
``` 张伟 (Zhang Wei) — 2 tecken 欧阳修 (Ouyang Xiu) — 3 tecken ```
En modell byggd på västerländska namnmönster missar dessa strukturer.
4. Textriktning
En del språk löper från höger till vänster. När RTL-text innehåller ett engelskt namn splittras visuell ordning och logisk ordning. Detta kallas BiDi-text. Det kräver noggrann tolkning.
F1-poäng per skriftsystem
| Språk | Skriftsystem | F1-intervall | Nivå |
|---|---|---|---|
| Engelska | Latinskt | 85–92% | Låg |
| Tyska | Latinskt | 82–88% | Låg |
| Franska | Latinskt | 80–87% | Låg |
| Spanska | Latinskt | 81–86% | Låg |
| Ryska | Kyrilliskt | 75–83% | Medel |
| Arabiska | Abjad | 55–75% | Hög |
| Kinesiska | Hanzi | 60–78% | Hög |
| Japanska | Blandat | 65–80% | Hög |
| Thailändska | Thailändskt | 50–70% | Mycket hög |
| Hindi | Devanagari | 60–75% | Hög |
Icke-latinska system och saknade ordmellanslag sänker poängen generellt.
Trelagers lösning
Vi använder tre lager för att täcka 48 språk och skriftsystem.
Lager 1: spaCy — 25 språk
För språk med starka, testade modeller. Det täcker engelska, tyska, franska, spanska, italienska, portugisiska, holländska, polska, ryska och grekiska.
Lager 2: Stanza — Komplexa språk
Stanford Stanza hanterar arabiska, kinesiska, japanska och koreanska. Det utför orduppdelning och rotanalys före NER.
Lager 3: XLM-RoBERTa — Lågresursspråk
För språk utan dedikerade modeller. Thailändska, vietnamesiska, hindi, bengali, hebreiska, turkiska och persiska placeras här. Det hanterar blandspråkig text utan explicita flaggor.
RTL och BiDi
Höger-till-vänster-text kräver extra steg utöver uppdelning.
Vår pipeline:
- Normaliserar text till logisk ordning.
- Kör NER på den ordningen.
- Mappar entiteternas positioner tillbaka till visuell ordning.
Vi tar bort bundna prefix före NER och lägger till dem igen efteråt.
``` "محمد" — namn enbart "لمحمد" — "till Muhammad" (prefix på) ```
Kodväxling
Verkliga dokument blandar ofta språk på en enda rad.
``` "El meeting con John es at 3pm" "我今天跟John去shopping" ```
Vår pipeline delar upp efter språk. Den kör rätt modell på varje del. Sedan sammanfogar den resultat med positionsmappning.
Interna benchmarks
Resultat från interna tester på flerspråkig data:
| Scenario | F1 |
|---|---|
| Endast engelska | 91% |
| Endast tyska | 88% |
| Endast arabiska | 79% |
| Endast kinesiska | 81% |
| Engelska-arabiska mix | 83% |
| Engelska-kinesiska mix | 84% |
| Engelska-tyska mix | 89% |
Installationsanmärkningar
Skrivbordsappen identifierar automatiskt språk per dokument. För filer med blandade språk bearbetar den varje segment med rätt modell. Inget manuellt steg krävs.
Ange språket i API:t när du vet det:
```json { "text": "محمد بن عبد الله", "language": "ar" } ```
Använd auto-detektering när du inte vet:
```json { "text": "محمد بن عبد الله", "language": "auto" } ```
Anpassade mönster bör täcka lokala siffror:
```
Latinskt medarbetar-ID
EMP-[0-9]{6}
Arabiskt medarbetar-ID (inkluderar arabisk-indiska siffror)
موظف-[٠-٩0-9]{6} ```
Se den fullständiga entitetslistan. För API-installation, besök API-funktionssidan. Vår GDPR-efterlevnadsguide täcker hur detekteringsluckor påverkar dataskyddslagstiftningen.
anonym.legal använder en trelagers NER-stack — spaCy, Stanza och XLM-RoBERTa — för att täcka 48 språk med konsekvent PII-detektering.