Compreender os recursos para criar um modelo de compreensão de linguagem conversacional

Concluído

Para usar o serviço de Compreensão de Idiomas para desenvolver uma solução de PNL, você precisará criar um recurso de Idioma no Azure. Esse recurso será usado para criar seu modelo e processar solicitações de previsão de aplicativos cliente.

Gorjeta

O laboratório deste módulo aborda a construção de um modelo para a compreensão da linguagem conversacional. Para obter módulos mais focados na classificação de texto personalizada e no reconhecimento personalizado de entidades nomeadas, consulte os módulos de solução personalizados no caminho de aprendizagem Desenvolver soluções de linguagem natural.

Construa o seu modelo

Para recursos que exigem um modelo para previsão, você precisará criar, treinar e implantar esse modelo antes de usá-lo para fazer uma previsão. Este edifício e formação ensinarão ao serviço Azure AI Language o que procurar.

Primeiro, você precisará criar seu recurso de linguagem de IA do Azure no portal do Azure. Em seguida:

  1. Pesquise serviços de IA do Azure.
  2. Localize e selecione Serviço de Idiomas.
  3. Selecione Criar no Serviço de Idiomas.
  4. Preencha os dados necessários, escolhendo a região mais próxima de si geograficamente (para melhor desempenho) e atribuindo-lhe um nome único.

Depois que esse recurso for criado, você precisará de uma chave e do ponto de extremidade. Você pode encontrá-lo no lado esquerdo em Chaves e Ponto Final da página de visão geral do recurso.

Usar o Language Studio

Para obter um método mais visual de criação, treinamento e implantação de seu modelo, você pode usar o Language Studio para executar cada uma dessas etapas. Na página principal, você pode optar por criar um projeto de compreensão de linguagem conversacional. Depois que o projeto for criado, passe pelo mesmo processo acima para criar, treinar e implantar seu modelo.

Screenshot of the Language Studio home page.

O laboratório neste módulo explicará o uso do Language Studio para criar seu modelo. Se quiser saber mais, consulte o Guia de início rápido do Language Studio

Utilizar a API REST

Uma maneira de criar seu modelo é por meio da API REST. O padrão seria criar seu projeto, importar dados, treinar, implantar e, em seguida, usar seu modelo.

Estas tarefas são feitas de forma assíncrona; você precisará enviar uma solicitação para o URI apropriado para cada etapa e, em seguida, enviar outra solicitação para obter o status desse trabalho.

Por exemplo, se você quiser implantar um modelo para um projeto de compreensão de linguagem conversacional, envie o trabalho de implantação e verifique o status do trabalho de implantação.

Autenticação

Para cada chamada para seu recurso de linguagem do Azure AI, você autentica a solicitação fornecendo o seguinte cabeçalho.

Key valor
Ocp-Apim-Subscription-Key A chave para o seu recurso

Solicitar implantação

Envie uma solicitação POST para o ponto de extremidade a seguir.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}?api-version={API-VERSION}
Marcador de Posição Valor Exemplo
{ENDPOINT} O ponto de extremidade do seu recurso de linguagem de IA do Azure https://<your-subdomain>.cognitiveservices.azure.com
{PROJECT-NAME} O nome do seu projeto. Esse valor diferencia maiúsculas de minúsculas myProject
{DEPLOYMENT-NAME} O nome da sua implantação. Esse valor diferencia maiúsculas de minúsculas staging
{API-VERSION} A versão da API que você está chamando 2022-05-01

Inclua o seguinte body no seu pedido.

{
  "trainedModelLabel": "{MODEL-NAME}",
}
Marcador de Posição Valor
{MODEL-NAME} O nome do modelo que será atribuído à sua implantação. Esse valor diferencia maiúsculas de minúsculas.

O envio bem-sucedido do seu pedido receberá uma 202 resposta, com um cabeçalho de resposta de operation-location. Este cabeçalho terá um URL com o qual solicitar o status, formatado assim:

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

Obter status de implantação

Envie uma solicitação GET para o URL a partir do cabeçalho de resposta acima. Os valores já serão preenchidos com base na solicitação inicial de implantação.

