個人を特定できる情報 (PII) 検出のコグニティブ スキル

PII 検出スキルは、入力テキストから個人情報を抽出し、それをマスクするオプションを提供します。 このスキルでは、検出モデルAzure AI Language で提供使用します。

Note

このスキルは Azure AI サービスにバインドされており、1 日にインデクサーあたり 20 ドキュメントを超えるトランザクションには課金対象リソースが必要です。 組み込みスキルの実行は、既存の Azure AI サービスの従量課金制の価格で課金されます。

@odata.type

Microsoft.Skills.Text.PIIDetectionSkill

データ制限

レコードのサイズは、String.Length で測定して 50,000 文字以下にする必要があります。 データチャンクにはテキスト分割スキルを使用できます。 最適な結果を得るには、ページの長さを 5000 に設定します。

スキルのパラメーター

パラメーターでは大文字と小文字が区別され、すべて任意です。

パラメーター名 説明
defaultLanguageCode (省略可能) 言語を明示的に指定しないドキュメントに適用する言語コード。 既定の言語コードが指定されていない場合は、英語 (en) が既定の言語コードです。
サポートされる言語の完全な一覧を参照してください。
minimumPrecision 0.0 から 1.0 の値。 (出力内の piiEntities ) 信頼度スコアが設定値 minimumPrecision より低い場合、エンティティは返されず、マスクもされません。 既定では、0.0 です。
maskingMode 入力テキスト内で検出された個人情報をマスクするためのさまざまな方法を提供するパラメーター。 次のオプションがサポートされています。
  • "none" (既定値): マスクは発生せず、 maskedText 出力は返されません。
  • "replace": 検出されたエンティティを、 maskingCharacter パラメータで指定された文字に置き換えます。 文字は、オフセットが入力テキストと出力 maskedTextの両方に正しく対応するように、検出されたエンティティの長さに繰り返されます。
maskingCharacter maskingMode パラメーターが replace に設定されている場合に、テキストをマスクするために使用される文字。 次のオプションがサポートされています: * (既定値)。 このパラメーターはnull、に設定replaceされていない場合maskingModeにのみ使用できます。
domain (省略可能)文字列値を指定すると、エンティティ カテゴリのサブセットに doメイン が設定されます。 使用可能な値は、"phi" (機密性の高い医療情報のみを検出)、"none" です。
piiCategories (省略可能)検出されて返されるエンティティを指定する場合は、この省略可能なパラメーター (文字列の一覧として定義) を適切なエンティティ カテゴリと共に使用します。 このパラメーターを使用すると、ドキュメントの言語に対して既定で有効になっていないエンティティを検出することもできます。 すべての一覧については、サポートされる個人を特定できる情報エンティティのカテゴリに関するページを参照してください。
modelVersion (省略可能) 個人を特定できる情報検出を呼び出すときに使うモデルのバージョンを指定します。 指定されていない場合、既定値は最新バージョンになります。 必要な場合以外は、この値を指定しないことをお勧めします。

スキルの入力

入力名 説明
languageCode レコードの言語を示す文字列。 このパラメータが指定されていない場合は、既定の言語コードを使用してレコードが分析されます。
サポートされる言語の完全な一覧を参照してください。
text 分析対象テキストです。

スキルの出力

出力名 説明
piiEntities 次のフィールドが含まれる複合型の配列。
  • "text" (抽出された実際の個人を特定できる情報)
  • "type"
  • "subType"
  • "score" (値が高いほど、実際のエンティティに近づく可能性が高くなります)
  • "offset" (入力テキスト内)
  • "length"

すべての一覧については、サポートされる個人を特定できる情報エンティティのカテゴリに関するページを参照してください。
maskedText この出力は、次の値によって maskingMode異なります。 のreplace場合maskingMode、出力は入力テキストに対して実行されるマスクの文字列結果です。次にmaskingMode説明します。 ある場合 maskingModenone出力はありません。

定義例

  {
    "@odata.type": "#Microsoft.Skills.Text.PIIDetectionSkill",
    "defaultLanguageCode": "en",
    "minimumPrecision": 0.5,
    "maskingMode": "replace",
    "maskingCharacter": "*",
    "inputs": [
      {
        "name": "text",
        "source": "/document/content"
      }
    ],
    "outputs": [
      {
        "name": "piiEntities"
      },
      {
        "name": "maskedText"
      }
    ]
  }

サンプル入力

{
    "values": [
      {
        "recordId": "1",
        "data":
           {
             "text": "Microsoft employee with ssn 859-98-0987 is using our awesome API's."
           }
      }
    ]
}

サンプル出力

{
  "values": [
    {
      "recordId": "1",
      "data" : 
      {
        "piiEntities":[ 
           { 
              "text":"859-98-0987",
              "type":"U.S. Social Security Number (SSN)",
              "subtype":"",
              "offset":28,
              "length":11,
              "score":0.65
           }
        ],
        "maskedText": "Microsoft employee with ssn *********** is using our awesome API's."
      }
    }
  ]
}

このスキルの出力内のエンティティに対して返されるオフセットは、Language Service API から直接返されます。つまり、元の文字列にインデックスを付けるためにそれらを使用している場合は、.NET の StringInfo クラスを使用して正しいコンテンツを抽出する必要があります。 詳しくは、「言語サービス機能での多言語および絵文字のサポート」を参照してください。

エラーと警告

ドキュメントの言語コードがサポートされていない場合、警告が返され、エンティティは抽出されません。 テキストが空の場合、警告が返されます。 テキストが 50,000 文字を超える場合は、最初の 50,000 文字のみが分析され、警告が発行されます。

スキルから警告が返された場合、出力 maskedText が空である可能性があります。これは、その出力を予期している下流のスキルに影響を与える可能性があります。 このため、スキルセットの定義を記述するときは必ず、出力が欠落していることに関連するすべての警告を調べてください。

関連項目