Provocarea NER Multilingvă
Modelele Named Entity Recognition (NER) antrenate pe limba engleză obțin rezultate impresionante—scoruri F1 de 85-92% pe benchmark-uri standard. Aplicați aceleași modele pe arabă sau chineză? Acuratețea scade adesea la 50-70%.
Pentru detecția PII, această diferență este critică. O rată de detecție de 70% înseamnă 30% din datele sensibile rămân neprotejate.
De ce eșuează modelele în limba engleză
1. Limitele cuvintelor
Engleză: Cuvintele sunt separate prin spații.
"John Smith lives in New York"
→ ["John", "Smith", "lives", "in", "New", "York"]
Chineză: Fără delimitări de cuvinte.
"张伟住在北京"
→ Necesită segmentare mai întâi: ["张伟", "住在", "北京"]
Arabă: Cuvintele se conectează, iar vocalele scurte nu sunt scrise.
"محمد يعيش في دبي"
→ Script conectat, de la dreapta la stânga, vocale omise
Regulile de tokenizare din limba engleză pur și simplu nu se aplică.
2. Complexitate morfologică
Morfologie engleză: Relativ simplă
run → runs, running, ran
Morfologie arabă: Extrem de complexă (sistem rădăcină-model)
كتب (k-t-b, rădăcina "a scrie")
→ كاتب (scriitor), كتاب (carte), مكتبة (bibliotecă), يكتب (el scrie)
O singură rădăcină arabă generează zeci de cuvinte conexe. Modelele NER trebuie să înțeleagă acest sistem de derivare.
3. Convenții de denumire
Nume în limba engleză: Prenume Nume
John Smith, Mary Johnson
Nume arabe: Multiple componente
محمد بن عبد الله بن عبد المطلب
(Muhammad fiul-lui Abdullah fiul-lui Abdul-Muttalib)
Nume chineze: Nume de familie mai întâi, adesea 2-3 caractere în total
张伟 (Zhang Wei) - 2 caractere
欧阳修 (Ouyang Xiu) - 3 caractere
4. Direcția scriptului
Engleză: De la stânga la dreapta (LTR) Arabă/Ebraică: De la dreapta la stânga (RTL) Text mixt: Bidirecțional (BiDi) - extrem de complex
Când un nume în limba engleză apare în text arab:
التقيت بـ John Smith في المؤتمر
(M-am întâlnit cu John Smith la conferință)
Ordinea de redare, ordinea logică și ordinea de afișare diferă toate.
Acuratețe după limbă
Performanța NER din lumea reală variază dramatic:
| Limbă | Script | Interval F1-Score | Nivel de dificultate |
|---|---|---|---|
| Engleză | Latin | 85-92% | Scăzut |
| Germană | Latin | 82-88% | Scăzut |
| Franceză | Latin | 80-87% | Scăzut |
| Spaniolă | Latin | 81-86% | Scăzut |
| Rusă | Chirilic | 75-83% | Mediu |
| Arabă | Arabă | 55-75% | Ridicat |
| Chineză | Hanzi | 60-78% | Ridicat |
| Japoneză | Mixt | 65-80% | Ridicat |
| Tailandeză | Tailandeză | 50-70% | Foarte ridicat |
| Hindi | Devanagari | 60-75% | Ridicat |
Limbile cu morfologie complexă, scripturi non-latine sau fără delimitări de cuvinte performează în mod constant mai slab.
Abordarea cu trei niveluri a anonym.legal
Rezolvăm NER multilingv prin trei niveluri specializate:
Nivelul 1: spaCy (25 de limbi)
Pentru limbi cu resurse bogate cu modele bune:
- Engleză, germană, franceză, spaniolă, italiană, portugheză
- Olandeză, poloneză, rusă, greacă
- Și 15 altele cu acuratețe fiabilă
Nivelul 2: Stanza (7 limbi)
Pentru limbi cu morfologie complexă:
- Arabă (morfologie rădăcină-model)
- Chineză (segmentare de cuvinte necesară)
- Japoneză (scripturi multiple)
- Coreeană (aglutinativă)
- Și 3 altele
Nivelul 3: XLM-RoBERTa (16 limbi)
Pentru limbi cu resurse reduse fără modele dedicate:
- Tailandeză, vietnameză, indoneziană
- Hindi, bengali, tamil
- Ebraică, turcă, farsi
- Și altele
Cum funcționează
Text de intrare cu detectare limbă
↓
[Router de limbă]
↓
┌───────┴───────┐
↓ ↓
Rezurse bogate Resurse complexe/reduse
(spaCy) (Stanza/XLM-RoBERTa)
↓ ↓
└───────┬───────┘
↓
[Suprapunere regex pentru date structurate]
↓
[Fuzionare încredere]
↓
Entități finale
Suprapunere Regex
Unele modele sunt independente de limbă:
- Adrese de e-mail:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} - Carduri de credit:
\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4} - Numere de telefon: Diverse modele pe țară
Aplicăm regex mai întâi pentru date structurate, indiferent de limbă.
Gestionarea scripturilor RTL
Limbile de la dreapta la stânga necesită tratament special:
Algoritm de text bidirecțional
Când arabă conține engleză:
Vizual: المؤتمر في John Smith بـ التقيت
Logic: التقيت بـ John Smith في المؤتمر
Procesarea noastră:
- Normalizare la ordine logică
- Rulare NER pe ordine logică
- Mapare poziții entități înapoi la ordine vizuală
- Returnare poziții consistente pentru orice redare
Detecție limite entități
Limitele entităților arabe sunt complexe:
"محمد" - doar numele
"لمحمد" - "pentru Muhammad" (prepoziție atașată)
"ومحمد" - "și Muhammad" (conjuncție atașată)
Eliminum afixele înainte de NER și le reattașam după.
Schimbare de cod
Textul real adesea amestecă limbi:
"El meeting con John es at 3pm"
(Amestec spaniol-engleză)
"我今天跟John去shopping"
(Amestec chinez-engleză)
Abordarea noastră:
- Segmentare text după limbă
- Procesare fiecare segment cu model potrivit
- Fuzionare rezultate cu mapare poziție
Benchmark-uri de performanță
Testare internă pe seturi de date multilingve:
| Scenariu | F1-Score |
|---|---|
| Doar engleză | 91% |
| Doar germană | 88% |
| Doar arabă | 79% |
| Doar chineză | 81% |
| Amestec engleză-arabă | 83% |
| Amestec engleză-chineză | 84% |
| Amestec engleză-germană | 89% |
Abordarea noastră hibridă menține acuratețe ridicată chiar și pe limbi provocatoare.
Sfaturi de implementare
Pentru utilizatorii API
Specificați limba când este cunoscută:
{
"text": "محمد بن عبد الله",
"language": "ar"
}
Lăsați detectare automată când este necunoscută:
{
"text": "محمد بن عبد الله",
"language": "auto"
}
Pentru utilizatorii aplicației desktop
Aplicația detectează automat limba per-document. Pentru fișiere multilingve, procesează fiecare segment în mod corespunzător.
Pentru tipuri de entități personalizate
Modelele personalizate ar trebui să țină cont de scripturi:
# ID angajat în limba engleză
EMP-[0-9]{6}
# ID angajat în arabă (include cifre arabe)
موظف-[٠-٩0-9]{6}
Concluzie
Modelele NER antrenate pe limba engleză eșuează pe text non-englez deoarece limbile diferă fundamental în:
- Delimitări de cuvinte (sau lipsa acestora)
- Complexitate morfologică
- Direcție script
- Convenții de denumire
Detecția PII multilingvă eficace necesită:
- Modele specifice limbii pentru scripturi complexe
- Modele regex pentru date structurate
- Gestionare corectă RTL/BiDi
- Suport schimbare de cod
anonym.legal suportă 48 de limbi prin abordarea noastră cu trei niveluri, realizând acuratețe consistentă pe toate.
Încercați-o singuri:
Surse: