Поделиться через


Создание проекта распознавания кастомных именованных сущностей (NER)

Из этой статьи вы можете узнать, как настроить требования для использования пользовательского распознавания именованных сущностей и создать проект.

Необходимые компоненты

Прежде чем приступить к использованию пользовательского NER, вам потребуется:

Создание ресурса Языковой службы

Прежде чем приступить к использованию пользовательской службы NER, вам потребуется ресурс Azure Language in Foundry Tools. Мы рекомендуем создать ресурс языка и подключить к ней учетную запись хранения на портале Azure. Создание ресурса на портале Azure позволяет одновременно создавать учетную запись хранения Azure с предварительно настроенными разрешениями. Дополнительные сведения см. в статье, чтобы узнать, как использовать существующий ресурс и настроить его для работы с пользовательским распознаванием именованных сущностей.

Вам также нужна учетная запись хранения Azure, куда вы загружаете .txt документы, используемые для обучения модели извлечения сущностей.

Примечание.

  • Чтобы создать ресурс Языка, требуется роль владельца, назначенная группе ресурсов.
  • При подключении предварительной учетной записи хранения вам должна быть назначена роль владельца.

Создание языкового ресурса и подключение учетной записи хранения

Ресурс можно создать следующими способами:

  • Портал Azure
  • PowerShell

Примечание.

Не следует перемещать учетную запись хранения в другую группу ресурсов или подписку после того, как она связана с ресурсом языка Azure.

Создание ресурса на портале Azure

  1. Войдите на портал Azure , чтобы создать новый ресурс Azure Language in Foundry Tools.

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

    Снимок экрана: настраиваемая классификация текста и распознавание именованных сущностей в портал Azure.

  3. Создайте ресурс службы "Язык" с приведенными ниже сведениями.

    Имя Описание
    Подписка Вашу подписку Azure.
    Группа ресурсов Группа ресурсов, содержащая ваш ресурс. Можно использовать существующую группу или создать новую.
    Область/регион Регион для ресурса службы "Язык". Например, "Западная часть США 2".
    Имя Имя ресурса.
    Ценовая категория Ценовая категория ресурса Языка. Вы можете использовать уровень "Бесплатный" (F0), чтобы поработать со службой.

    Примечание.

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

  4. В разделе "Настраиваемая классификация текста" и "Распознавание именованных сущностей" выберите существующую учетную запись хранения или выберите новую учетную запись хранения. Эти значения помогут вам приступить к работе и не обязательно являются значениями учетной записи хранения, которые вы будете использовать в производственной среде. Чтобы избежать задержки во время создания проекта, подключитесь к учетным записям хранения в том же регионе, что и ресурс языка.

    Значение для учетной записи хранения Рекомендуемое значение
    Название учетной записи хранилища Любое имя
    Тип учётной записи хранилища Стандартное локально избыточное хранилище (LRS)
  5. Убедитесь, что флажок Уведомление об ответственном применении ИИ установлен. В нижней части страницы щелкните Просмотр и создание, а затем нажмите Создать.

Создание нового ресурса службы "Язык" с помощью PowerShell

Вы можете создать новый ресурс и учетную запись хранения, используя следующие файлы шаблонов и параметров CLI, которые размещаются на GitHub.

Измените следующие значения в файле параметров:

Наименование параметра Описание значения
name Имя вашего языкового ресурса
location Регион, в котором размещается ресурс. Дополнительные сведения см. в статье Ограничения службы.
sku Ценовая категория ресурса.
storageResourceName Имя учетной записи хранения
storageLocation Регион, в котором размещена учетная запись хранения.
storageSkuType SKU учетной записи хранения.
storageResourceGroupName Группа ресурсов учетной записи хранения

