NER Multilíngue: Desafios na Detecção de Dados Pessoais
Atualizado para 2026
A Lacuna de Precisão
Modelos NER treinados em inglês atingem 85–92% de F1 em testes padrão. Aplique esses mesmos modelos a textos em árabe ou chinês. A precisão cai para 50–70%.
Para a detecção de dados pessoais, essa lacuna é crítica. Uma taxa de detecção de 70% significa que 30% dos dados sensíveis ficam desprotegidos.
As causas não são bugs. Elas vêm das diferenças entre sistemas de escrita.
Quatro Causas Fundamentais
1. Limites de Palavras
O inglês separa palavras com espaços. A tokenização é simples.
O chinês não tem espaços.
"张伟住在北京"
→ Segmentar primeiro: ["张伟", "住在", "北京"]
Um modelo não pode rotular o que não encontra. A segmentação precede o NER.
O árabe conecta letras dentro de uma palavra. As vogais curtas são omitidas. O texto vai da direita para a esquerda.
"محمد يعيش في دبي"
→ Sem vogais curtas, da direita para a esquerda, letras conectadas
2. Morfologia
Os verbos em inglês mudam de poucas formas. O árabe usa um sistema de raízes. Uma raiz cria dezenas de palavras.
كتب (k-t-b, "escrever")
→ كاتب (escritor), كتاب (livro), مكتبة (biblioteca)
O NER deve analisar raízes para encontrar nomes em formas derivadas.
3. Convenções de Nomes
Nomes latinos seguem a ordem Primeiro Nome e Sobrenome. Nomes em idiomas RTL encadeiam vínculos familiares.
محمد بن عبد الله
(Muhammad filho-de Abdullah)
Nomes chineses colocam o sobrenome primeiro. A maioria dos nomes tem dois ou três caracteres.
张伟 (Zhang Wei) — 2 caracteres
欧阳修 (Ouyang Xiu) — 3 caracteres
Um modelo construído com padrões de nomes ocidentais não reconhecerá essas estruturas.
4. Direção do Texto
Alguns idiomas vão da direita para a esquerda. Quando um texto RTL contém um nome em inglês, a ordem visual e a ordem lógica divergem. Isso é chamado de texto BiDi. Ele requer análise cuidadosa.
Pontuações F1 por Sistema de Escrita
| Idioma | Sistema de Escrita | Faixa F1 | Nível |
|---|---|---|---|
| Inglês | Latino | 85–92% | Baixo |
| Alemão | Latino | 82–88% | Baixo |
| Francês | Latino | 80–87% | Baixo |
| Espanhol | Latino | 81–86% | Baixo |
| Russo | Cirílico | 75–83% | Médio |
| Árabe | Abjad | 55–75% | Alto |
| Chinês | Hanzi | 60–78% | Alto |
| Japonês | Misto | 65–80% | Alto |
| Tailandês | Tailandês | 50–70% | Muito alto |
| Hindi | Devanagari | 60–75% | Alto |
Sistemas não latinos e a ausência de espaços reduzem as pontuações de forma consistente.
Solução em Três Níveis
Usamos três níveis para cobrir 48 idiomas e sistemas de escrita.
Nível 1: spaCy — 25 Idiomas
Para idiomas com modelos sólidos e testados. Inclui inglês, alemão, francês, espanhol, italiano, português, holandês, polonês, russo e grego.
Nível 2: Stanza — Idiomas Complexos
O Stanford Stanza processa árabe, chinês, japonês e coreano. Ele executa segmentações e análises de raízes antes do NER.
Nível 3: XLM-RoBERTa — Idiomas de Baixo Recurso
Para idiomas sem modelos dedicados. Tailandês, vietnamita, hindi, bengali, hebraico, turco e farsi estão aqui. Funciona com texto misto sem marcadores de idioma explícitos.
RTL e BiDi
Texto da direita para a esquerda exige etapas além da segmentação.
Nosso pipeline:
- Normaliza o texto para a ordem lógica.
- Executa o NER nessa ordem.
- Mapeia as posições das entidades de volta à ordem visual.
Removemos prefixos antes do NER e os recolocamos depois.
"محمد" — apenas o nome
"لمحمد" — "para Muhammad" (prefixo presente)
Alternância de Código
Documentos reais frequentemente misturam idiomas em uma linha.
"El meeting con John es at 3pm"
"我今天跟John去shopping"
Nosso pipeline divide por idioma. Executa o modelo certo em cada parte. Depois une os resultados com mapeamento de posições.
Benchmarks Internos
Resultados de testes internos com dados multilíngues:
| Cenário | F1 |
|---|---|
| Apenas inglês | 91% |
| Apenas alemão | 88% |
| Apenas árabe | 79% |
| Apenas chinês | 81% |
| Misto inglês-árabe | 83% |
| Misto inglês-chinês | 84% |
| Misto inglês-alemão | 89% |
Notas de Configuração
O aplicativo desktop detecta automaticamente o idioma por documento. Para arquivos mistos, processa cada segmento com o modelo correto. Nenhuma etapa manual é necessária.
Defina o idioma na API quando souber:
{
"text": "محمد بن عبد الله",
"language": "ar"
}
Use a detecção automática quando não souber:
{
"text": "محمد بن عبد الله",
"language": "auto"
}
Padrões personalizados devem cobrir dígitos específicos de localidade:
# ID de funcionário latino
EMP-[0-9]{6}
# ID de funcionário árabe (inclui dígitos árabe-índicos)
موظف-[٠-٩0-9]{6}
Veja a lista completa de entidades. Para configuração da API, visite a página de recursos da API. Nosso guia de conformidade RGPD explica como lacunas de detecção afetam a proteção de dados.
anonym.legal usa uma pilha NER de três níveis — spaCy, Stanza e XLM-RoBERTa — para cobrir 48 idiomas com detecção consistente de dados pessoais.