ブロックリスト（Azure AI Content Safety）

インターネット上には、企業やコミュニティにとって不適切、有害、または望ましくないコンテンツが溢れています。これらのコンテンツからユーザーを保護し、ブランドイメージを維持するために、Azure AI Content Safetyのブロックリスト機能が役立ちます。

例えば、ユーザーがコンテンツを投稿するサイトで以下のような使い方が出来ます。

1. 不適切な言葉のフィルタリング:
    - 卑猥な表現、差別的な言葉、攻撃的な言葉などをブロックリストに追加し、投稿内容をフィルタリングします。
2. スパム対策:
    - 特定の商品名や宣伝文句をブロックリストに追加し、スパム投稿を防ぎます。
3. 個人情報保護:
    - 電話番号や電子メールアドレスのパターンをブロックリストに追加し、個人情報の投稿を防ぎます。
4. ブランド保護:
    - 競合他社の名前や商標をブロックリストに追加し、不適切な比較や誹謗中傷を防ぎます。
5. コンプライアンス遵守:
    - 法的に問題のある表現や、サイトのポリシーに反する用語をブロックリストに追加します。

ブロックリスト機能を使用することで、コンテンツの品質を維持し、ユーザーエクスペリエンスを向上させることができます。また、人手による確認作業を減らし、効率的なコンテンツモデレーションを実現できます[^1][^3]。

Azure AI Content Safetyのブロックリスト機能を使用すると、特定の単語、フレーズ、またはパターンを含むコンテンツを簡単にブロックできます。本記事では、Azure AI Content Safetyのブロックリスト機能の概要、メリット、使用方法について詳しく解説します。

https://learn.microsoft.com/ja-jp/azure/ai-services/content-safety/quickstart-blocklist

## ブロックリストとは

ブロックリストとは、特定のコンテンツ（単語、フレーズ、画像など）を禁止するためのリストです。コンテンツがブロックリストに登録されている場合、そのコンテンツを含むメッセージや画像は自動的にフィルタリングされ、ユーザーに表示されなくなります。

Azure AI Content Safetyのブロックリスト機能は、テキストコンテンツのフィルタリングに特化しており、特定の単語、フレーズ、またはパターンを含むテキストをブロックできます。

### ブロックリストのメリット

* **有害コンテンツの排除:** ヘイトスピーチ、侮辱的な表現、わいせつな言葉など、有害なコンテンツを排除し、安全な環境を構築します。
* **ブランドイメージの保護:** 企業やブランドにとって不適切な表現や情報をブロックし、ブランドイメージを保護します。
* **コンプライアンスの遵守:** 法規制や社内ポリシーに違反するコンテンツをブロックし、コンプライアンスを遵守します。
* **カスタマイズ可能なフィルタリング:** 独自のブロックリストを作成し、特定のニーズに合わせてフィルタリングをカスタマイズできます。
* **リアルタイムな更新:** ブロックリストはいつでも更新できるため、新しい脅威やトレンドに迅速に対応できます。


## 前提条件

Azure AI Content Safetyのブロックリスト機能を利用するためには、以下の前提条件を満たす必要があります。

1. **Azureサブスクリプション:** Azureアカウントが必要です。お持ちでない場合は、アカウントを作成してください。
2. **Content Safetyリソース:** Azure portalでContent Safetyリソースを作成し、キーとエンドポイントを取得します。
    * Azure portalにサインインします。
    * 「Content Safety」を検索し、Content Safetyリソースを作成します。
    * リソースの一意の名前、サブスクリプション、リソースグループ、サポートされているリージョン、価格レベルを選択します。
    * **［作成］** を選択します。
    * リソースのデプロイが完了したら、**［リソースに移動］** を選択します。
    * 左側のペインの **［リソース管理］** で、**［キーとエンドポイント］** を選択します。
    * エンドポイントとキーは、APIを呼び出すために使用します。
