ブログに戻るテクニカル

多言語NER:英語で訓練されたモデルがアラビア語で失敗する理由

英語のNERモデルは85-92%の精度を達成します。アラビア語や中国語では?しばしば50-70%。技術的な課題について学び、真に多言語のPII検出を構築する方法を見つけましょう。

February 26, 20268 分で読めます
NERmultilingualArabic NLPChinese NLPPII detection

多言語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 في المؤتمر

私たちの処理:

  1. 論理的順序に正規化
  2. 論理的順序でNERを実行
  3. エンティティの位置を視覚的順序に戻す
  4. どんなレンダリングのためにも一貫した位置を返す

エンティティ境界検出

アラビア語のエンティティ境界は複雑です:

"محمد" - 名前だけ
"لمحمد" - "ムハンマドへ"(接続前置詞)
"ومحمد" - "そしてムハンマド"(接続接続詞)

私たちはNERの前に接頭辞を取り除き、その後再接続します。

コードスイッチング

実際のテキストはしばしば言語を混合します:

"El meeting con John es at 3pm"
(スペイン語-英語の混合)

"我今天跟John去shopping"
(中国語-英語の混合)

私たちのアプローチ:

  1. 言語ごとにテキストをセグメント化
  2. 各セグメントを適切なモデルで処理
  3. 結果を位置マッピングで統合

パフォーマンスベンチマーク

混合言語データセットに対する内部テスト:

シナリオ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検出には:

  1. 複雑なスクリプト用の言語特有のモデル
  2. 構造化データ用の正規表現パターン
  3. 適切なRTL/BiDi処理
  4. コードスイッチングのサポート

anonym.legalは、私たちの三層アプローチを通じて48言語をサポートし、すべての言語で一貫した精度を達成しています。

自分で試してみてください:


出典:

データを保護する準備はできましたか?

48言語で285以上のエンティティタイプを使用してPIIを匿名化し始めましょう。