Используйте следующую команду PowerShell, чтобы развернуть шаблон Azure Resource Manager (ARM) с измененными файлами.

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateFile <path-to-arm-template> `
  -TemplateParameterFile <path-to-parameters-file>

Сведения о развертывании шаблонов и файлах параметров см. в документации по шаблонам ARM.

Примечание.

  • Процесс подключения учетной записи хранения к ресурсу языка необратим. Его нельзя отключить позже.
  • Вы можете подключить ресурс Языка только к одной учетной записи хранения.

Использование существующего языкового ресурса

Вы можете использовать существующий языковой ресурс, чтобы приступить к работе с настраиваемыми NER, если этот ресурс соответствует следующим требованиям:

Требование Описание
Регионы Убедитесь, что существующий ресурс подготовлен в одном из поддерживаемых регионов. В противном случае необходимо создать новый ресурс в одном из этих регионов.
Ценовая категория См. дополнительные сведения о поддерживаемых ценовых категориях.
Управляемое удостоверение Убедитесь, что параметр удостоверения, управляемого ресурсом, включен. В противном случае изучите следующий раздел.

Для использования распознавания именованных сущностей необходимо создать учетную запись службы хранилища Azure, если у вас ее еще нет.

Включение управления удостоверениями для ресурса

Ресурс языка должен иметь управление удостоверениями, чтобы включить его с помощью портал Azure:

  1. Перейдите к ресурсу Языка.
  2. В меню слева в разделе Управление ресурсами выберите Удостоверение.
  3. На вкладке Назначаемое системой убедитесь, что для параметра Состояние установлено значение Включено.

Включение пользовательского распознавания именованных сущностей

Обязательно включите функцию Пользовательская классификация текстов и пользовательское распознавание именованных сущностей на портале Azure.

  1. Перейдите к своему ресурсу "Язык" на портале Azure.
  2. В меню слева в разделе "Управление ресурсами" выберите "Компоненты".
  3. Включение пользовательской классификации текста / функция распознавания именованных сущностей.
  4. Подключите учетную запись хранения.
  5. Выберите Применить.

Внимание

Убедитесь, что пользователь вносит изменения в назначенную ему роль вкладчика данных хранилища BLOB-объектов, назначенную ему.

Добавление требуемых ролей

Выполните следующие действия, чтобы задать необходимые роли для ресурса Языка и учетной записи хранения.

Анимированное изображение: задание ролей на портале Azure.

Роли для ресурса "Языковые возможности Azure в инструментах Foundry"

  1. Перейдите к своей учетной записи хранения или ресурсу Языка на портале Azure.

  2. Выберите элемент управления доступом (IAM) в левой области.

  3. Щелкните Добавить, чтобы добавить назначения ролей, и выберите соответствующую роль для учетной записи.

    В ресурсе Языка вам должна быть назначена роль владельца или участника.

  4. В поле Назначить доступ к выберите Пользователь, группа или субъект-служба.

  5. Щелкните Выбрать члены.

  6. Выберите свое имя пользователя. В поле Выбор можно найти имена пользователей. Повторите это действие для всех ролей.

  7. Повторите эти действия для всех учетных записей пользователей, которым требуется доступ к этому ресурсу.

Роли для учетной записи хранения

  1. Войдите на страницу своей учетной записи хранения на портале Azure.
  2. Выберите элемент управления доступом (IAM) в левой области.
  3. Щелкните Добавить, чтобы добавить назначения ролей и выберите роль Участник для данных BLOB-объектов хранилища для учетной записи хранения.
  4. В поле Назначить доступ к выберите Управляемое удостоверение.
  5. Щелкните Выбрать члены.
  6. Укажите свою подписку и выберите Язык в качестве управляемого удостоверения. В поле Выбор можно найти имена пользователей.

Роли для пользователя

Внимание

Если пропустить этот шаг, при попытке подключиться к пользовательскому проекту появится ошибка 403. Важно, чтобы текущий пользователь получил эту роль для доступа к данным BLOB-объектов учетной записи хранения, даже если вы являетесь владельцем учетной записи хранения.

  1. Войдите на страницу своей учетной записи хранения на портале Azure.
  2. Выберите элемент управления доступом (IAM) в левой области.
  3. Щелкните Добавить, чтобы добавить назначения ролей и выберите роль Участник для данных BLOB-объектов хранилища для учетной записи хранения.
  4. В области "Назначение доступа" выберите "Пользователь", "Группа" или "Субъект-служба".
  5. Щелкните Выбрать члены.
  6. Выберите пользователя. В поле Выбор можно найти имена пользователей.

Внимание

Если у вас есть виртуальная сеть или частная конечная точка, обязательно выберите разрешить службам Azure в списке доверенных служб доступ к этой учетной записи хранения в портал Azure.

Включение CORS для учетной записи хранения

Обязательно разрешите методы (GET, PUT, DELETE) при включении общего доступа к ресурсам из разных источников (CORS). Задайте для поля разрешенных источников значение https://language.cognitive.azure.com. Разрешите все заголовки, добавив * в допустимые значения заголовков, и задайте максимальный возраст 500.

Снимок экрана: использование CORS для учетных записей хранения.

Создание проекта распознавания настраиваемых именованных сущностей (REST API)

После настройки контейнера ресурсов и хранилища создайте новый пользовательский проект NER. Проект — это рабочая область для создания настраиваемых моделей ИИ на основе данных. Доступ к вашему проекту есть только у вас и у других пользователей, имеющих доступ к используемому вами ресурсу Azure. Если вы пометили данные, вы можете использовать их, чтобы начать, импортируя проект.

Чтобы приступить к созданию модели пользовательского распознавания именованных сущностей, необходимо создать проект. Создание проекта позволяет помечать данные, обучать, оценивать, улучшать и развертывать модели.

Примечание.

Во всех операциях в имени проекта учитывается регистр.

Создайте запрос PATCH, используя следующий URL-адрес, заголовки и текст JSON, чтобы создать проект.

Запросить URL-адрес

Для создания проекта используйте следующий URL-адрес. Замените следующие заполнители собственными значениями.

{Endpoint}/language/authoring/analyze-text/projects/{projectName}?api-version={API-VERSION}
Заполнитель Значение Пример
{ENDPOINT} Конечная точка для проверки подлинности запроса API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Имя проекта. Это значение учитывает регистр. myProject
{API-VERSION} Версия вызываемого API. Значение относится к последней выпущенной версии. Дополнительные сведения см. в разделе"Жизненный цикл модели". 2022-05-01

Заголовки запросов

Используйте следующий заголовок для проверки подлинности запроса.

Ключ Обязательно Тип Значение
Ocp-Apim-Subscription-Key Верно струна Ключ к ресурсу. Используется для проверки подлинности запросов API.
Content-Type Верно струна application/merge-patch+json

Основное содержание запроса

Используйте следующий код JSON в запросе. Замените следующие заполнители собственными значениями.

{
  "projectName": "{PROJECT-NAME}",
  "language": "{LANGUAGE-CODE}",
  "projectKind": "CustomEntityRecognition",
  "description": "Project description",
  "multilingual": "True",
  "storageInputContainerName": "{CONTAINER-NAME}"
}

Ключ Заполнитель Значение Пример
имя проекта {PROJECT-NAME} Имя проекта. Это значение учитывает регистр. myProject
язык {LANGUAGE-CODE} Строка, указывающая код языка для документов, используемых в проекте. Если проект является многоязычным проектом, выберите код для языка, наиболее часто представленного в документах. Дополнительные сведения о кодах поддерживаемых языков см. здесь. en-us
типПроекта CustomEntityRecognition Тип проекта. CustomEntityRecognition
многоязычный true Логическое значение, которое позволяет иметь документы на нескольких языках в наборе данных. После развертывания модели вы можете отправить к ней запрос на любом поддерживаемом языке (не обязательно включенном в обучающие документы). См. дополнительные сведения о поддержке нескольких языков. true
имя контейнера для входных данных хранилища {CONTAINER-NAME Имя контейнера хранилища Azure, в который были загружены ваши документы. myContainer

Этот запрос возвращает ответ 201, который означает, что проект создается.

Этот запрос возвращает ошибку, если:

  • выбранный ресурс не имеет необходимых разрешений для учетной записи хранения.

Импорт проекта (REST API)

Если данные уже размечены, их можно использовать, чтобы начать работу со службой. Убедитесь, что помеченные данные соответствуют допустимым форматам данных.

Отправьте запрос POST, используя следующий URL-адрес, заголовки и текст JSON, чтобы импортировать файл меток. Убедитесь, что файл меток соответствует допустимому формату.

Если проект с таким именем уже существует, данные этого проекта заменяются.

{Endpoint}/language/authoring/analyze-text/projects/{projectName}/:import?api-version={API-VERSION}
Заполнитель Значение Пример
{ENDPOINT} Конечная точка для проверки подлинности запроса API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Имя проекта. Это значение учитывает регистр. myProject
{API-VERSION} Версия вызываемого API. Здесь указано значение для последней выпущенной версии. Дополнительные сведения см. в разделе"Жизненный цикл модели". 2022-05-01

Заголовки

Используйте следующий заголовок для проверки подлинности запроса.

Ключ Значение
Ocp-Apim-Subscription-Key Ключ к ресурсу. Используется для проверки подлинности запросов API.

Текст

Используйте следующий код JSON в запросе. Замените значения заполнителей собственными значениями.

{
    "projectFileVersion": "{API-VERSION}",
    "stringIndexType": "Utf16CodeUnit",
    "metadata": {
        "projectName": "{PROJECT-NAME}",
        "projectKind": "CustomEntityRecognition",
        "description": "Trying out custom NER",
        "language": "{LANGUAGE-CODE}",
        "multilingual": true,
        "storageInputContainerName": "{CONTAINER-NAME}",
        "settings": {}
    },
    "assets": {
    "projectKind": "CustomEntityRecognition",
        "entities": [
            {
                "category": "Entity1"
            },
            {
                "category": "Entity2"
            }
        ],
        "documents": [
            {
                "location": "{DOCUMENT-NAME}",
                "language": "{LANGUAGE-CODE}",
                "dataset": "{DATASET}",
                "entities": [
                    {
                        "regionOffset": 0,
                        "regionLength": 500,
                        "labels": [
                            {
                                "category": "Entity1",
                                "offset": 25,
                                "length": 10
                            },
                            {
                                "category": "Entity2",
                                "offset": 120,
                                "length": 8
                            }
                        ]
                    }
                ]
            },
            {
                "location": "{DOCUMENT-NAME}",
                "language": "{LANGUAGE-CODE}",
                "dataset": "{DATASET}",
                "entities": [
                    {
                        "regionOffset": 0,
                        "regionLength": 100,
                        "labels": [
                            {
                                "category": "Entity2",
                                "offset": 20,
                                "length": 5
                            }
                        ]
                    }
                ]
            }
        ]
    }
}
Ключ Заполнитель Значение Пример
api-version {API-VERSION} Версия вызываемого API. Используемая здесь версия должна совпадать с версией API в URL-адресе. Узнайте больше о других доступных версиях API. 2022-03-01-preview
projectName {PROJECT-NAME} Имя проекта. Это значение учитывает регистр. myProject
projectKind CustomEntityRecognition Тип проекта. CustomEntityRecognition
language {LANGUAGE-CODE} Строка, указывающая код языка для документов, используемых в проекте. Если проект является многоязычным проектом, выберите языковой код большинства документов. en-us
multilingual true Логическое значение, которое позволяет иметь документы на нескольких языках в наборе данных. После развертывания модели вы можете отправить к ней запрос на любом поддерживаемом языке (не обязательно включенном в обучающие документы). Сведения о многоязычной поддержке см. в разделе Поддержка языков. true
storageInputContainerName {CONTAINER-NAME} Имя контейнера хранилища Azure, содержащего отправленные документы. myContainer
entities Массив, содержащий все типы сущностей, которые есть в проекте и извлеченные из документов.
documents Массив, содержащий все документы в проекте и список сущностей, помеченных в каждом документе. []
location {DOCUMENT-NAME} Расположение документов в контейнере хранилища. doc1.txt
dataset {DATASET} Тестовый набор, в который помещается этот файл при разделении данных перед обучением. Дополнительные сведения см. в разделе"Обучение модели". Возможные значения для этого поля: Train и Test. Train

После отправки запроса API вы получите ответ, указывающий 202 на правильность отправки задания. Извлеките значение operation-location из заголовков ответа. Ниже приведен пример формата:

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/import/jobs/{JOB-ID}?api-version={API-VERSION}

{JOB-ID} используется для идентификации запроса, так как эта операция является асинхронной. Этот URL-адрес используется для получения состояния задания импорта.

Возможные сценарии ошибок для этого запроса:

  • выбранный ресурс не имеет необходимых разрешений для учетной записи хранения;
  • указанный storageInputContainerName не существует;
  • используется недопустимый код языка или тип кода языка не является строковым;
  • Значение multilingual является строкой, а не логическим значением.

Получение сведений о проекте (REST API)

Используйте следующий запрос GET для получения сведений о проекте. Замените значения заполнителей собственными значениями.

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}?api-version={API-VERSION}
Заполнитель Значение Пример
{ENDPOINT} Конечная точка для проверки подлинности запроса API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Имя проекта. Это значение учитывает регистр. myProject
{API-VERSION} Версия вызываемого API. Дополнительные сведения см. в разделе"Жизненный цикл модели". 2022-05-01

Заголовки

Используйте следующий заголовок для проверки подлинности запроса.

Ключ Значение
Ocp-Apim-Subscription-Key Ключ к ресурсу. Используется для проверки подлинности запросов API.

Текст ответа

    {
        "createdDateTime": "2021-10-19T23:24:41.572Z",
        "lastModifiedDateTime": "2021-10-19T23:24:41.572Z",
        "lastTrainedDateTime": "2021-10-19T23:24:41.572Z",
        "lastDeployedDateTime": "2021-10-19T23:24:41.572Z",
        "projectKind": "CustomEntityRecognition",
        "storageInputContainerName": "{CONTAINER-NAME}",
        "projectName": "{PROJECT-NAME}",
        "multilingual": false,
        "description": "Project description",
        "language": "{LANGUAGE-CODE}"
    }
Значение Заполнитель Описание Пример
projectKind CustomEntityRecognition Тип проекта. CustomEntityRecognition
storageInputContainerName {CONTAINER-NAME} Имя контейнера хранилища Azure для отправленных документов. myContainer
projectName {PROJECT-NAME} Имя проекта. Это значение учитывает регистр. myProject
multilingual true Логическое значение, которое позволяет иметь документы на нескольких языках в наборе данных. После развертывания модели вы можете отправить к ней запрос на любом поддерживаемом языке (не обязательно включенном в обучающие документы). Дополнительные сведения о поддержке языков см. в разделе Поддержка языков. true
language {LANGUAGE-CODE} Строка, указывающая код языка для документов, используемых в проекте. Если проект является многоязычным проектом, выберите языковой код для большинства документов. en-us

После отправки запроса API вы получите ответ, указывающий 200 на успешность и текст ответа JSON с сведениями о проекте.

Удаление проекта (REST API)

Если проект больше не нужен, его можно удалить с помощью следующего запроса DELETE. Замените значения заполнителей собственными значениями.

{Endpoint}/language/authoring/analyze-text/projects/{projectName}?api-version={API-VERSION}
Заполнитель Значение Пример
{ENDPOINT} Конечная точка для проверки подлинности запроса API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Имя проекта. Это значение учитывает регистр. myProject
{API-VERSION} Версия вызываемого API. Значение, на которое ссылается, предназначено для последней версии, выпущенной. Дополнительные сведения см. в разделе"Жизненный цикл модели". 2022-05-01

Заголовки

Используйте следующий заголовок для проверки подлинности запроса.

Ключ Значение
Ocp-Apim-Subscription-Key Ключ к ресурсу. Используется для проверки подлинности запросов API.

После отправки запроса API вы получите ответ, указывающий 202 на успешность, что означает удаление проекта. Ответ будет содержать заголовок Operation-Location, используемый для проверки состояния задания.

Следующие шаги

  • У вас должна быть идея схемы проекта , используемой для маркировки данных.

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