将个人身份信息(PII)适应你的领域

为了支持使用自己的术语来标识实体(也称为 上下文),该功能 entitySynonyms 使你可以为特定实体类型定义自定义同义词。 此功能有助于系统使用模型默认无法识别的字词或词汇检测输入中显示的实体。 使特定术语与标准实体保持一致,模型可以在实体检测期间准确识别和链接这些术语。

此自定义词汇支持增强了预生成的 PII(个人身份信息)检测服务,该服务最初是常规语言训练的,可能无法理解专用或非正式词汇,例如使用 BAN 而不是 InternationalBankAccountNumber。 因此,即使 PII 检测以俚语、缩写或非正式语言出现,也能识别敏感信息。 此检测增强功能增强了系统在日常实际场景中保护隐私的能力。

强烈建议先测试实体检测功能的准确性,而无需添加同义词。 如果模型在默认设置下性能不佳,则仅引入自定义同义词。 例如,如果模型已将 Org 识别为 组织,则无需将其添加为同义词。

使用自己的数据测试服务后,您可以使用entitySynonyms 来:

  • 识别 预生成服务中 需要输入词汇中的自定义同义词上下文词的特定实体。
  • 提供上下文实体的自定义同义词列表。
  • 指定每个同义词的语言。

“entitySynonyms”参数的 API 架构

{
    "parameter":
    "entitySynonyms": [
        {
            "entityType": "InternationalBankAccountNumber",
            "synonyms": [ {"synonym": "BAN", "language": "en"} ]
        }
    ]
}

使用指南

  1. 同义词必须限制为直接引用类型的短语,并保留语义正确性。 例如,对于实体类型 InternationalBankAccountNumber,有效的同义词可以是“财务帐户号”或 FAN。 但是,虽然单词 存款 可能与类型相关联,因为它不直接具有银行帐户号的含义,因此不应使用。
  2. 同义词应与国家/地区无关。 例如,德国护照 包括进去不会有帮助。
  3. 不能对多个实体类型重复使用同义词。
  4. 此同义词识别功能仅接受服务支持的实体类型的子集。 支持的实体类型和示例同义词包括:
支持的实体类型 实体类型 示例同义词
ABA 路由编号 ABARoutingNumber 路由传输号码 (RTN)
地址 地址 我的位置是
年龄 年龄 岁,年龄(以岁计),当前年龄,人的年龄,生理年龄
银行帐户号 银行账户号码 银行账户号码,储蓄账户号码,支票账户号码,财务账户号码
信用卡号 信用卡号码 信用卡号,付款卡号,信用账户号。
日期 DateTime 给定日期,指定日期
出生日期 出生日期 生日、DOB、出生日期
国际银行帐户编号 国际银行账号 IBAN,国际银行账户号码。
组织 组织 公司, 业务, 公司, 企业, 代理, 集团, 机构, 实体, 法人实体, 当事方, 被调查者, 原告, 被告, 管辖权, 合作伙伴, 供应商, 设施, 业务, 网络, 机构, 企业, 有限责任公司, 股份有限公司, 有限合伙, 注册公司, 雇主, 品牌, 子公司
人员 人员 名称、个人、帐户持有者
人员类型 人员类型 角色、标题、位置
电话号码 电话号码 固定电话、手机、移动电话
Swift 代码 SWIFT代码 SWIFT 代码,BIC(银行标识符代码),SWIFT 标识符

通过设定要排除的值来定制个人可识别信息(PII)输出

使用 valueExclusionPolicy 选项,可以调整 PII 服务,使其在某些场景下,特定的首选术语即使属于您想检测的 PII 类别,也不会被检测到并可以被编辑或删除。 例如,警察部门可能希望在大多数情况下隐去个人标识符,但像警察嫌疑人证人这样的条款除外。

在以下示例中,可以使用 valueExclusionPolicy 该选项来指定不希望从输入文本中检测或编辑的值列表。 在下一个示例中,如果用户输入值 1 Microsoft Way, Redmond, WA 98052, US,则此值不会被编辑。 即使启用了该实体,Address 也不包含在返回的 API 有效负载输出内。

未排除指定排除值的子集,例如 One Microsoft Way

Input

{
  "kind": "PiiEntityRecognition",
  "parameters": {
    "modelVersion": "latest",
    "redactionPolicy": {
      "policyKind": "characterMask",
      "redactionCharacter": "-"
    },
    "valueExclusionPolicy": {
      "caseSensitive": false,
      "excludedValues": {
        "1 Microsoft Way, Redmond, WA 98052",
        "1045 La Avenida St, Mountain View, CA 94043"
      }
    }
  },
  "analysisInput": {
    "documents": [
      {
        "id": "1",
        "text": "The police and John Doe inspected the storage garages located at 123 Main St, 1 Microsoft Way, Redmond, WA 98052, 456 Washington Blvd, Portland, OR, and 1045 La Avenida St, Mountain View, CA 94043"
      }
    ]
  }
}

