个人身份信息 (PII) 检测认知技能

“PII 检测”技能从输入文本中提取个人信息,并提供屏蔽该信息的选项。 此技能使用 Azure AI 语言中提供的检测模型

注意

此技能绑定到 Azure AI 服务,并且对于每天每个索引器超过 20 个文档的事务,需要使用可计费资源。 执行内置技能将按现有的 Azure AI 服务标准预付费套餐价格收费。

@odata.type

Microsoft.Skills.Text.PIIDetectionSkill

数据限制

记录的最大大小应为 50,000 个字符,通过 String.Length 进行测量。 可以使用文本拆分技能进行数据分块。 将页面长度设置为 5000 以获得最佳结果。

技能参数

这些参数区分大小写并且都是可选的。

参数名称 说明
defaultLanguageCode (可选)要应用到未显式指定语言的文档的语言代码。 如果未指定默认语言代码,英语 (en) 是默认语言代码。
请参阅支持的语言的完整列表
minimumPrecision 一个介于 0.0 和 1.0 之间的值。 如果置信度分数(在 piiEntities 输出中)低于所设置的 minimumPrecision 值,则不会返回或屏蔽该实体。 默认值为 0.0。
maskingMode 一个参数,提供各种方法来屏蔽在输入文本中检测到的个人信息。 可以使用以下选项:
  • "none"(默认值):不会发生屏蔽,并且不会返回 maskedText 输出。
  • "replace":使用 maskingCharacter 参数中给定的字符替换检测到的实体。 重复该字符,直至达到检测到的实体的长度,以便偏移量与输入文本和输出 maskedText 都正确对应。
maskingCharacter maskingMode 参数设置为 replace 时用来屏蔽文本的字符。 支持以下选项:*(默认)。 如果 maskingMode 未设置为 replace,则此参数只能为 null
domain (可选)字符串值(如果指定)将域设置为实体类别的子集。 可能的值包括:"phi"(仅检测机密运行状况信息)、"none"
piiCategories (可选)如要指定检测并返回哪些实体,请使用可选参数(定义为字符串列表)和相应的实体类别。 此参数还可以检测默认情况下未为文档语言启用的实体。 有关完整列表,请参阅支持的个人身份信息实体类别
modelVersion (可选)指定调用个人身份信息检测时将使用的模型版本。 如果未指定,则默认为最新版本。 建议不要指定此值,除非必要。

技能输入

输入名称 说明
languageCode 表示记录的语言的字符串。 如果未指定此参数,将使用默认语言代码分析记录。
请参阅支持的语言的完整列表
text 要分析的文本。

技能输出

输出名称 说明
piiEntities 复杂类型的数组,包含以下字段:
  • "text"(提取的实际个人身份信息)
  • "type"
  • "subType"
  • "score"(值越高意味着它越有可能是一个真实的实体)
  • "offset"(输入文本中)
  • "length"

有关完整列表,请参阅支持的个人身份信息实体类别
maskedText 此输出因 maskingMode 而异。 如果 maskingModereplace,则输出是对输入文本执行屏蔽后的字符串结果,如 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."
      }
    }
  ]
}

在此技能的输出中,针对实体返回的偏移量直接从语言服务 API 返回,这意味着如果使用这些偏移量为原始字符串编制索引,则应使用 .NET 中的 StringInfo 类来提取正确的内容。 有关详细信息,请参阅语言服务功能中的多语言和表情符号支持

错误和警告

如果文档的语言代码不受支持,则会返回警告,并且不提取任何实体。 如果文本为空,则返回警告。 如果文本大于 50,000 个字符,只会分析前 50,000 个字符,并会发出警告。

如果此技能返回警告,则输出 maskedText 可能为空,这可能会影响任何需要该输出的下游技能。 因此,在编写技能组定义时,一定要调查所有与缺少输出有关的警告。

另请参阅