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


Краткое руководство. Пользовательское распознавание именованных сущностей

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

В этой статье мы используем Language Studio для демонстрации основных концепций пользовательского распознавания именованных сущностей (NER). В качестве примера мы создадим пользовательскую модель NER для извлечения соответствующих сущностей из кредитных соглашений, таких как:

  • дата соглашения;
  • имя, адрес, город и штат заемщика;
  • имя, адрес, город и штат кредитора;
  • сумма кредита и процентов.

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

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

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

Важно!

Чтобы быстро приступить к работе, рекомендуется создать новый ресурс языка искусственного интеллекта Azure, выполнив действия, описанные в этой статье. Эти действия помогут одновременно создать ресурс службы "Язык" и учетную запись хранения, так как проще сделать это сейчас, чем потом.

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

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

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

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

    A screenshot showing custom text classification & custom named entity recognition in the Azure portal.

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

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

    Примечание.

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

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

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

Отправка примера данных в контейнер BLOB-объектов

Когда вы создадите учетную запись хранения Azure и подключите ее к ресурсу службы "Язык", нужно будет отправить документы из примера набора данных в корневой каталог контейнера. Эти документы будут использоваться для обучения модели.

  1. Скачайте пример набора данных с GitHub.

  2. Откройте файл ZIP и извлеките папку с документами.

  3. На портале Azure перейдите к созданной учетной записи хранения и выберите ее.

  4. В учетной записи хранения в меню слева выберите Контейнеры под пунктом Хранилище данных. На появившемся экране нажмите + Контейнер. Присвойте контейнеру имя example-data и оставьте Уровень общего доступа, установленный по умолчанию.

    A screenshot showing the main page for a storage account.

  5. Когда контейнер будет создан, выберите его. Затем нажмите кнопку "Отправить", чтобы выбрать .txt скачанные ранее файлы..json

    A screenshot showing the button for uploading files to the storage account.

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

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

Завершив настройку ресурса и учетной записи хранения создайте новый пользовательский проект NER. Проект — это рабочая область для создания настраиваемых моделей машинного обучения на основе данных. Получить доступ к вашему проекту можете только вы и другие пользователи, у которых есть доступ к используемому ресурсу службы "Язык".

  1. Войдите в Студию Языка. Появится окно, где можно выбрать свою подписку и ресурс служб "Язык". Выберите ресурс службы "Язык", созданный на предыдущем шаге.

  2. В Language Studio в разделе Извлечение информации выберите Пользовательское распознавание именованных сущностей.

    A screenshot showing the location of custom NER in the Language Studio landing page.

  3. Щелкните Create new project (Создать новый проект) в меню в верхней части страницы проектов. Создав проект, вы сможете отмечать данные тегами, а также обучать, оценивать, улучшать и развертывать модели.

    A screenshot of the project creation page.

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

    Примечание.

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

    A screenshot showing the storage connection screen.

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

    Совет

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

  6. Выберите контейнер, в который отправили набор данных. Если вы уже помечены данные, убедитесь, что он соответствует поддерживаемму формату и выберите "Да", мои файлы уже помечены, и я отформатировал файл меток JSON и выберите файл меток в раскрывающемся меню. Выберите Далее.

  7. Проверьте введенные данные и щелкните Create Project (Создать проект).

Обучение модели

Как правило, после создания проекта вы присваиваете теги документам в подключенном к проекту контейнере. В этом кратком руководстве вы импортировали пример набора данных с тегами и инициализировали проект, используя пример JSON-файла с тегами.