输出

{
    "kind": "PiiEntityRecognitionResults",
    "results": {
        "documents": [
            {
                "redactedText": "The police and John Doe inspected the storage garages located at **********, 1 Microsoft Way, Redmond, WA 98052, ********************************, and 1045 La Avenida St, Mountain View, CA 94043"
                "id": "1",
                "entities": [
                    {
                        "text": "John Doe",
                        "category": "Person",
                        "offset": 16,
                        "length": 5,
                        "confidenceScore": 0.98
                    }
                ],
                "warnings": []
            }
        ],
        "errors": [],
        "modelVersion": "2021-01-15"
    }
}

使用自己的正则表达式自定义 PII 检测(仅适用于文本 PII 容器)

现在,可以通过使用正则表达式识别配置文件来指定自己的正则表达式,从而调整 PII 服务的检测。 有关如何安装和运行个人身份信息(PII)检测容器的教程,请参阅我们的 容器作指南

注释

正则表达式规范仅适用于文本 PII 容器。

docker run --rm -it -p 5000:5000 --memory 8g --cpus 1 \
mcr.microsoft.com/azure-cognitive-services/textanalytics/pii:{IMAGE_TAG} \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY} \
UserRegexRuleFilePath={REGEX_RULE_FILE_PATH}

UserRegexRuleFilePath 是用户定义的正则表达式规则的文件路径。

正则表达式识别文件格式

[
    {
      "name": "USSocialSecurityNumber", // category, type and tag to be returned. This name must be unique
      "description": "Rule to identify USSocialSecurityNumber in text", // used to describe the category
      "regexPatterns": [ // list of regex patterns to identify the entities
        {
          "id": "StrongSSNPattern", // id for the regex pattern
          "pattern": "(?<!\\d)([0-9]{3}-[0-9]{2}-[0-9]{4}|[0-9]{3} [0-9]{2} [0-9]{4}|[0-9]{3}.[0-9]{2}.[0-9]{4})(?!\\d)", // regex pattern to provide matches
          "matchScore": 0.65, // score to assign if the regex matches
          "locales": [ // list of languages valid for this regex
            "en"
         ]
        },
        {
          "id": "WeakSSNPattern",
          "pattern": "(?<!\\d)([0-9]{9})(?!\\d)",
          "matchScore": 0.55,
          "locales": [
            "en"
          ]
        }
      ],
      "matchContext": { // patterns to give matches context
        "hints": [
          {
            "hintText": "ssa(\\s*)number", // regex pattern to find to give a match context.
            "boostingScore": 0.2, // score to boost match confidence if hint is found
            "locales": [ // list of languages valid for this context
              "en"
            ]
          },
          {
            "hintText": "social(\\s*)security(\\s*)(#*)",
            "boostingScore": 0.2,
            "locales": [
              "en"
            ]
          }
        ],
      }
    }
]

每个正则表达式识别文件参数概述

参数 子参数和说明
name 如果存在正则表达式匹配,则返回类别、类型和标记。
decription (可选)用户可读规则说明。
regexPatterns 用于查找实体的正则表达式模式的列表。
* id:正则表达式模式的标识符。
- matchScore:正则表达式匹配项的置信度分数。
* locales:对正则表达式模式有效的语言。
matchcontext 正则表达式模式为匹配的实体提供上下文。 上下文匹配是一个从匹配的实体进行的双向搜索,在找到时可增加置信度分数。 如果多个提示支持匹配,则使用具有最高分数的提示。
* hints:为匹配的实体提供上下文的正则表达式模式列表。
* hintText:用于为匹配的实体提供上下文的正则表达式模式。
* boostingScore:(可选)从匹配的实体中获得的额外分数被添加到现有的置信度分数中。
* locales:对 hintText 有效的语言。
* contextLimit:(可选) 与匹配实体之间的距离以搜索上下文。

伐木业

若要显示有关正在运行 regexRules的信息,请添加以下属性以启用调试日志记录: Logging:Console:LogLevel:Default=Debug

docker run --rm -it -p 5000:5000 --memory 8g --cpus 1 \
mcr.microsoft.com/azure-cognitive-services/textanalytics/pii:{IMAGE_TAG} \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY} \
UserRegexRuleFilePath={REGEX_RULE_FILE_PATH} \
Logging:Console:LogLevel:Default=Debug

正则表达式规则约束

  • 规则名称必须以CE_开头
  • 规则名称必须唯一。
  • 规则名称只能使用字母数字字符和下划线 (_
  • 正则表达式模式遵循 .NET Regex 格式。 有关详细信息,请参阅 有关 .NET 正则表达式的文档