- 1. Introdução
- 2. Desafio
- 3. Avaliação
- 4. Pré-requisitos
- 5. Instanciando o Watson Natural Language Understanding
- 6. Treinamento do classificador de anotações
- 7. Configurando a IBM Cloud Function
- 8. Instanciando o Watson Assistant
- 9. Aplicação Node.js na IBM Cloud
- 10. Submissão
O Banco Original, primeiro banco no Brasil a proporcionar abertura de conta corrente 100% digital, tem a inovação em seu DNA. Por isso, está em sempre em busca de melhorar a experiência de seus clientes, ao oferecer os melhores serviços, de forma simples, sem burocracia e seguro, por meio da tecnologia. Para auxiliar os clientes nas operações com fundos de investimentos, o Original procura uma solução que utilize Inteligência Artificial e que, pelo entendimento de linguagem natural, consiga identificar tipos de operação, de valor, cliente e fundo de investimento. O banco, uma vez com estas informações, será muito mais preciso na resposta para direcionar e processar a transação do cliente.
A proposta deste desafio é criar um sistema de investimentos em fundos mais sofisticado e eficaz do que um assistente criado somente utilizando Watson Assistant
, levando em conta também o sentimento do usuário em contato com o banco para direcionar melhor o atendimento, de maneira que o banco não perca a oportunidade do contato. No geral o participante deverá fazer com que o participante integre um modelo de anotações criado com o Watson Knowledge Studio
ao chatbot criado com Watson Assistant
.
A solução criada pelo participante deverá ser então um sistema intermediador que será capaz de capturar tanto a intenção e sentimento do usuário quanto entidades textuais. As entidades textuais consideradas são: o nome do usuário, fundo, valor e tipo de operação. Devido a grande variação de combinações de entidades, uma solução mais robusta é integrar o assistente virtual com capabilidades de entendimento de linguagem natural (Natural Language Understanding). Um modelo de anotação capaz de identificar as entidades será customizado no Watson Knowledge Studio
, que utiliza aprendizado de máquina para criar um classificador capaz de identificar entidades textuais em texto não-estruturado. O modelo criado no Watson Knowledge Studio
será carregado no Watson Natural Language Understanding
, o qual será integrado ao Watson Assistant
através de uma serverless IBM Cloud Function
. A arquitetura da solução é esquematizada na figura abaixo.
O Watson Assistant será então utilizado para interfacear um cliente de um banco com um sistema capaz de realizar operações financeiras, como investimento em fundos. Para realizar as operações desejadas pelos clientes de maneira correta, o Watson Assistant
(WA) deverá ser capaz de identificar certas entidades nas entradas de texto. Para que isso seja possível, um modelo de anotação deverá ser criado pelo participante no Watson Knowledge Studio
(WKS) e exposto via API pelo serviço Watson Natural Language Understanding
(WLNU). A integração do WNLU com o WA será realizada via IBM Cloud Functions
(ICF)
Neste desafio, será considerado que as entradas de texto no Watson Assistant seguirão um mesmo padrão, contendo obrigatoriamente as seguintes entidades:
- Nome do cliente, anotada no WKS como a entidade
cliente
; - Nome da empresa, anotada no WKS como a entidade
fundo
; e - Tipo de operação financeira, anotada no WKS como a entidade
operacao
.
Uma quarta entidade também deverá ser identificada (mas não necessariamente estará presente nas entradas de texto):
- Valor da operação, anotada no Watson Knowledge Studio como a entidade
valor
.
Para realizar esta atividade, o participante irá primeiramente utilizar o WKS para criar um modelo de anotação. Uma amostra de exemplos de entrada de texto (exemplos de conversas do cliente requisitando uma operação) serão fornecidas, e cada participante deverá criar seu próprio modelo de anotação de entidades com base nestes exemplos. É de responsabilidade do participante anotar estas informações no WKS.
Uma vez criado o modelo classificador de anotações no Watson Knowledge Studio
, ele deve ser exportado para o Watson Natural Language Understanding
para ser consumido via API.
Para integração do modelo classificador de anotações com o Watson Assistant
, o participante deverá em seguida escrever o código de uma IBM Cloud Function
capaz de realizar uma chamada para a API exposta pelo Watson Natural Language Understanding
, e dar como resposta um JSON em um formato específico contendo as entidades identificadas pelo modelo classificador de anotações previamente criado. A IBM Cloud Funcion é fornecida para o participante.
Quanto ao chatbot bancário, o participante deverá apenas instanciar o Watson Assistant
e importar a Skill fornecida na documentação. Para que este assistente virtual seja capaz de identificar as entidades, o modelo de anotação treinado previamente no Watson Knowledge Studio
e exposto via API do Watson Natural Language Understanding
deverá ser integrado ao Watson Assistant
. Para realizar tal integração, o participante deverá escrever o código de uma IBM Cloud Function
que deverá retornar um JSON contendo as entidades identificadas como resposta.
No geral, o participante deverá:
- Instanciar o
Watson Knowledge Studio
e criar o modelo classificador de anotações; - Instanciar o
Watson Natural Language Understanding
e expor o modelo criado no WKS via API; - Configurar uma
IBM Cloud Function
capaz de realizar uma chamada para a API exposta pelo WNLU; - Instanciar o
Watson Assistant
e importar a Skill fornecida na documentação; - Editar a intenção ExtraiEntidades do
Watson Assistant
para chamar aIBM Cloud Function
criada previamente; - Verificar o funcionamento do seu Watson Assistant;
- Copiar as credenciais do Watson Assistant no
.env
da aplicação Node.js fornecida na documentação e realizar sua implantação. - Acesse a URL da aplicação Node.js implantada e realize testes até ficar satisfeito com sua solução.
- Quando se sentir seguro, submeta sua solução.
Os participantes terão que disponibilizar as credencias e o model_id do seu Watson Assistant
. O validador automático irá enviar textos de entradas seguindo o mesmo padrão dos fornecidos na documentação e irá verificar se o Watson Assistant é capaz de identificar corretamente as entidades presentes no texto.
É mandatório criar as entidades no Watson Knowledge Studio
com os seguintes nomes (todas letras minúsculas, exatamente como está escrito abaixo):
fundo
cliente
valor
operacao
Neste arquivo.pdf temos alguns exemplos bons de anotação com algumas dicas.
O código da IBM Cloud Function
é fornecido para o participante, e retorna um JSON obrigatoriamente no formato abaixo:
{
"err": false,
"resposta": {
"empresa": "<nome da empresa>",
"cliente": "<nome do cliente>",
"valor": "<valor da operação>",
"operacao": "<operação financeira>"
},
"texto": "O jovem Tarcisio quer comprar R$500,00 em ações da IBM."
}
Exceto pela configuração das credenciais do WNLU, não é necessária nenhuma outra alteração no código da cloud function fornecida. O validador automático irá verificar a resposta do Watson Assistant (e se a integração com os outros serviços foi feita corretamente).
Você deverá cumprir os seguintes itens:
- Registrar na Maratona Behind the Code e confirmar o e-mail de cadastro.
- Registrar na IBM Cloud e confirmar o e-mail de cadastro.
O Watson Knowledge Studio
irá utilizar o Watson Natural Language Understanding
para expor o modelo de anotações via API. Portanto, primeiramente instancie o Watson NLU! na região de WASHINGTON-DC (us-east)!
🚨 SALVE AS CREDENCIAIS. VOCÊ IRÁ PRECISAR PARA SUBIR A APLICAÇÃO 🚨
Para pegar o IAM_APIKEY
(ou, em alguns casos, API Key
apenas), acesse o https://cloud.ibm.com/resources e veja na lista de Service
, você encontrará todos os serviços provisionados na sua conta. Clique no serviço Watson Natural Language Understanding
instanciado e em seguida clique na aba Credenciais de serviço
, à esquerda. Copie a API-KEY
e guarde-a.
Veja o vídeo abaixo de como treinar o seu classificador de anotações, usando o Watson Knowledge Studio
(ou WKS).
- Crie uma instância de Watson Knowledge Studio, em
Washington-DC
e acesse a plataforma, clicando no botão "Launch Watson Knowledge Studio". - Importe o dataset para o processo de
Annotation Task
. - Faço o treinamento por anotação nos documentos.
- Exporte o modelo para o
Watson Natural Language Understanding
previamente instanciado (na REGIÃO DE WASHINGTON-DC), copie oMODEL_ID
e guarde-o.
Acesse o IBM Cloud Functions e crie uma nova função
com Python 3
(pode ser qualquer nome sem espaço. Ex: banco_original
). Copie o conteúdo do arquivo action.py
que se encontra neste projeto (link aqui). Cole o código dentro do espaço substituindo o código auto-gerado já existente na function recém-criada.
Clique em "Salvar". Substitua as credenciais do serviço Watson Natural Language Understanding
nas linhas 8
(MODEL_ID do classificador de anotações criado com WKS), 11
(API_KEY do WNLU) e 12
(URL do WNLU). Após isso, acesse a aba Endpoints
.
Clique sobre o botão API-KEY
para acessar a API-KEY
da sua IBM Cloud Function.
Clique sobre o ícone para copiar o API-KEY
para a área de transferência.
Crie uma instância do Watson Assistant, em DALLAS
, e acesse a ferramenta de treinamento, clicando no botão Launch Watson Assistant
.
Importe a Skill do Jacob, o banqueiro virtual:
A skill do Jacob possui apenas uma intenção, e o participante não precisa alterá-la nem adicionar funcionalidades ao chatbot. É considerado que os clientes enviarão as mensagens todas no mesmo padrão (como no dataset.txt
disponibilizado nessa documentação).
Ainda na página web do Watson Assistant, após importar a skill do Jacob, clique na aba Dialog
e em seguida no nó @ExtraiEntidades
.
Altere as linhas 6
e 15
do JSON editor
dentro do nó do @ExtraiEntidades
, e adicione a API-KEY da Cloud Function e em name a URL da Cloud Function no formato especificado: '/NOME DA SUA ORG/actions/NOME DO SEU PACOTE/NOME DA SUA FUNCTION'.
Para subir a aplicação na IBM Cloud, você deve clicar no botão
abaixo para subir usando o IBM Continuous Delivery (também conhecido como Delivery Pipeline). Você deve subir a sua aplicação em Dallas. Troubleshooting: se você tiver problemas com o deployment, apague os serviços antigos de Toolchain e recrie-os, provavelmente houve erro na região ou está com múltiplos serviços criados na mesma conta.
🚨 CLIQUE PARA SUBIR A APLICAÇÃO NA IBM CLOUD 🚨
-
Configure o
Toolchain Name
com<maratona-id>-desafio7-behindthecode
, substituindo o<maratona-id>
pelo seu ID da Maratona (Ex: 100001). Se você não souber, verifique no seu e-mail, usado no registro da Maratona, para pegar o seu ID. -
Configure o
App name
com a mesmo valor usado no item 1. -
Crie uma chave (de uso interno). Basta clicar em "Create" e depois clique em "Create" novamente. Espere um instante até carregar todas os dados. Se demorar muito (mais de 5 minutos), recarregue a página e faça novamente o passo 1 e 2. Na parte superior, você pode deixar em Washington DC ou Dallas. Já na parte inferior (abaixo do item 2), é mandatório configurar a Região de Dallas.
Clique em Eclipse Orion Web IDE
para configurar a aplicação.
Abaixo está o passo-a-passo, obrigatório, para configurar a sua aplicação no Eclipse Orion Web IDE.
- Abra o arquivo
.env
para colocar as credenciais doWatson Assitant
e daMaratona
(lembre-se de que é o mesmo código usado para indicar novos participantes na Maratona). Preencha com os dados, após o=
(símbolo de igual).
# Credenciais para o Desafio 7
DESAFIO=7
MARATONA_ID=
# Watson Assistant
IAM_APIKEY=
WORKSPACE_ID=
- Abra o arquivo
manifest.yml
e altere o<maratona-id>
com o seu ID da Maratona, o mesmo usado acima. Lembre-se: é mandatório ter a URL com o formato doname
, apresentado abaixo.
applications:
- name: <seu-id>-desafio7-behindthecode
memory: 256M
instances: 1
buildpack: sdk-for-nodejs
Clique em Create new launch configuration
e crie a configuração para a sua aplicação (que está sendo criada em background). Launch Config Name
, Application Name
e Host
devem ter o mesmo nome, com o formato <maratona-id>-desafio7-behindthecode
, igual nos itens anteriores. Clique em SAVE
para salvar as configurações.
Clique em PLAY
(primeiro botão na imagem). Espere até ficar verde
(com o status: running
). Depois, clique em Open
(terceiro botão na imagem). Vai abrir a sua aplicação, com as configurações implementadas.
🚨 TESTE BASTANTE O SEU MODELO DE TREINAMENTO 🚨
Mande vários textos para analisar, com base no seu treinamento. Faça quantos testes forem necessários e, se precisar, treine e re-treine o seu modelo para melhorar cada vez mais. Quando se sentir confortável, faça a submissão do seu desafio. Lembre-se: NÃO é possível submeter mais de uma vez. Fique atento!
Através da aplicação na IBM Cloud (https://<maratona-id>-desafio7-behindthecode.mybluemix.net
), você irá clicar no botão SUBMETER DESAFIO, preencher com o seu CPF e enviar para a avaliação final.
FIQUEM LIGADOS NO SITE DA MARATONA PARA ACOMPANHAR O RANKING GERAL E O RANKING DO DESAFIO! FIQUE NA TORCIDA PARA ESTAR ENTRE OS MELHORES!
-
No
Logs
da aplicação, apresentou um erro (em vermelho). O que pode ser?Resposta: Veja se você colocou as credenciais da Maratona, Watson Assistant e Machine Learning no arquivo
.env
e se o arquivomanifest.yml
está correto, conforme descrito acima. Veja se a sua aplicação está rodando na URL correta conforme descrito acima.
Acesse o slack e mande a sua dúvida: ibm.biz/convite-slack.
Copyright 2019 Maratona Behind the Code
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.