3. **cURL:** コマンドラインからAPIを呼び出すために、cURLがインストールされている必要があります。
4. **ブロックリストの作成:** ブロックする単語やフレーズをリストアップしたテキストファイル（UTF-8エンコード）を作成します。

## ブロックリストの作成と管理

Azure AI Content Safetyでは、APIを使用してブロックリストを作成、更新、削除できます。ここでは、基本的な操作について説明します。

### 1. ブロックリストの作成

```bash
curl --location --request PUT '<endpoint>/contentsafety/text/blocklists/<blocklistName>?api-version=2024-09-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "description": "<ブロックリストの説明>"
}'
```

* `<endpoint>`を、Content SafetyリソースのエンドポイントURLに置き換えます。
* `<your_subscription_key>`を、Content Safetyリソースのキーに置き換えます。
* `<blocklistName>`を、作成するブロックリストの名前に置き換えます。
* `<ブロックリストの説明>`を、ブロックリストの説明に置き換えます。


### 2. ブロックリストへのアイテムの追加

```bash
curl --location --request POST '<endpoint>/contentsafety/text/blocklists/<blocklistName>:addBlockItems?api-version=2024-09-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "blockItems": [
    {
      "text": "<ブロックする単語またはフレーズ>"
    },
    {
      "text": "<ブロックする別の単語またはフレーズ>"
    }
  ]
}'
```

* `<endpoint>`を、Content SafetyリソースのエンドポイントURLに置き換えます。
* `<your_subscription_key>`を、Content Safetyリソースのキーに置き換えます。
* `<blocklistName>`を、ブロックリストの名前に置き換えます。
* `<ブロックする単語またはフレーズ>`を、ブロックする単語またはフレーズに置き換えます。


### 3. テキスト分析時にブロックリストを使用する

```bash
curl --location --request POST '<endpoint>/contentsafety/text:analyze?api-version=2024-09-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "text": "<分析するテキスト>",
  "blocklistNames": [
    "<blocklistName>"
  ]
}'
```

* `<endpoint>`を、Content SafetyリソースのエンドポイントURLに置き換えます。
* `<your_subscription_key>`を、Content Safetyリソースのキーに置き換えます。
* `<分析するテキスト>`を、分析するテキストに置き換えます。
* `<blocklistName>`を、使用するブロックリストの名前に置き換えます。


## API応答の解釈

テキスト分析APIの応答には、ブロックリストに登録されたコンテンツが検出されたかどうかを示す情報が含まれます。

**例:**

```json
{
  "blocklistsMatch": [
    {
      "blocklistName": "myBlocklist",
      "blockItemId": "6b7967f4-f926-459e-a39a-eb256efab987",
      "text": "有害な単語"
    }
  ],
  "categoryResults": [
    {
      "category": "Hate",
      "severityScore": 0.0163835287,
      "detected": false
    },
    {
      "category": "SelfHarm",
      "severityScore": 0.00018183557,
      "detected": false
    },
    {
      "category": "Sexual",
      "severityScore": 0.000376460466,
      "detected": false
    },
    {
      "category": "Violence",
      "severityScore": 0.004802014,
      "detected": false
    }
  ]
}
```

* `blocklistsMatch`: ブロックリストに一致したコンテンツの情報が含まれます。
    * `blocklistName`: 一致したブロックリストの名前。
    * `blockItemId`: 一致したブロックリストアイテムのID。
    * `text`: 一致したテキスト。


## 注意事項

* ブロックリストは、完全一致だけでなく、部分一致や類似の単語もブロックするように設定できます。
* ブロックリストに登録する単語やフレーズは、慎重に選択する必要があります。過剰なブロックは、ユーザーエクスペリエンスを損なう可能性があります。
* ブロックリストは定期的に見直し、更新する必要があります。新しいスラングや隠語に対応するために、リストを最新の状態に保つことが重要です。


## まとめ

Azure AI Content Safetyのブロックリスト機能は、有害コンテンツからユーザーを保護し、ブランドイメージを維持するための強力なツールです。この機能を活用することで、安全で快適なオンライン環境を構築できます。