Compreender o reconhecimento personalizado de entidades nomeadas

Concluído

O NER personalizado é um serviço de API do Azure que examina documentos, identifica e extrai entidades definidas pelo usuário. Essas entidades podem ser qualquer coisa, desde nomes e endereços, de extratos bancários até 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 vs integrado

A Linguagem de IA do Azure fornece determinado reconhecimento de entidade interno para reconhecer coisas como uma pessoa, local, organização ou URL. O NER integrado permite que você configure o serviço com configuração mínima e extraia entidades. Para chamar um NER integrado, crie seu serviço e chame o ponto de extremidade para esse serviço NER da seguinte forma:

<YOUR-ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
Marcador de Posição valor Exemplo
<YOUR-ENDPOINT> O ponto de extremidade para sua solicitação de 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á o(s) documento(s) do(s) qual(is) as entidades são extraídas e os cabeçalhos contêm a sua chave de serviço.

A resposta da chamada acima contém uma matriz de entidades reconhecidas, tais 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 integrado incluem a localização de locais, nomes ou URLs em documentos de texto longos.

Gorjeta

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

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

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

Ciclo de vida do projeto Azure AI Language

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 à maioria dos recursos do serviço Azure AI Language:

  1. Definir entidades: compreender os dados e as entidades que pretende identificar e tentar torná-los o mais claros possível. Por exemplo, definir exatamente quais partes de um extrato bancário você deseja extrair.
  2. Dados de marca: rotule ou marque seus dados existentes, especificando qual texto em seu conjunto de dados corresponde a qual entidade. Esta etapa é importante para fazer com precisão e completamente, pois qualquer etiqueta errada ou perdida reduzirá a eficácia do modelo treinado. Uma boa variação de possíveis documentos de entrada é útil. Por exemplo, rotule o nome do banco, o nome do cliente, o endereço do cliente, os termos específicos do empréstimo ou da conta, o valor do empréstimo ou da conta e o número da conta.
  3. Modelo de trem: treine seu modelo assim que suas entidades forem rotuladas. O treinamento ensina seu modelo a reconhecer as entidades que você rotula.
  4. Ver modelo: Depois que o modelo for treinado, exiba os resultados do modelo. Esta página inclui uma pontuação de 0 a 1 que se baseia na precisão e recuperação dos dados testados. Você pode ver quais entidades funcionaram bem (como nome do cliente) e quais entidades precisam de melhorias (como número de conta).
  5. Melhorar modelo: melhore seu modelo vendo quais entidades não puderam ser identificadas e quais entidades foram extraídas incorretamente. Descubra quais dados precisam ser adicionados ao treinamento do seu 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 modelo: Quando o modelo tiver o desempenho desejado, implante o modelo para disponibilizá-lo por meio da API. Em nosso exemplo, você pode enviar solicitações TO para o modelo quando ele é implantado para extrair entidades de extrato bancário.
  7. Extrair entidades: use seu modelo para extrair entidades. O laboratório aborda como usar a API, e você pode visualizar a referência da API para obter mais detalhes.

Considerações para seleção de dados e refinação 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 produza melhores resultados do seu modelo.

  • Diversidade - use o mais diverso possível de um conjunto de dados sem perder a distribuição da vida real esperada nos dados reais. Você desejará usar dados de exemplo do maior número possível de fontes, cada uma com seus próprios formatos e número de entidades. É melhor que seu conjunto de dados represente o maior número possível de fontes diferentes.
  • Distribuição - use a distribuição apropriada de tipos de documentos. Um conjunto de dados mais diversificado para treinar seu modelo ajudará seu modelo a evitar o aprendizado de relações incorretas nos dados.
  • Precisão - utilize dados o mais próximos possível dos dados do mundo real. Dados falsos funcionam para iniciar o processo de treinamento, mas provavelmente serão diferentes dos dados reais de maneiras que podem fazer com que seu modelo não extraia corretamente.

As entidades também precisam ser cuidadosamente consideradas e definidas da forma mais distinta possível. Evite entidades ambíguas (como dois nomes próximos um do outro em um extrato bancário), pois isso fará com que o modelo tenha dificuldade em se diferenciar. Se for necessário ter algumas entidades ambíguas, certifique-se de ter mais exemplos para o seu modelo aprender para que ele possa entender a diferença.

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

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 a carga JSON é CustomEntityRecognition.

Sua carga útil será semelhante ao seguinte JSON:

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

Limites de projeto

O serviço Azure AI Language impõe as seguintes restrições:

  • Formação - pelo menos 10 ficheiros e não mais de 100 000
  • Implantações - 10 nomes de implantação por projeto
  • APIs
    • Criação - esta API cria um projeto, treina e implanta seu modelo. Limitado a 10 POST e 100 GET por minuto
    • Analisar - esta API faz o trabalho de extrair as entidades, solicita uma tarefa e recupera os resultados. Limitado a 20 GET ou POST
  • Projetos - apenas 1 conta de armazenamento por projeto, 500 projetos por recurso e 50 modelos treinados por projeto
  • Entidades - cada entidade pode ter até 500 caracteres. Você pode ter até 200 tipos de entidade.

Consulte a página Limites de serviço para o Azure AI Language para obter informações detalhadas.