Когнитивный навык обнаружения личных сведений (PII)

Навык Обнаружение PII извлекает личную информацию из вводимого текста и дает вам возможность замаскировать ее. Этот навык использует модели обнаружения, предоставляемые на языке ИИ Azure.

Примечание.

Этот навык привязан к службам ИИ Azure и требует оплачиваемого ресурса для транзакций, превышающих 20 документов на индексатор в день. За выполнение встроенных навыков взимается плата за существующие службы ИИ Azure по мере использования.

@odata.type

Microsoft.Skills.Text.PIIDetectionSkill

Ограничения данных

Максимальный размер записи — 50 000 знаков по оценке String.Length. Вы можете использовать навык разделения текста для фрагментирования данных. Задайте длину страницы в 5000, чтобы получить наилучшие результаты.

Параметры навыков

Параметры чувствительны к регистру и не являются обязательными.

Наименование параметра Description
defaultLanguageCode (Необязательно.) Код языка применяется к документам, в которых не указан язык явным образом. Если языковой код по умолчанию не указан, английский (en) является языковым кодом по умолчанию.
Полный список поддерживаемых языков.
minimumPrecision Значение от 0.0 до 1.0. Если оценка достоверности (в piiEntities выходных данных) ниже заданного minimumPrecision значения, сущность не возвращается или маскируется. Значение по умолчанию — 0,0.
maskingMode Параметр, который предоставляет различные способы маскировки личной информации, обнаруженной во входном тексте. Поддерживаются следующие параметры:
  • "none" (по умолчанию): маскирование не происходит, а выходные maskedText данные не возвращаются.
  • "replace": заменяет обнаруженные объекты символом, указанным в параметре maskingCharacter. Символ повторяется в длину обнаруженной сущности, чтобы смещения соответствовали как входному тексту, так и выходным данным maskedText.
maskingCharacter Символ, используемый для маскирования текста, если параметр maskingMode имеет значение replace. Поддерживается следующий вариант: * (по умолчанию). Этот параметр может быть null только в том случае, если maskingMode не задано replaceзначение .
domain (Необязательно) Строковое значение, если указано, задает домен подмножество категорий сущностей. Возможные значения: "phi" (только для обнаружения конфиденциальных сведений о работоспособности), "none".
piiCategories (Необязательно) Если вы хотите указать, какие сущности обнаружены и возвращаются, используйте этот необязательный параметр (определенный как список строк) с соответствующими категориями сущностей. Этот параметр также позволяет обнаруживать сущности, которые не активны по умолчанию для языка документа. Полный список см . в категориях сущностей "Поддерживаемые личные сведения".
modelVersion (Необязательно) Указывает версию модели , которую следует использовать при вызове личных данных обнаружения. По умолчанию используется последняя версия, если она не указана. Мы рекомендуем не указывать это значение, если это не необходимо.

Входные данные навыков

Ввод имени Description
languageCode Строка, указывающая язык записей. Если этот параметр не указан, код языка по умолчанию используется для анализа записей.
Полный список поддерживаемых языков.
text Текст для анализа.

Выходные данные навыка

Имя вывода Description
piiEntities Массив сложных типов, содержащий следующие поля:
  • "text" (Фактические личные данные, извлеченные)
  • "type"
  • "subType"
  • "score" (Более высокое значение означает, что скорее всего, это реальная сущность)
  • "offset" (в входной текст)
  • "length"

Полный список см . в категориях сущностей "Поддерживаемые личные сведения".
maskedText Эти выходные данные зависят от maskingMode. В противном maskingMode случае выходные данные являются строковым результатом маскирования, выполняемого по входному тексту, как описано в разделе maskingMode.replace Если maskingMode есть none, выходные данные отсутствуют.

Пример определения

  {
    "@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-интерфейсов языковой службы, что означает, что если вы используете их для индексирования в исходной строке, следует использовать класс StringInfo в .NET для извлечения правильного содержимого. Дополнительные сведения см. в разделе "Поддержка многоязычных и эмодзи" в функциях языковой службы.

Ошибки и предупреждения

Если код языка для документа не поддерживается, возвращается предупреждение и сущности не извлекаются. Если ваш текст пуст, возвращается предупреждение. Если размер текста превышает 50 000 символов, будут проанализированы только первые 50 000 символов, и выводится предупреждение.

Если навык возвращает предупреждение, выходные данные maskedText могут быть пустыми, что может повлиять на любые последующие навыки, ожидающие выхода. По этой причине обязательно изучите все предупреждения, связанные с отсутствием вывода, при написании определения своей квалификационной группы.

См. также