パート 1: オンラインの有害性に対処するクライアントサイド AI

Maud Nalpas
Maud Nalpas

公開日: 2024 年 11 月 13 日

ヘイトスピーチ、ハラスメント、オンラインでの嫌がらせは、オンラインで広く問題になっています。有害なコメントは重要な意見を封じ込めユーザーや顧客を遠ざけます。有害なコンテンツの検出は、ユーザーを保護し、より安全なオンライン環境を構築します。

この 2 部構成のシリーズでは、AI を使用してユーザーのキーボードという発生源で有害なコンテンツを検出して軽減する方法について説明します。

このパートでは、このアプローチのユースケースとメリットについて説明します。

パート 2 では、コード例や UX のヒントなど、実装について説明します。

クライアントサイドの有害度の検出を行う理由

コメント投稿のデモ。
クライアントサイドの有害な表現の検出の例: ユーザーがコメントの入力を停止すると、ブラウザで有害な表現の分析が実行され、リアルタイムで警告が表示されます。デモをご覧ください。

利点

クライアントサイドの有害性検出は、最初の防衛ラインとして役立ち、サーバーサイドのチェックを補完します。クライアントサイドの有害度の検出には、次のようなメリットがあります。

  • 有害性を早期に検出する。クライアントサイドのチェックを使用すると、サーバーに触れることなく、ソースで有害なコンテンツを検出できます。
  • リアルタイム チェックを有効にする。クライアントサイドの速度を使用して低レイテンシ アプリケーションを構築し、ユーザーに即時フィードバックを提供する。
  • サーバーサイドのワークロードを削減または最適化する。有害性検出のサーバーサイドのワークロードと費用を削減できます。まず、ユーザー向けのヒントによって有害なコメントの量を減らすことができます。また、特定のコメントがサーバーに送信される前に有害な可能性が高いと報告することで、サーバーサイドのチェックで優先順位を付けることができます。
  • 人的負担を軽減する。人間のモデレーターの負担を軽減する。

ユースケース

クライアントサイドの有害性検出を構築する理由はいくつかあります。

  • コメント システムでの即時検出。有害なコメントの下書きを作成したユーザーにすぐにフィードバックを提供し、投稿する前にメッセージを言い換えるよう促します。クライアントサイド AI を使用すると、API キーなしで、ランタイム サーバーサイド分類の費用なしで、低レイテンシでこれを実現できます。これはチャットアプリに最適です。
  • チャットのリアルタイム管理。ユーザーからの有害なメッセージをすばやく特定して報告し、モデレーターがすぐに介入できるようにします。

サーバーサイド チェックを維持する

クライアントサイドの有害性検出は高速ですが、悪意のあるフロントエンドに精通したユーザーが無効にする可能性があります。また、有害性検出システムは 100% 正確ではありません。

そのため、クライアントサイドの有害性検出のみに依存するのではなく、サーバーによる追加の審査を実装または維持することを強くおすすめします。たとえば、リアルタイムのクライアントサイド チェックを補完するために、Perspective API を使用して非同期のサーバーサイド レビューを実施します。包括的なアプローチとして、これらのツールを人間によるモデレーションと組み合わせることができます。

注意点

クライアントサイドの有害性検出では、分類モデルをウェブページにダウンロードする必要があります。多くの場合、クライアントサイドの AI ライブラリも必要になります。

影響について検討します。

  • モデルのホスティングとサービングの費用。モデルが大きい場合。
  • パフォーマンスと UX。ライブラリとモデルによって、バンドルのサイズが増加します。

これがユースケースに適しているかどうかを判断する前に、メリットを検討してください。クライアントサイド AI のパフォーマンスに関するベスト プラクティスを適用し、モデルをキャッシュに保存して、ダウンロードを 1 回限りの費用にします。

コンテンツの有害性分類の仕組み

完全な実装について説明する前に、有害性検出の要点を説明します。

有害度の検出モデルは、新しいコンテンツを生成する(生成 AI)のではなく、既存のテキストを分析します。これは古典的な NLP(自然言語処理)タスクです。

自然言語処理タスク。ソース HuggingFace

有害度の検出では、テキストを有害または無害の可能性が高いと分類するテキスト分類器が使用されます。有害性分類器はテキストを入力として受け取り、スコアとともにさまざまな有害性ラベルを割り当てます。スコアの範囲は 0 ~ 1 です。スコアが高いほど、入力が有害である可能性が高いことを示します。

有害度の検出では、テキストを有害または無害の可能性が高いと分類するテキスト分類器が使用されます。

ユーザー入力は分類され、スコアが付けられます。

たとえば、Xenova/toxic-bert モデルは、unitary/toxic-bert のウェブ対応バージョンです。次の 6 つのラベルがあります。

  • toxic
  • severe_toxic
  • insult
  • obscene
  • identity_hate
  • threat

toxicsevere_toxic などのラベルは、全体的な毒性を表します。

他のラベルはよりきめ細かいものです。具体的な種類の有害性(identity_hate: 人種、宗教、性自認など、個人のアイデンティティに関するいじめや脅迫など)や、threat(損害を与える意図を示す記述)などを特定します。

有害性モデルによって、分類方法が異なります。代表的な例をいくつか示します。

この例では、次の入力には「憎悪」という単語が含まれており、個人を対象としているため、toxicity スコアは高くなります(0.92)。特定の有害性タイプは特定されていないため、他のスコアは低くなります。

Input: I hate you
Output of the toxicity classifier:
[
{ label: 'toxic', score: 0.9243140482902527 },
{ label: 'insult', score: 0.16187334060668945 },
{ label: 'obscene', score: 0.03452680632472038 },
{ label: 'identity_hate', score: 0.0223250575363636 },
{ label: 'threat', score: 0.16187334060668945 },
{ label: 'severe_toxic', score: 0.005651099607348442 }
]

次の例では、入力全体にヘイト的なトーンがあるため、toxicity スコアが高くなっています(0.92)。損害について明示的に言及しているため、threat スコアも高くなっています(0.81)。

Input: I hate your garden, and I will kill your plants
Output of the toxicity classifier:
[
{ label: 'toxic', score: 0.9243140482902527 },
{ label: 'insult', score: 0.16187334060668945 },
{ label: 'obscene', score: 0.03452680632472038 },
{ label: 'identity_hate', score: 0.0223250575363636 },
{ label: 'threat', score: 0.819197041168808937 },
{ label: 'severe_toxic', score: 0.005651099607348442 }
]

次の動画

コンテキストを理解できたので、クライアントサイドの AI 有害性検出システムの構築を開始できます。

パート 2 を読む