다국어 NER: 개인정보 탐지의 과제
2026년 업데이트
정확도 격차
영어로 학습된 NER 모델은 표준 테스트에서 F1 85–92%를 달성합니다. 같은 모델을 아랍어나 중국어 텍스트에 적용해 보세요. 정확도가 50–70%로 떨어집니다.
개인정보 작업에서 이 격차는 문제입니다. 탐지율 70%는 민감한 데이터의 30%가 탐지되지 않는다는 것을 의미합니다.
원인은 버그가 아닙니다. 문자 체계의 차이에서 비롯됩니다.
네 가지 근본 원인
1. 단어 경계
영어는 공백으로 단어를 구분합니다. 토큰화가 쉽습니다.
중국어에는 공백이 전혀 없습니다.
``` "张伟住在北京" → 먼저 분리: ["张伟", "住在", "北京"] ```
모델은 찾을 수 없는 것을 태그할 수 없습니다. NER 전에 분리가 먼저 이루어져야 합니다.
아랍어는 단어 내에서 글자가 연결됩니다. 단모음이 생략됩니다. 텍스트가 오른쪽에서 왼쪽으로 흐릅니다.
``` "محمد يعيش في دبي" → 단모음 없음, 오른쪽에서 왼쪽, 연결된 글자 ```
2. 형태론
영어 동사는 몇 가지 방식으로 변합니다. 아랍어는 어근 체계를 사용합니다. 하나의 어근이 수십 개의 단어를 만듭니다.
``` كتب (k-t-b, "쓰다") → كاتب (작가), كتاب (책), مكتبة (도서관) ```
NER은 파생 어형에서 이름을 찾기 위해 어근을 분석해야 합니다.
3. 이름 관습
라틴어 이름은 이름 다음 성 순서입니다. RTL 언어의 이름은 가족 관계를 연결합니다.
``` محمد بن عبد الله (무함마드 빈 압둘라) ```
중국어 이름은 성이 먼저 나옵니다. 대부분의 이름은 두세 글자 길이입니다.
``` 张伟 (장웨이) — 2글자 欧阳修 (구양수) — 3글자 ```
서양 이름 패턴으로 구축된 모델은 이러한 구조를 놓칩니다.
4. 텍스트 방향
일부 언어는 오른쪽에서 왼쪽으로 흐릅니다. RTL 텍스트에 영어 이름이 포함되면 시각적 순서와 논리적 순서가 분리됩니다. 이를 BiDi 텍스트라고 합니다. 신중한 파싱이 필요합니다.
문자 체계별 F1 점수
| 언어 | 문자 체계 | F1 범위 | 난이도 |
|---|---|---|---|
| 영어 | 라틴 | 85–92% | 낮음 |
| 독일어 | 라틴 | 82–88% | 낮음 |
| 프랑스어 | 라틴 | 80–87% | 낮음 |
| 스페인어 | 라틴 | 81–86% | 낮음 |
| 러시아어 | 키릴 | 75–83% | 중간 |
| 아랍어 | 아브자드 | 55–75% | 높음 |
| 중국어 | 한자 | 60–78% | 높음 |
| 일본어 | 혼합 | 65–80% | 높음 |
| 태국어 | 태국어 | 50–70% | 매우 높음 |
| 힌디어 | 데바나가리 | 60–75% | 높음 |
비라틴 체계와 단어 경계 부재가 전반적으로 점수를 낮춥니다.
3단계 솔루션
당사는 3단계 구조를 사용해 48개 언어와 문자 체계를 지원합니다.
1단계: spaCy — 25개 언어
강력하고 테스트된 모델이 있는 언어에 사용합니다. 영어, 독일어, 프랑스어, 스페인어, 이탈리아어, 포르투갈어, 네덜란드어, 폴란드어, 러시아어, 그리스어가 포함됩니다.
2단계: Stanza — 복잡한 언어
Stanford Stanza가 아랍어, 중국어, 일본어, 한국어를 처리합니다. NER 전에 단어 분리와 어근 분석을 실행합니다.
3단계: XLM-RoBERTa — 저자원 언어
전용 모델이 없는 언어에 사용합니다. 태국어, 베트남어, 힌디어, 벵골어, 히브리어, 터키어, 파르시어가 여기에 속합니다. 명시적인 플래그 없이도 혼합 언어 텍스트를 처리합니다.
RTL 및 BiDi
오른쪽에서 왼쪽으로 쓰는 텍스트는 분리 이외에 추가 단계가 필요합니다.
당사의 파이프라인:
- 텍스트를 논리적 순서로 정규화합니다.
- 그 순서에서 NER을 실행합니다.
- 엔터티 위치를 시각적 순서로 다시 매핑합니다.
NER 전에 접속 접두사를 분리하고 이후에 다시 추가합니다.
``` "محمد" — 이름만 "لمحمد" — "무함마드에게" (접두사 포함) ```
코드 전환
실제 문서는 종종 한 줄에 여러 언어를 혼합합니다.
``` "El meeting con John es at 3pm" "我今天跟John去shopping" ```
당사의 파이프라인은 언어별로 분리합니다. 각 부분에 맞는 모델을 실행합니다. 그런 다음 위치 매핑으로 결과를 합칩니다.
내부 벤치마크
혼합 언어 데이터에 대한 내부 테스트 결과:
| 시나리오 | F1 |
|---|---|
| 영어만 | 91% |
| 독일어만 | 88% |
| 아랍어만 | 79% |
| 중국어만 | 81% |
| 영어-아랍어 혼합 | 83% |
| 영어-중국어 혼합 | 84% |
| 영어-독일어 혼합 | 89% |
설정 안내
데스크톱 앱은 문서당 자동으로 언어를 감지합니다. 혼합 언어 파일의 경우 각 세그먼트를 맞는 모델로 처리합니다. 수동 단계가 필요하지 않습니다.
언어를 알고 있을 때 API에서 설정합니다:
```json { "text": "محمد بن عبد الله", "language": "ar" } ```
모를 때는 자동 감지를 사용합니다:
```json { "text": "محمد بن عبد الله", "language": "auto" } ```
사용자 정의 패턴은 로케일 특화 숫자를 포함해야 합니다:
```
라틴 직원 ID
EMP-[0-9]{6}
아랍어 직원 ID (아랍-인도 숫자 포함)
موظف-[٠-٩0-9]{6} ```
전체 엔터티 목록을 참조하세요. API 설정은 API 기능 페이지를 방문하세요. GDPR 준수 가이드에서 탐지 격차가 데이터 보호법에 미치는 영향을 확인하세요.
anonym.legal은 3단계 NER 스택 — spaCy, Stanza, XLM-RoBERTa — 을 사용해 일관된 개인정보 탐지로 48개 언어를 지원합니다.