Skip to content

多言語・低リソース言語のアノテーション

英語以外の言語でアノテーションを行う際の課題:多様性のギャップ、母語話者との参加型手法、そして右横書き対応・フォント・翻訳ラベルによる Potato インターフェースのローカライズ方法。

英語以外の言語でアノテーションを行うことは、二つの問題を同時に抱えることを意味します。科学的な問題として、ほとんどの NLP リソースはごく一部の言語しかカバーしておらず、カテゴリは文化を越えてきれいに転用できず、良質なラベルを作るにはバイリンガルではなく実際の話者が必要です。実務的な問題として、右横書きの文字体系や非ラテン文字のフォントを含め、ツールに言語を正しく表示させる必要があります。Potato は後者を設定で解決しますが、前者はあなた次第です。 本ガイドはその両方を扱います。

多様性のギャップは現実であり、大きい

世界には約 7,000 の言語 があり、NLP が実質的に対応しているのは数十言語にすぎません。Joshi et al. (2020) はこれを定量化しました。ごく少数の言語が豊富なラベル付きデータを持つ一方、数十億人が話す圧倒的多数の言語はほとんど何も持たず、リソースはすでに持っている言語へと流れるため、このギャップは自己強化的です。通常、アノテーションがボトルネックになります。モデルを 低リソース言語 で機能させたいなら、誰かがその言語でデータにラベルを付けなければならず、品質はそのラベル付けで決まります。

言語で、ではなく言語コミュニティとともにアノテーションする

つい安価なバイリンガルのクラウドワーカーを雇い、英語のガイドラインを翻訳したくなります。しかしそのどちらも危うい選択です。Bird (2020) は、言語コミュニティをデータの供給源として扱う搾取的な手法に反対しており、Masakhane プロジェクトの参加型モデル (Nekoto et al., 2020) は、その代替手法がアフリカの言語で大規模に機能することを示しています。すなわち、母語話者が他所で下された決定を追認するのではなく、タスクの設計、ガイドラインの執筆に関わり、ラベルを自分たちのものとして所有するのです。実務上の帰結が二つあります。

  • 流暢な話者を、できれば適切な変種の話者を採用する。 言語は一枚岩ではありません。方言、地域、そして言語使用域が重要であり、ある変種の話者が別の変種を誤ってラベル付けすることがあります。バイリンガルは母語話者と同じではありません。
  • カテゴリが転用できると仮定しない。 感情、攻撃性、丁寧さ、さらには固有表現の型でさえ、文化に固有です。英語の丁寧さに使えるガイドラインは、丁寧さが文法的に符号化される言語では静かに破綻しかねません。話者には単に言葉を翻訳させるのではなく、スキーム そのものを適応させてもらいましょう。これは翻訳作業ではなく、スキーム設計 の判断です。

Potato インターフェースのローカライズ

実務的な半分です。Potato はコードを変更することなく、設定によってアノテーター向けのインターフェースをローカライズしますが、あらかじめ限界を知っておく価値はあります。

インターフェースのテキスト。 ui_language ブロックは、インターフェースの外枠部分のための文字列テーブルです。ドキュメントの言語を設定し、アノテーターが目にするボタンと見出しを翻訳します。

yaml
ui_language:
  html_lang: ar
  html_dir: rtl            # right-to-left for Arabic, Hebrew, etc.
  submit_button: "إرسال"
  instructions_heading: "التعليمات"

html_dir: rtl を設定すると、ブラウザーのネイティブな双方向処理を用いて、右横書きの文字体系のために文書全体が反転します。正直に言うと一つ制約があります。ui_language は中核となるアノテーション画面とログイン画面をカバーしますが、管理側のいくつかのページ(ダッシュボード、裁定、トレーニング、ログアウトの各画面)は依然として英語のみなので、アノテーターがそれらを目にする場合は織り込んでおいてください。

非ラテン文字のためのフォント。 ブラウザーは、CJK、アラビア文字、インド系文字に適したデフォルトフォントを常に備えているとは限りません。base_css を使ってプロジェクトのスタイルシート経由でフォントを読み込みます。

yaml
base_css: "css/noto_font.css"

英語以外のデータ。 Potato はデフォルトでデータファイルを UTF-8 として読み込み、テキストフィールドに任意の Unicode をレンダリングするため、英語以外のコンテンツはそのまま表示されます。ファイルが異なるエンコーディングを使っている場合は、ファイルごと(encoding:)または全体(data_directory_encoding:)で上書きします。

翻訳されたラベル。 これが唯一の見落としがちな落とし穴です。Potato はデフォルトでラベル名を「人間向けに整形」し、書式を整えて先頭を大文字にしますが、これが非ラテン文字を崩すことがあります。データには機械可読な英語の name を保持したまま、displayed_label でアノテーターには翻訳済みのラベルを表示し、人間向け整形をオフにします。

yaml
annotation_schemes:
  - name: sentiment
    annotation_type: radio
    description: "ما هو شعور هذا النص؟"
    humanize_labels: false
    labels:
      - name: positive
        displayed_label: "إيجابي"
      - name: negative
        displayed_label: "سلبي"
      - name: neutral
        displayed_label: "محايد"

保存されるアノテーションは依然として positive なので、アノテーターが完全にアラビア語で作業している間も、データはクリーンなまま保たれます。

説明と同意。 surveyflow の同意ページと説明ページは、対象言語で直接執筆してください。これらは自分で書く HTML ファイルであり、英語を強制するものは何もありません。同じタスクを複数の言語にわたって実行する場合、Potato にはテンプレートから言語ごとの設定を生成する setup_multilingual_config.py ヘルパーが同梱されています。

さらに読む