Criar o conjunto de dados

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:
  • Descrever por que os dados são importantes para um modelo de aprendizagem profunda.
  • Criar um conjunto de dados que contém rótulos e exemplos de intenção.
  • Usar a API para consultar o status do conjunto de dados.

Dados e aprendizagem profunda

Dados de qualidade, muitos deles, são um componente importante no sucesso da aprendizagem profunda. Dados são usados pelos algoritmos para “aprender”. Assim, você quer que seus dados sejam adequados ao tipo de previsões que você espera receber do modelo. Além de ter os dados corretos, os dados devem estar devidamente rotulados. A quantidade e a qualidade dos dados têm relação direta com a exatidão do modelo final.

As APIs do Einstein Language dão suporte a dados nestes formatos:
  • .csv (valores separados por vírgulas)
  • .tsv (valores separados por tabulação)
  • .json

Nesta unidade, você criará um conjunto de dados de um arquivo CSV. Para facilitar as coisas, fornecemos um arquivo CSV para você criar o conjunto de dados. O arquivo de dados contém o tipo de perguntas que o Cloud Kicks recebe do formulário de solicitação de serviço no site.

Os dados no arquivo CSV têm este formato: "intent string",label. Vejamos alguns exemplos de dados do arquivo.
"need to reset my password",Password Help
"when will my order arrive?",Shipping Info
"can I buy another pair, these are great?",Sales Opportunity

A sequência de caracteres de intenção, por exemplo, “necessidade de redefinir senha”, é o texto que você acha que um usuário poderia digitar na solicitação de serviço.

O rótulo (nesse caso, “Ajuda senha”) é o tipo de solicitação. No conjunto de dados criado na próxima seção, um exemplo de sequência de caracteres de intenção é associado a um rótulo. Na solução Cloud Kicks, o site usa o rótulo para direcionar a solicitação ao departamento certo.

Chamar a API para criar o conjunto de dados

Agora que todo o trabalho de preparação foi concluído, vai começar o trabalho de verdade. A primeira etapa é criar um conjunto de dados. Crie o conjunto de dados do arquivo CSV chamado case_routing_intent.csv, referenciado no comando cURL a seguir. Cada sequência de caracteres de intenção no arquivo CSV é um exemplo associado a um rótulo. O conjunto de dados é a base do modelo que será criado mais tarde.
  1. Abra uma janela de linha de comando.
  2. Insira o comando cURL, substituindo <TOKEN> pelo token gerado. Você pode usar um editor de texto nessas etapas para copiar os comandos e armazenar as várias IDs geradas.
    curl -X POST -H "Authorization: Bearer <TOKEN>" -H "Cache-Control: no-cache" -H "Content-Type: multipart/form-data" -F "type=text-intent" -F "path=http://einstein.ai/text/case_routing_intent.csv" https://api.einstein.ai/v2/language/datasets/upload
    Nota

    Nota

    Todos os comandos cURL neste módulo devem funcionar no Mac OSX, no Windows e no Linux. Alguns sistemas operacionais lidam com aspas de maneiras diferentes. Se você vir algum erro de cURL, talvez precise reformatar as aspas.

    Você acabou de fazer sua primeira chamada para a API do Einstein Intent e criou um conjunto de dados! A resposta da API é semelhante a este JSON.
    {
      "id": 1010060,
      "name": "case_routing_intent.csv",
      "createdAt": "2017-08-18T18:20:37.000+0000",
      "updatedAt": "2017-08-18T18:20:37.000+0000",
      "labelSummary": {
        "labels": []
      },
      "totalExamples": 0,
      "available": false,
      "statusMsg": "UPLOADING",
      "type": "text-intent",
      "object": "dataset"
    }

    Anote o valor do campo id. Esse valor é a ID do conjunto de dados e ela é usada ao longo do módulo para trabalhar com o conjunto de dados.

    O conjunto de dados do caso é pequeno, cerca de 150 registros. Normalmente, você coletaria muito mais dados para que seu modelo fosse o mais exato possível.

Obter o status do conjunto de dados

A chamada feita para criar o conjunto de dados é assíncrona. Isso significa que a API retorna uma resposta com a ID do conjunto de dados imediatamente. Mas, em segundo plano, ela ainda pode estar carregando dados. Isso ocorre principalmente se você tem um grande conjunto de dados.

Ao criar um conjunto de dados, os dois campos que indicam o status do conjunto de dados são: available e statusMsg.

O campo available indica se você pode usar o conjunto de dados ou não. A chamada a essa referência no conjunto de dados só é bem-sucedida quando available é true. O campo statusMsg dá mais informações sobre a situação do conjunto de dados. O valor CARREGANDO significa que a API está carregando os dados do arquivo CSV. Se você vir o statusMsg como EM FIL, isso significa que a API ainda não começou a carregar os dados, mas a solicitação está na fila.

Agora você pode fazer a chamada para obter o status do conjunto de dados.

  1. No comando cURL a seguir, substitua <TOKEN> pelo seu token e <DATASET_ID> pela ID do conjunto de dados. Em seguida, execute o comando na janela da linha de comando.
    curl -X GET -H "Authorization: Bearer <TOKEN>" -H "Cache-Control: no-cache" https://api.einstein.ai/v2/language/datasets/<DATASET_ID>
    A resposta da API será mais ou menos como este JSON. Você pode ver os rótulos que foram adicionados do arquivo CSV.
    {
      "id": 1010060,
      "name": "case_routing_intent.csv",
      "createdAt": "2017-08-18T18:20:37.000+0000",
      "updatedAt": "2017-08-18T18:20:39.000+0000",
      "labelSummary": {
        "labels": [
          {
            "id": 94034,
            "datasetId": 1010060,
            "name": "Order Change",
            "numExamples": 26
          },
          {
            "id": 94035,
            "datasetId": 1010060,
            "name": "Sales Opportunity",
            "numExamples": 44
          },
          {
            "id": 94036,
            "datasetId": 1010060,
            "name": "Billing",
            "numExamples": 24
          },
          {
            "id": 94037,
            "datasetId": 1010060,
            "name": "Shipping Info",
            "numExamples": 30
          },
          {
            "id": 94038,
            "datasetId": 1010060,
            "name": "Password Help",
            "numExamples": 26
          }
        ]
      },
      "totalExamples": 150,
      "totalLabels": 5,
      "available": true,
      "statusMsg": "SUCCEEDED",
      "type": "text-intent",
      "object": "dataset"
    }

    O nome do conjunto de dados deriva do nome do arquivo usado para criá-lo. No entanto, você pode transmitir um parâmetro name e dar a ele um nome específico.

    Quando available for true e statusMsg indicar BEM-SUCEDIDO, o conjunto de banco de dados estará pronto para treinamento. Quando statusMsg indicar BEM-SUCEDIDO, prossiga para a próxima unidade.

Recursos