Entender o reconhecimento de entidade nomeada personalizada

Concluído

O NER personalizado é um serviço de API do Azure que examina documentos e identifica e extrai entidades definidas pelo usuário. Essas entidades podem ser qualquer coisa, de nomes e endereços até extratos bancários e mineração de conhecimento para melhorar os resultados da pesquisa.

O NER personalizado faz parte da Linguagem de IA do Azure nos serviços de IA do Azure.

NER personalizado versus interno

A Linguagem de IA do Azure fornece certo reconhecimento interno de entidades, para reconhecer coisas como uma pessoa, um local, uma organização ou uma URL. O NER interno permite configurar o serviço com configuração mínima e extrair entidades. Para chamar um NER interno, crie seu serviço e chame o ponto de extremidade do serviço NER da seguinte forma:

<YOUR-ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
Espaço reservado Valor Exemplo
<YOUR-ENDPOINT> O ponto de extremidade de sua solicitação à API https://<your-resource>.cognitiveservices.azure.com
<API-VERSION> A versão da API que você está chamando 2023-05-01

O corpo dessa chamada conterá os documentos dos quais as entidades são extraídas e os cabeçalhos contêm a chave de serviço.

A resposta da chamada acima contém uma matriz de entidades reconhecidas, como:

<...>
"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
    }
]
<...>

Exemplos de quando usar o NER interno incluem encontrar locais, nomes ou URLs em documentos de texto longo.

Dica

Uma lista completa de categorias de entidade reconhecidas está disponível nos documentos do NER.

O NER personalizado, que é o foco do restante deste módulo, está disponível quando as entidades que você deseja extrair não fazem parte do serviço interno ou você só deseja extrair entidades específicas. Você pode tornar seu modelo NER personalizado tão simples ou tão complexo quanto o necessário para seu aplicativo.

Exemplos de quando você deseja que o NER personalizado inclua dados legais ou bancários específicos, mineração de conhecimento para aprimorar a pesquisa de catálogo ou procurar texto específico para políticas de auditoria. Cada um desses projetos requer um conjunto específico de entidades e dados que ele precisa extrair.

Ciclo de vida do projeto da Linguagem de IA do Azure

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

A criação de um modelo de extração de entidade normalmente segue um caminho semelhante ao da maioria dos recursos do serviço de Linguagem de IA do Azure:

  1. Definir entidades: compreendendo os dados e as entidades que você deseja identificar, tente fazer com que fiquem o mais claro possível. Por exemplo, definir exatamente quais partes de um extrato bancário você deseja extrair.
  2. Marcar dados: rotule ou marque seus dados existentes especificando qual texto no conjunto de dados corresponde a qual entidade. É importante executar essa etapa de modo preciso e completo, pois quaisquer rótulos incorretos ou ignorados reduzirão a eficácia do modelo treinado. Uma boa variação de documentos de entrada possíveis é útil. Por exemplo, nome do banco de rótulos, nome do cliente, endereço do cliente, termos específicos de empréstimo ou conta, valor de empréstimo ou conta e número da conta.
  3. Treinar o modelo: treine o modelo depois de rotular suas entidades. O treinamento ensina seu modelo a reconhecer as entidades que você marcou.
  4. Exibir o modelo: após o modelo ser treinado, exiba os resultados dele. Esta página inclui uma pontuação de 0 a 1 baseada na precisão e no recall dos dados testados. Você pode ver quais entidades funcionaram bem (como o nome do cliente) e quais entidades precisam ser aprimoradas (como o número da conta).
  5. Aprimorar o modelo: aprimore o modelo vendo quais entidades não foram identificadas e quais entidades foram extraídas incorretamente. Descubra quais dados precisam ser adicionados ao treinamento do modelo para melhorar o desempenho. Esta página mostra como as entidades falharam e quais entidades (como o número da conta) precisam ser diferenciadas de outras entidades semelhantes (como o valor do empréstimo).
  6. Implantar o modelo: quando o modelo tiver o desempenho desejado, implante-o para disponibilizá-lo por meio da API. Em nosso exemplo, você pode enviar para solicitações ao modelo quando ele é implantado para extrair entidades de extrato bancário.
  7. Extrair entidades: use seu modelo para extrair entidades. O laboratório descreve como usar a API, e você pode conferir a referência de API para mais detalhes.

Considerações sobre seleção de dados e refinamento de entidades

Para obter o melhor desempenho, você precisará usar dados de alta qualidade para treinar o modelo e tipos de entidade claramente definidos.

Dados de alta qualidade permitirão que você gaste menos tempo refinando e gere melhores resultados do modelo.

  • Diversidade: use o mais diverso possível de um conjunto de dados sem perder a distribuição real esperada nos dados reais. É recomendável usar dados de exemplo do maior número possível de fontes, cada uma com formatos e número de entidades próprios. É melhor que o conjunto de dados represente o maior número possível de fontes diferentes.
  • Distribuição: use a distribuição apropriada de tipos de documento. Um conjunto de dados mais diversificado para treinar seu modelo ajudará seu modelo a evitar aprender relações incorretas nos dados.
  • Precisão: use os dados mais parecidos possível com os dados do mundo real. Os dados falsos funcionam para iniciar o processo de treinamento, mas provavelmente serão diferentes dos dados reais de maneiras que podem fazer com que o modelo não faça uma extração correta.

As entidades também precisam ser cuidadosamente consideradas e definidas da maneira mais distinta possível. Evite entidades ambíguas (como dois nomes um ao lado do outro em um extrato bancário), pois isso fará com que o modelo tenha dificuldade para diferenciar. Se for preciso ter algumas entidades ambíguas, tenha mais exemplos para que o modelo aprenda e consiga entender a diferença.

Manter suas entidades distintas também ajudará muito no desempenho do modelo. Por exemplo, tentar extrair algo como "Informações de contato" que poderiam ser um número de telefone, identificador de mídia social ou endereço de email exigiria vários exemplos para ensinar corretamente seu modelo. Em vez disso, tente dividi-las em entidades mais específicas, como "Telefone", "Email" e "Mídia social", e permita que o modelo rotule qualquer tipo de informação de contato encontrada.

Como extrair entidades

Para enviar uma tarefa de extração, a API requer que o corpo JSON especifique qual tarefa executar. Para NER personalizado, a tarefa para o conteúdo JSON é CustomEntityRecognition.

Seu conteúdo será semelhante ao seguinte texto JSON:

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

Limites do projeto

O serviço de Linguagem de IA do Azure impõe as seguintes restrições:

  • Treinamento – entre 10 e 100 mil arquivos
  • Implantações – 10 nomes de implantação por projeto
  • APIs
    • Criação – essa API cria um projeto, treina e implanta seu modelo. Limitado a 10 POST e 100 GET por minuto
    • Analisar – essa API extrai de fato as entidades; ela solicita uma tarefa e recupera os resultados. Limitado a 20 GET ou POST
  • Projetos – apenas uma conta de armazenamento por projeto, 500 projetos por recurso e 50 modelos treinados por projeto
  • Entidades: cada entidade pode ter até 500 caracteres. Você deve ter até 200 tipos de entidades.

Consulte a página Limites de serviço para a Linguagem de IA do Azure para obter informações detalhadas.