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

Завершено

Пользовательское распознавание именованных сущностей (NER) — это служба API Azure, которая просматривает документы, идентифицирует и извлекает определяемые пользователем сущности. Эти сущности могут быть любыми, от имен и адресов из банковских выписок до интеллектуального анализа знаний для улучшения результатов поиска.

Пользовательский NER является частью Языка искусственного интеллекта Azure в службах ИИ Azure.

Пользовательское и встроенное NER

Язык ИИ Azure обеспечивает определенное встроенное распознавание сущностей, чтобы распознать такие вещи, как человек, расположение, организация или URL-адрес. Встроенное NER позволяет настроить службу с минимальной конфигурацией и извлечь сущности. Чтобы вызвать встроенную службу NER, создайте службу и вызовите конечную точку для этой службы NER следующим образом:

<YOUR-ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
Заполнитель Значение Пример
<YOUR-ENDPOINT> Конечная точка запроса API https://<your-resource>.cognitiveservices.azure.com
<API-VERSION> Версия вызываемого API 2023-05-01

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

Ответ из приведенного выше вызова содержит массив распознаваемых сущностей, например:

<...>
"entities":[
    {
        "text":"Seattle",
        "category":"Location",
        "subcategory":"GPE",
        "offset":45,
        "length":7,
        "confidenceScore":0.99
    },
    {
        "text":"next week",
        "category":"DateTime",
        "subcategory":"DateRange",
        "offset":104,
        "length":9,
        "confidenceScore":0.8
    }
]
<...>

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

Совет

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

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

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

Жизненный цикл проекта языка ИИ Azure

Conceptual diagram showing a project steps to define entities, tag data, train model, view model, improve model, deploy model, and extract entities.

Создание модели извлечения сущностей обычно соответствует аналогичному пути к большинству функций службы языка искусственного интеллекта Azure:

  1. Определение сущностей: распознайте данные и сущности, которые вы хотите идентифицировать, и постарайтесь сделать их максимально понятными. Например, определите, какие именно части банковской выписки требуется извлечь.
  2. Добавление тегов к данным: пометьте существующие данные, указав, какой текст в наборе данных соответствует какой сущности. Этот шаг важно выполнять точно и полно, так как неправильные или пропущенные метки снижают эффективность обученной модели. Полезно использовать вариации возможных входных документов. Например, помечайте название банка, имя клиента, адрес клиента, конкретные условия кредита или счета, сумму кредита или счета и номер счета.
  3. Обучение модели: обучите модель после присвоения меток сущностям. Обучение тренирует модель распознавать сущности, помеченных вами.
  4. Просмотр модели — после обучения модели просмотрите результаты модели. Эта страница содержит оценку от 0 до 1, основанную на точности и полноте протестированных данных. Вы можете увидеть, какие сущности хорошо работали (например, имя клиента) и какие сущности нуждаются в улучшении (например, номер счета).
  5. Улучшение модели: улучшение модели путем выявления сущностей, которые не удалось определить и которые были неправильно извлечены. Узнайте, какие данные необходимо добавить в обучение модели для повышения производительности. На этой странице показано, как сущности завершили работу со сбоем и какие сущности (например, номер счета) должны отличаться от других аналогичных сущностей (например, суммы кредита).
  6. Развертывание модели — как только модель достигнет желаемого уровня производительности, разверните ее, чтобы сделать ее доступной посредством API. В нашем примере можно отправлять запросы в модель при развертывании для извлечения сущностей банковской выписки.
  7. Извлечение сущностей: используйте модель для извлечения сущностей. В задании описывается, как использовать API, и более подробно можно изучить этот вопрос в справочнике по API.

Рекомендации по выбору данных и уточнению сущностей

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

Высококачественные данные позволяют тратить меньше времени на уточнение и получать лучшие результаты от модели.

  • Разнообразие — используйте как можно более разнообразный набор данных без потери реального распределения, ожидаемого в реальных данных. Рекомендуется использовать примеры данных из максимально возможного количества источников, каждый из которых имеет собственные форматы и количество сущностей. Лучше всего представить набор данных из максимального количества разных источников.
  • Распределение — используйте соответствующее распределение типов документов. Более разнообразный набор данных для обучения модели поможет вашей модели избежать неправильных связей в данных.
  • Точность — используйте данные, которые как можно ближе к реальным данным. Поддельные данные подходят для запуска процесса обучения, но, скорее всего, отличаются от реальных данных способами, которые могут привести модель к неправильному извлечению.

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

Сохранение различий ваших объектов также будет иметь большое значение для повышения производительности вашей модели. Например, при попытке извлечь такие данные, как "Контактные данные", которые могут быть номером телефона, дескриптором социальных сетей или адресом электронной почты, потребуется несколько примеров, чтобы корректно обучить модель. Вместо этого попробуйте разделить их на более конкретные сущности, такие как "Телефон", "Электронная почта" и "Социальные сети", и дайте модели возможность использовать метки независимо от типа найденной контактной информации.

Извлечение сущностей

Для отправки задачи извлечения API-интерфейсу требуется текст JSON, чтобы указать, какая задача должна выполняться. Для пользовательского NER задача для полезных данных JSON — CustomEntityRecognition.

Полезные данные должны выглядеть подобно показанному ниже тексту JSON.

{
    "displayName": "string",
    "analysisInput": {
        "documents": [
            {
                "id": "doc1", 
                "text": "string"
            },
            {
                "id": "doc2",
                "text": "string"
            }
        ]
    },
    "tasks": [
        {
            "kind": "CustomEntityRecognition",
            "taskName": "MyRecognitionTaskName",
            "parameters": {
            "projectName": "MyProject",
            "deploymentName": "MyDeployment"
            }
        }
    ]
}

Ограничения проекта

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

  • Обучение — по меньшей мере 10 файлов, но не более 100 000
  • Развертывания — 10 имен развертываний для каждого проекта
  • Программные интерфейсы
    • Разработка — этот API создает проект, обучает и развертывает модель. Ограничено до 10 POST и 100 GET в минуту
    • Анализ — этот API выполняет работу по фактическому извлечению сущностей; он запрашивает задачу и получает результаты. Ограничено до 20 GET или POST
  • Проекты — только 1 учетная запись хранения для каждого проекта, 500 проектов на ресурс и 50 обученных моделей для каждого проекта
  • Сущности — каждая сущность может составлять до 500 символов. У вас может быть до 200 типов сущностей.

Подробные сведения см. на странице "Ограничения службы" для языка ИИ Azure.