{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Marcador de Posição Valor
{ENDPOINT} O ponto de extremidade para autenticar sua solicitação de API
{PROJECT-NAME} O nome do seu projeto (diferencia maiúsculas de minúsculas)
{DEPLOYMENT-NAME} O nome da sua implantação (diferencia maiúsculas de minúsculas)
{JOB-ID} A ID para localizar o status de treinamento do modelo, encontrada no valor do cabeçalho detalhado acima na solicitação de implantação
{API-VERSION} A versão da API que você está chamando

O corpo de resposta fornecerá detalhes do status da implantação. O status campo terá o valor de bem-sucedido quando a implantação for concluída.

{
    "jobId":"{JOB-ID}",
    "createdDateTime":"String",
    "lastUpdatedDateTime":"String",
    "expirationDateTime":"String",
    "status":"running"
}

Para obter um passo a passo completo de cada etapa com solicitações de exemplo, consulte o Guia de início rápido de compreensão conversacional.

Consultar o seu modelo

Para consultar seu modelo para obter uma previsão, você pode usar SDKs em C# ou Python ou usar a API REST.

Consulta usando SDKs

Para consultar seu modelo usando um SDK, primeiro você precisa criar seu cliente. Depois de ter seu cliente, você o usa para chamar o ponto de extremidade apropriado.

var languageClient = new TextAnalyticsClient(endpoint, credentials);
var response = languageClient.ExtractKeyPhrases(document);
language_client = TextAnalyticsClient(
            endpoint=endpoint, 
            credential=credentials)
response = language_client.extract_key_phrases(documents = documents)[0]

Outros recursos de linguagem, como o entendimento de linguagem conversacional, exigem que a solicitação seja construída e enviada de forma diferente.

var data = new
{
    analysisInput = new
    {
        conversationItem = new
        {
            text = userText,
            id = "1",
            participantId = "1",
        }
    },
    parameters = new
    {
        projectName,
        deploymentName,
        // Use Utf16CodeUnit for strings in .NET.
        stringIndexType = "Utf16CodeUnit",
    },
    kind = "Conversation",
};
Response response = await client.AnalyzeConversationAsync(RequestContent.Create(data));
result = client.analyze_conversation(
    task={
        "kind": "Conversation",
        "analysisInput": {
            "conversationItem": {
                "participantId": "1",
                "id": "1",
                "modality": "text",
                "language": "en",
                "text": query
            },
            "isLoggingEnabled": False
        },
        "parameters": {
            "projectName": cls_project,
            "deploymentName": deployment_slot,
            "verbose": True
        }
    }
)

Consulta usando a API REST

Para consultar seu modelo usando REST, crie uma solicitação POST para a URL apropriada com o corpo apropriado especificado. Para recursos integrados, como deteção de idioma ou análise de sentimento, você consultará o analyze-text ponto de extremidade.

Gorjeta

Lembre-se de que cada solicitação precisa ser autenticada com sua chave de recurso do Azure AI Language no Ocp-Apim-Subscription-Key cabeçalho

{ENDPOINT}/language/:analyze-text?api-version={API-VERSION}
Marcador de Posição Valor
{ENDPOINT} O ponto de extremidade para autenticar sua solicitação de API
{API-VERSION} A versão da API que você está chamando

No corpo dessa solicitação, você deve especificar o kind parâmetro, que informa ao serviço que tipo de compreensão de idioma você está solicitando.

Se você quiser detetar o idioma, por exemplo, o corpo JSON seria parecido com o seguinte.

{
    "kind": "LanguageDetection",
    "parameters": {
        "modelVersion": "latest"
    },
    "analysisInput":{
        "documents":[
            {
                "id":"1",
                "text": "This is a document written in English."
            }
        ]
    }
}

Outros recursos de idioma, como o entendimento de linguagem conversacional, exigem que a solicitação seja roteada para um ponto de extremidade diferente. Por exemplo, a solicitação de compreensão de linguagem conversacional seria enviada para o seguinte.

{ENDPOINT}/language/:analyze-conversations?api-version={API-VERSION}
Marcador de Posição Valor
{ENDPOINT} O ponto de extremidade para autenticar sua solicitação de API
{API-VERSION} A versão da API que você está chamando

Esse pedido incluiria um organismo JSON semelhante ao seguinte.

{
  "kind": "Conversation",
  "analysisInput": {
    "conversationItem": {
      "id": "1",
      "participantId": "1",
      "text": "Sample text"
    }
  },
  "parameters": {
    "projectName": "{PROJECT-NAME}",
    "deploymentName": "{DEPLOYMENT-NAME}",
    "stringIndexType": "TextElement_V8"
  }
}
Marcador de Posição Valor
{PROJECT-NAME} O nome do projeto onde você construiu seu modelo
{DEPLOYMENT-NAME} O nome da sua implantação

Resposta da amostra

A resposta de consulta de um SDK estará no objeto retornado, o que varia dependendo do recurso (como em response.key_phrases ou response.Value). A API REST retornará JSON que seria semelhante ao seguinte.

{
    "kind": "KeyPhraseExtractionResults",
    "results": {
        "documents": [{
            "id": "1",
            "keyPhrases": ["modern medical office", "Dr. Smith", "great staff"],
            "warnings": []
        }],
        "errors": [],
        "modelVersion": "{VERSION}"
    }
}

Para outros modelos, como compreensão de linguagem conversacional, um exemplo de resposta à sua consulta seria semelhante ao seguinte.

{
  "kind": "ConversationResult",
  "result": {
    "query": "String",
    "prediction": {
      "topIntent": "intent1",
      "projectKind": "Conversation",
      "intents": [
        {
          "category": "intent1",
          "confidenceScore": 1
        },
        {
          "category": "intent2",
          "confidenceScore": 0
        }
      ],
      "entities": [
        {
          "category": "entity1",
          "text": "text",
          "offset": 7,
          "length": 4,
          "confidenceScore": 1
        }
      ]
    }
  }
}

Os SDKs para Python e C# retornam JSON que é muito semelhante à resposta REST.

Para obter documentação completa sobre recursos, incluindo exemplos e guias de instruções, consulte as páginas de documentação da Linguagem de IA do Azure.