Чтобы начать обучение модели в студии службы "Язык", сделайте следующее:

  1. Выберите элемент Задания обучения в меню слева.

  2. В верхнем меню выберите Запустить задание на обучение.

  3. Щелкните Train a new model (Обучить новую модель) и введите имя модели в текстовое поле. Можно также перезаписать существующую модель. Для этого выберите соответствующий параметр и укажите модель, которую требуется перезаписать, в раскрывающемся меню. Перезапись обученной модели необратима, но это не повлияет на развернутые модели до тех пор, пока вы не развернете новую модель.

    Create a new training job

  4. Выберите метод разделения данных. Вы можете выбрать вариант Automatically splitting the testing set from training data (Автоматическое выделение тестового набора из обучающих данных), при котором система разделит данные с метками на обучающий и тестовый наборы в указанной вами пропорции. Кроме того, можно использовать разделение данных обучения и тестирования вручную. Этот параметр включается только в том случае, если вы добавили документы в набор тестирования во время маркировки данных. Дополнительные сведения о разделении данных см. в разделе Обучение модели.

  5. Нажмите кнопку Обучить.

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

    Примечание.

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

Развертывание модели

Обычно после обучения модели изучаются сведения об оценке и вносятся необходимые улучшения. В этом кратком руководстве вы просто развернете модель и предоставите себе к ней доступ в Language Studio. Можно также вызвать API прогнозирования.

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

  1. В меню слева выберите Развертывание модели.

  2. Выберите " Добавить развертывание", чтобы запустить новое задание развертывания.

    A screenshot showing the deployment button

  3. Выберите Создать развертывание, чтобы создать развертывание и назначить обученную модель из раскрывающегося списка ниже. Можно также выбрать вариант Overwrite an existing deployment (Перезаписать существующее развертывание) и выбрать обученную модель, которую требуется назначить развертыванию, в раскрывающемся списке ниже.

    Примечание.

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

    A screenshot showing the deployment screen

  4. Выберите "Развернуть" , чтобы запустить задание развертывания.

  5. После успешного развертывания рядом с ним появится дата окончания срока действия. Окончание срока действия развертывания означает, что модель становится недоступной для использования в целях прогнозирования, что обычно происходит через двенадцать месяцев после окончания срока действия конфигурации обучения.

Тестирование модели

Развернутую модель можно использовать для извлечения сущностей из текста через API прогнозирования. В этом кратком руководстве вы примените Language Studio для отправки задачи пользовательской классификации текстов и визуализации результатов. Загруженный ранее пример набора данных содержит некоторые тестовые документы, которые можно использовать на этом шаге.

Чтобы протестировать развернутые модели в Language Studio, выполните следующие действия.

  1. В меню слева выберите Testing deployments (Тестирование развертываний).

  2. Выберите развертывание, которое нужно протестировать. Можно тестировать только модели, назначенные развертываниям.

  3. Для многоязычных проектов выберите язык тестируемого текста из раскрывающегося списка языков.

  4. Выберите развертывание, которое требуется запросить или протестировать, из раскрывающегося списка.

  5. Введите текст, который требуется отправить в запросе, или отправьте файл .txt, который требуется использовать.

  6. Выберите "Запустить тест " в верхнем меню.

  7. На вкладке Result (Результат) можно просмотреть извлеченные из текста сущности и их типы. Вы также можете просмотреть ответ JSON на вкладке JSON.

A screenshot showing the model test results.

Очистка ресурсов

Если проект вам больше не нужен, вы можете удалить его с помощью Студии Языка. Выберите "Пользовательское распознавание именованных сущностей" (NER) вверху, выберите проект, который нужно удалить, а затем выберите "Удалить " в верхнем меню.

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

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

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

Важно!

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

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

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

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

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

    A screenshot showing custom text classification & custom named entity recognition in the Azure portal.

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

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

    Примечание.

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

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

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

Отправка примера данных в контейнер BLOB-объектов

Когда вы создадите учетную запись хранения Azure и подключите ее к ресурсу службы "Язык", нужно будет отправить документы из примера набора данных в корневой каталог контейнера. Эти документы будут использоваться для обучения модели.

  1. Скачайте пример набора данных с GitHub.

  2. Откройте файл ZIP и извлеките папку с документами.

  3. На портале Azure перейдите к созданной учетной записи хранения и выберите ее.

  4. В учетной записи хранения в меню слева выберите Контейнеры под пунктом Хранилище данных. На появившемся экране нажмите + Контейнер. Присвойте контейнеру имя example-data и оставьте Уровень общего доступа, установленный по умолчанию.

    A screenshot showing the main page for a storage account.

  5. Когда контейнер будет создан, выберите его. Затем нажмите кнопку "Отправить", чтобы выбрать .txt скачанные ранее файлы..json

    A screenshot showing the button for uploading files to the storage account.

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

Получение ключей и конечной точки ресурса

  1. Перейдите на страницу обзора ресурса на портале Azure

  2. В меню слева выберите Ключи и конечная точка. Конечная точка и ключ вам понадобятся для запросов API.

    A screenshot showing the key and endpoint page in the Azure portal

Создание пользовательского проекта NER

Завершив настройку ресурса и учетной записи хранения создайте новый пользовательский проект NER. Проект — это рабочая область для создания настраиваемых моделей машинного обучения на основе данных. Получить доступ к вашему проекту можете только вы и другие пользователи, у которых есть доступ к используемому ресурсу службы "Язык".

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

Активация задания импорта проектов

Отправьте запрос 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. Указанное здесь значение определяет последнюю выпущенную версию модели. Дополнительные сведения о других доступных версиях 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 является строкой, а не логическим значением.

Получение сведений о состоянии задания на импорт

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

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

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/import/jobs/{JOB-ID}?api-version={API-VERSION}
Заполнитель Значение Пример
{ENDPOINT} Конечная точка для проверки подлинности запроса API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Имя проекта. Это значение учитывает регистр. myProject
{JOB-ID} Идентификатор для поиска состояния обучения модели. Значение заголовка location, полученное на предыдущем шаге. xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
{API-VERSION} Версия вызываемого API. Указанное здесь значение определяет последнюю выпущенную версию модели. Дополнительные сведения о других доступных версиях API см. в статье Жизненный цикл модели. 2022-05-01

Заголовки

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

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

Обучение модели

Как правило, после создания проекта вы присваиваете теги документам в подключенном к проекту контейнере. В этом кратком руководстве вы импортировали пример набора данных с тегами и инициализировали проект, используя пример JSON-файла с тегами.

Запуск задания обучения

После импорта проекта можно начать обучение модели.

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

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

Заголовки

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

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

Текст запроса

Используйте следующий код JSON в тексте запроса. После завершения обучения модель получит имя {MODEL-NAME}. Модели создаются только в результате успешных заданий обучения.

{
	"modelLabel": "{MODEL-NAME}",
	"trainingConfigVersion": "{CONFIG-VERSION}",
	"evaluationOptions": {
		"kind": "percentage",
		"trainingSplitPercentage": 80,
		"testingSplitPercentage": 20
	}
}
Ключ. Заполнитель Значение Пример
modelLabel {MODEL-NAME} Имя модели, которое будет назначено ей после успешного обучения. myModel
trainingConfigVersion {CONFIG-VERSION} Это версия модели, которая будет использоваться для обучения модели. 2022-05-01
evaluationOptions Возможность разделять данные по наборам для обучения и тестирования. {}
kind percentage Методы разделения. Возможные значения: percentage или manual. Дополнительные сведения см. в статье об обучении модели. percentage
trainingSplitPercentage 80 Процент помеченных тегами данных, которые будут включены в набор для обучения. Рекомендуемое значение — 80. 80
testingSplitPercentage 20 Процент помеченных тегами данных, которые будут включены в набор для тестирования. Рекомендуемое значение — 20. 20

Примечание.

trainingSplitPercentage и testingSplitPercentage требуются только в том случае, если для Kind задано значение percentage, а сумма процентных значений должна быть равна 100.

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

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

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

Получение состояния задания обучения

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

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

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

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
Заполнитель Значение Пример
{ENDPOINT} Конечная точка для проверки подлинности запроса API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Имя проекта. Это значение учитывает регистр. myProject
{JOB-ID} Идентификатор для поиска состояния обучения модели. Значение заголовка location, полученное на предыдущем шаге. xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
{API-VERSION} Версия вызываемого API. Указанное здесь значение определяет последнюю выпущенную версию модели. Дополнительные сведения о других доступных версиях API см. в статье Жизненный цикл модели. 2022-05-01

Заголовки

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

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

Текст ответа

После отправки запроса вы получите следующий ответ.

{
  "result": {
    "modelLabel": "{MODEL-NAME}",
    "trainingConfigVersion": "{CONFIG-VERSION}",
    "estimatedEndDateTime": "2022-04-18T15:47:58.8190649Z",
    "trainingStatus": {
      "percentComplete": 3,
      "startDateTime": "2022-04-18T15:45:06.8190649Z",
      "status": "running"
    },
    "evaluationStatus": {
      "percentComplete": 0,
      "status": "notStarted"
    }
  },
  "jobId": "{JOB-ID}",
  "createdDateTime": "2022-04-18T15:44:44Z",
  "lastUpdatedDateTime": "2022-04-18T15:45:48Z",
  "expirationDateTime": "2022-04-25T15:44:44Z",
  "status": "running"
}

Развертывание модели

Обычно после обучения модели изучаются сведения об оценке и вносятся необходимые улучшения. В этом кратком руководстве вы просто развернете модель и предоставите себе к ней доступ в студии службы "Язык". Можно также вызвать API прогнозирования.

Запуск задания развертывания

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

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

Заголовки

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

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

Текст запроса

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

{
  "trainedModelLabel": "{MODEL-NAME}"
}
Ключ. Заполнитель Значение Пример
trainedModelLabel {MODEL-NAME} Имя модели, которое будет назначено развертыванию. Имена можно назначить только успешно обученным моделям. Это значение учитывает регистр. myModel

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

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

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

Получение состояния задания развертывания

Используйте следующий запрос GET для запроса состояния задания развертывания. Используйте URL-адрес, полученный на предыдущем шаге, или замените приведенные ниже значения заполнителей собственными значениями.

{ENDPOINT}/language/authoring/analyze-text/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Заполнитель Значение Пример
{ENDPOINT} Конечная точка для проверки подлинности запроса API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} Имя проекта. Это значение учитывает регистр. myProject
{DEPLOYMENT-NAME} Имя развертывания. Это значение учитывает регистр. staging
{JOB-ID} Идентификатор для поиска состояния обучения модели. Это значение находится в заголовке location, полученном на предыдущем шаге. xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
{API-VERSION} Версия вызываемого API. Указанное здесь значение определяет последнюю выпущенную версию модели. Дополнительные сведения о других доступных версиях API см. в статье Жизненный цикл модели. 2022-05-01

Заголовки

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

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

Текст ответа

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

{
    "jobId":"{JOB-ID}",
    "createdDateTime":"{CREATED-TIME}",
    "lastUpdatedDateTime":"{UPDATED-TIME}",
    "expirationDateTime":"{EXPIRATION-TIME}",
    "status":"running"
}

Извлечение пользовательских сущностей

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

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

Используйте этот запрос POST для запуска задачи классификации текста.

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

Заголовки

Ключ Стоимость
Ocp-Apim-Subscription-Key Ключ, который предоставляет доступ к этому API.

Текст

{
  "displayName": "Extracting entities",
  "analysisInput": {
    "documents": [
      {
        "id": "1",
        "language": "{LANGUAGE-CODE}",
        "text": "Text1"
      },
      {
        "id": "2",
        "language": "{LANGUAGE-CODE}",
        "text": "Text2"
      }
    ]
  },
  "tasks": [
     {
      "kind": "CustomEntityRecognition",
      "taskName": "Entity Recognition",
      "parameters": {
        "projectName": "{PROJECT-NAME}",
        "deploymentName": "{DEPLOYMENT-NAME}"
      }
    }
  ]
}
Ключ. Заполнитель Значение Пример
displayName {JOB-NAME} Имя задания. MyJobName
documents [{},{}] Список документов для запуска задач. [{},{}]
id {DOC-ID} Имя или идентификатор документа. doc1
language {LANGUAGE-CODE} Строка, указывающая код языка для документа. Если этот ключ не указан, служба будет использовать язык по умолчанию проекта, выбранный во время создания проекта. Список всех поддерживаемых языков см. в статье Поддержка языков. en-us
text {DOC-TEXT} Задача документа, для которого будут выполняться задачи. Lorem ipsum dolor sit amet
tasks Список задач, которые мы хотим выполнить. []
taskName CustomEntityRecognition Имя задачи CustomEntityRecognition
parameters Список параметров, которые нужно передать задаче.
project-name {PROJECT-NAME} Имя проекта. Это значение учитывает регистр. myProject
deployment-name {DEPLOYMENT-NAME} Имя развертывания. Это значение учитывает регистр. prod

Response

Вы получите ответ 202, обозначающий успешную отправку задачи. Извлеките значение operation-location из заголовков ответа. operation-location имеет следующий формат:

{ENDPOINT}/language/analyze-text/jobs/{JOB-ID}?api-version={API-VERSION}

Этот URL-адрес можно использовать для запроса состояния завершения задачи и получения результатов после ее завершения.

Получение результатов выполнения задачи

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

{ENDPOINT}/language/analyze-text/jobs/{JOB-ID}?api-version={API-VERSION}
Заполнитель Значение Пример
{ENDPOINT} Конечная точка для проверки подлинности запроса API. https://<your-custom-subdomain>.cognitiveservices.azure.com
{API-VERSION} Версия вызываемого API. Указанное здесь значение определяет последнюю выпущенную версию модели. Дополнительные сведения о других доступных версиях API см. в статье Жизненный цикл модели. 2022-05-01

Заголовки

Ключ Стоимость
Ocp-Apim-Subscription-Key Ключ, который предоставляет доступ к этому API.

Текст ответа

Ответ будет документом JSON со следующими параметрами

{
  "createdDateTime": "2021-05-19T14:32:25.578Z",
  "displayName": "MyJobName",
  "expirationDateTime": "2021-05-19T14:32:25.578Z",
  "jobId": "xxxx-xxxx-xxxxx-xxxxx",
  "lastUpdateDateTime": "2021-05-19T14:32:25.578Z",
  "status": "succeeded",
  "tasks": {
    "completed": 1,
    "failed": 0,
    "inProgress": 0,
    "total": 1,
    "items": [
      {
        "kind": "EntityRecognitionLROResults",
        "taskName": "Recognize Entities",
        "lastUpdateDateTime": "2020-10-01T15:01:03Z",
        "status": "succeeded",
        "results": {
          "documents": [
            {
              "entities": [
                {
                  "category": "Event",
                  "confidenceScore": 0.61,
                  "length": 4,
                  "offset": 18,
                  "text": "trip"
                },
                {
                  "category": "Location",
                  "confidenceScore": 0.82,
                  "length": 7,
                  "offset": 26,
                  "subcategory": "GPE",
                  "text": "Seattle"
                },
                {
                  "category": "DateTime",
                  "confidenceScore": 0.8,
                  "length": 9,
                  "offset": 34,
                  "subcategory": "DateRange",
                  "text": "last week"
                }
              ],
              "id": "1",
              "warnings": []
            }
          ],
          "errors": [],
          "modelVersion": "2020-04-01"
        }
      }
    ]
  }
}

Очистка ресурсов

Если проект больше не нужен, его можно удалить с помощью следующего запроса 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. Указанное здесь значение определяет последнюю выпущенную версию модели. Дополнительные сведения о других доступных версиях API см. в статье Жизненный цикл модели. 2022-05-01

Заголовки

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

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

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

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

После создания модели извлечения сущностей можно выполнять следующие действия.

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