多言語NERの課題
英語で訓練された固有表現認識(NER)モデルは、標準ベンチマークで85-92%のF1スコアという印象的な結果を達成します。それらのモデルをアラビア語や中国語に適用すると、精度はしばしば50-70%に低下します。
PII検出において、このギャップは重要です。70%の検出率は、30%の機密データが保護されないことを意味します。
英語モデルが失敗する理由
1. 単語の境界
英語: 単語はスペースで区切られています。
"John Smith lives in New York"
→ ["John", "Smith", "lives", "in", "New", "York"]
中国語: 単語の境界は全くありません。
"张伟住在北京"
→ 最初にセグメンテーションが必要: ["张伟", "住在", "北京"]
アラビア語: 単語は接続されており、短母音は書かれません。
"محمد يعيش في دبي"
→ 接続されたスクリプト、右から左へ、母音は省略
英語のトークン化ルールは単純に適用できません。
2. 形態的複雑性
英語の形態学: 比較的単純
run → runs, running, ran
アラビア語の形態学: 極めて複雑(ルート-パターンシステム)
كتب (k-t-b, "書く"のルート)
→ كاتب (作家), كتاب (本), مكتبة (図書館), يكتب (彼は書く)
単一のアラビア語のルートが関連する単語を何十も生成します。NERモデルはこの派生システムを理解する必要があります。
3. 名前の慣習
英語の名前: 名字-姓
John Smith, Mary Johnson
アラビア語の名前: 複数の要素
محمد بن عبد الله بن عبد المطلب
(ムハンマド・ビン・アブドゥラ・ビン・アブドゥル・ムッタリブ)
中国語の名前: 姓が先、通常は合計2-3文字
张伟 (Zhang Wei) - 2文字
欧阳修 (Ouyang Xiu) - 3文字
4. スクリプトの方向
英語: 左から右(LTR) アラビア語/ヘブライ語: 右から左(RTL) 混合テキスト: 双方向(BiDi) - 極めて複雑
英語の名前がアラビア語のテキストに現れるとき:
التقيت بـ John Smith في المؤتمر
(私は会議でJohn Smithに会った)
レンダリング順序、論理的順序、表示順序はすべて異なります。
言語別の精度
実際のNERパフォーマンスは劇的に異なります:
| 言語 | スクリプト | F1スコア範囲 | 課題レベル |
|---|---|---|---|
| 英語 | ラテン | 85-92% | 低 |
| ドイツ語 | ラテン | 82-88% | 低 |
| フランス語 | ラテン | 80-87% | 低 |
| スペイン語 | ラテン | 81-86% | 低 |
| ロシア語 | キリル | 75-83% | 中 |
| アラビア語 | アラビア | 55-75% | 高 |
| 中国語 | 漢字 | 60-78% | 高 |
| 日本語 | 混合 | 65-80% | 高 |
| タイ語 | タイ | 50-70% | 非常に高 |
| ヒンディー語 | デーヴァナーガリー | 60-75% | 高 |
複雑な形態学、非ラテン文字、または単語の境界がない言語は、一貫してパフォーマンスが低下します。
anonym.legalの三層アプローチ
私たちは、三つの専門的な層を通じて多言語NERを解決します:
層1:spaCy(25言語)
リソースが豊富で良好なモデルを持つ言語のために:
- 英語、ドイツ語、フランス語、スペイン語、イタリア語、ポルトガル語
- オランダ語、ポーランド語、ロシア語、ギリシャ語
- そして、信頼できる精度を持つ他の15言語
層2:Stanza(7言語)
複雑な形態学を持つ言語のために:
- アラビア語(ルート-パターン形態学)
- 中国語(単語のセグメンテーションが必要)
- 日本語(複数のスクリプト)
- 韓国語(膠着語)
- そして他の3言語
層3:XLM-RoBERTa(16言語)
専用モデルがないリソースが少ない言語のために:
- タイ語、ベトナム語、インドネシア語
- ヒンディー語、ベンガル語、タミル語
- ヘブライ語、トルコ語、ペルシャ語
- そして他の言語
どのように機能するか
言語検出を伴う入力テキスト
↓
[言語ルーター]
↓
┌───────┴───────┐
↓ ↓
リソースが豊富 複雑/リソースが少ない
(spaCy) (Stanza/XLM-RoBERTa)
↓ ↓
└───────┬───────┘
↓
[構造化データのための正規表現オーバーレイ]
↓
[信頼性の合併]
↓
最終的なエンティティ
正規表現オーバーレイ
いくつかのパターンは言語に依存しません:
- メールアドレス:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} - クレジットカード:
\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4} - 電話番号: 国ごとにさまざまなパターン
私たちは、言語に関係なく、構造化データのために最初に正規表現を適用します。
RTLスクリプトの処理
右から左の言語は特別な処理が必要です:
双方向テキストアルゴリズム
アラビア語に英語が含まれるとき:
視覚的: المؤتمر في John Smith بـ التقيت
論理的: التقيت بـ John Smith في المؤتمر
私たちの処理:
- 論理的順序に正規化
- 論理的順序でNERを実行
- エンティティの位置を視覚的順序に戻す
- どんなレンダリングのためにも一貫した位置を返す
エンティティ境界検出
アラビア語のエンティティ境界は複雑です:
"محمد" - 名前だけ
"لمحمد" - "ムハンマドへ"(接続前置詞)
"ومحمد" - "そしてムハンマド"(接続接続詞)
私たちはNERの前に接頭辞を取り除き、その後再接続します。
コードスイッチング
実際のテキストはしばしば言語を混合します:
"El meeting con John es at 3pm"
(スペイン語-英語の混合)
"我今天跟John去shopping"
(中国語-英語の混合)
私たちのアプローチ:
- 言語ごとにテキストをセグメント化
- 各セグメントを適切なモデルで処理
- 結果を位置マッピングで統合
パフォーマンスベンチマーク
混合言語データセットに対する内部テスト:
| シナリオ | F1スコア |
|---|---|
| 英語のみ | 91% |
| ドイツ語のみ | 88% |
| アラビア語のみ | 79% |
| 中国語のみ | 81% |
| 英語-アラビア語混合 | 83% |
| 英語-中国語混合 | 84% |
| 英語-ドイツ語混合 | 89% |
私たちのハイブリッドアプローチは、難しい言語でも高い精度を維持します。
実装のヒント
APIユーザー向け
言語がわかっている場合は指定してください:
{
"text": "محمد بن عبد الله",
"language": "ar"
}
不明な場合は自動検出させてください:
{
"text": "محمد بن عبد الله",
"language": "auto"
}
デスクトップアプリユーザー向け
アプリは文書ごとに言語を自動検出します。混合言語ファイルの場合、各セグメントを適切に処理します。
カスタムエンティティタイプ向け
カスタムパターンはスクリプトを考慮する必要があります:
# 英語の従業員ID
EMP-[0-9]{6}
# アラビア語の従業員ID(アラビア数字を含む)
موظف-[٠-٩0-9]{6}
結論
英語で訓練されたNERモデルは、言語が根本的に異なるため、非英語のテキストで失敗します:
- 単語の境界(またはその欠如)
- 形態的複雑性
- スクリプトの方向
- 名前の慣習
効果的な多言語PII検出には:
- 複雑なスクリプト用の言語特有のモデル
- 構造化データ用の正規表現パターン
- 適切なRTL/BiDi処理
- コードスイッチングのサポート
anonym.legalは、私たちの三層アプローチを通じて48言語をサポートし、すべての言語で一貫した精度を達成しています。
自分で試してみてください:
出典: