Apresentando o IBM Watson
- Processamento de linguagem natural
- Geração e avaliação de hipóteses
- Aprendizado dinâmico
“O IBM Watson é um sistema de resposta a perguntas em linguagem natural que não usa respostas preparadas, mas determina suas respostas e pontuações de confiança associadas, que são baseadas em conhecimento adquirido”.
O IBM Watson une esses recursos eficientes de uma maneira nunca feita antes, resultando em uma mudança fundamental na maneira como as empresas veem a solução rápida de problemas. O IBM Watson é um sistema de resposta a perguntas em linguagem natural que não usa respostas preparadas, mas determina suas respostas e pontuações de confiança associadas, que são baseadas em conhecimento adquirido.
O Watson inspirou muitos desenvolvedores a sonhar com ideias novas e criativas para aplicativos que usam elementos cognitivos para entregar uma experiência melhor e mais customizada ao usuário. Aplicativos desenvolvidos com o Watson podem ir além do simples processamento de dados para encontrar correlações, criar hipóteses e aprender com os resultados. Neste artigo, usaremos a tecnologia Watson Question and Answer e a Question and Answer API (QAAPI) exposta pelo Watson para desenvolver um aplicativo de demonstração simples, o Watson Films.
Observação: Para executar o aplicativo “Watson Films” de ponta a ponta neste artigo, é necessário ter acesso a uma instância do IBM Watson- para isso, consulte Watson Developer Cloud Enterprise (arquivo em PDF) ou inscreva-se para o programa Watson Ecosystem. Para entender a entrada e a saída do Watson, fornecemos as amostras JSON de solicitação e resposta Watson QAAPI no projeto DevOps Services sob a pasta watson_films_dw/samples. Agradecemos a compreensão!
O aplicativo será hospedado e gerenciado no IBM Bluemix™, uma PaaS baseada em Cloud Foundry para construir, gerenciar e executar aplicativos de todos os tipos — web, móvel, big data e dispositivos inteligentes. O código para o aplicativo será gerenciado por meio do DevOps Services (JazzHub).
Características de um sistema cognitivo
- Navegam nas complexidades da linguagem humana e do entendimento;
- Absorvem e processam grandes quantidades de dados estruturados e não estruturados (big);
- Geram e avaliam inúmeras possibilidades;
- Pesam e avaliam respostas baseadas apenas em evidências relevantes;
- Fornecem orientação específica para a situação, insights e orientação;
- Melhoram o conhecimento e aprendem com cada iteração e interação;
- Habilitam a tomada de decisão no ponto de impacto;
- Dimensionam-se em proporção à tarefa.
Esses sistemas aplicam características semelhantes às de humanos para transmitir e manipular ideias. Quando combinados com os pontos fortes inerentes de computação digital, eles podem solucionar problemas com maior precisão, mais resiliência e em uma escala de maior dimensão. O Watson é um exemplo de um Sistema Cognitivo. Ele pode desenredar a linguagem humana e identificar inferências entre passagens de texto com alta precisão, semelhante à de um humano, a velocidades muito mais rápidas e em uma escala muito maior que qualquer humano. Uma abordagem baseada em regras exigiria um número quase infinito delas para capturar todos os casos que podemos encontrar na linguagem.
![Figura 1. Principais características de um sistema cognitivo](https://static.imasters.com.br/wp-content/uploads/2015/04/Key-Characteristics-of-a-Cognitive-System.png)
Preparando-se para desenvolver o Watson Films
O aplicativo Watson Films é uma demonstração simples de como desenvolver um aplicativo que interaja com o Watson usando a Watson QAAPI. Esse aplicativo permite que usuários façam perguntas sobre filmes, especialmente os 100 principais filmes americanos do American Film Institute, e sobre cinema em geral.
![Figura 2. A interface do Watson Films](https://static.imasters.com.br/wp-content/uploads/2015/04/Watson-Films-Interface.jpg)
Antes do IBM Watson poder responder perguntas do usuário, ele precisa ter uma base de conhecimento contendo informações a partir das quais possa formular respostas corretas. Para esse aplicativo, usamos conteúdo da Wikipédia sobre a lista dos 100 principais filmes americanos de todos os tempos de acordo com o American Film Institute. Esse conteúdo da Wikipédia está em formato HTML. Também usamos conteúdo do The Essential Reference Guide for Filmmakers da Kodak, que está em formato PDF.
Obtenha o código do Watson Films
- Experimente primeiro! Consulte a Demonstração do Watson Films;
- Obtenha ou visualize o código do Watson Films clicando no botão “Get or view the code” anterior ou usando o IBM DevOps Services com o Web IDE. Como este projeto contém código JavaScript, HTML e CSS, o Web IDE provavelmente é tudo o que é necessário visualizar ou editar depois de bifurcar o projeto;
- Para fazer o download e configurar este projeto no Eclipse IDE local (com o plug-in Nodeclipse instalado), siga estas instruções;
- Também é possível bifurcar o projeto “Watson Films” e criar seu próprio projeto DevOps Services baseado nos conteúdos deste projeto.
Sobre o código Watson Films
A seguir está um resumo das tecnologias usadas:
- IBM Watson
- Watson QAAPI : uma interface RESTful para Watson que habilita o usuário a fazer perguntas e receber respostas do Watson.
- Node.js : uma plataforma leve que é desenvolvida no tempo de execução JavaScript do Chrome para facilmente desenvolver aplicativos em rede rápidos e escaláveis no lado do servidor
- Express.js : uma estrutura de aplicativo da web para Node
- Bootstrap.js : uma estrutura de desenvolvimento da web de frontend simples e responsiva
- jQuery : uma biblioteca JavaScript rápida, pequena e com recursos completos
- Ladda : um kit de ferramentas de botão responsivo
- Slick Carousel : um carrossel JavaScript. Sim, Bootstrap também tem um carrossel, mas queríamos experimentar Slick!
Sobre a arquitetura do Watson Films
A arquitetura Watson Films é composta pelas seguintes camadas e componentes associados:
- Visualização: uma interface do usuário de frontend responsiva construída principalmente usando HTML5, CSS3, Bootstrap, jQuery e outros plugins do lado do cliente JavaScript. O componente view nessa camada permite que o usuário com um ponto de entrada faça perguntas sobre o Watson;
- Controlador: um nível de middleware e controlador baseado em Node.js e Express que expõem APIs de negócio RESTful à view . Essa API REST interage com o Watson chamando o Watson QAAPI e manipulando as respostas. Ela pode ser estendida para realizar outras operações de negócio, incluindo integração com outros serviços cognitivos e de terceiros;
- Backend cognitivo: o IBM Watson repleto de conteúdo sobre filmes e cinema. O Watson fornece uma interface RESTful, a QAAPI. Essa API permite que os desenvolvedores perguntem ao Watson sobre filmes e cinema e recebam respostas. As respostas incluem várias informações, como texto de resposta, nível de confiança do Watson e evidências que embasam a resposta;
- Plataforma e DevOps: o aplicativo Watson Films será implementado em IBM Bluemix. Também usa o DevOps Services para gerenciar o código. O DevOps Services é responsável pelo gerenciamento do código fonte do Watson Films e sua implementação no Bluemix. O Bluemix hospeda tanto a interface do usuário do frontend responsiva quanto o nível intermediário do Node.js, enquanto o IBM Watson e sua QAAPI estão hospedados na nuvem do desenvolvedor do IBM Watson.
![Figura 3. Arquitetura do Watson Films](https://static.imasters.com.br/wp-content/uploads/2015/04/Watson-Films-Architecture.png)
Mapeando o código para a arquitetura
watson_films_dw
. Esses arquivos e pastas relacionam-se diretamente aos componentes arquiteturais.- public/ – Esse diretório contém todo HTML, CSS e JavaScript do lado do cliente do Watson Films. É atendido por Node.js.
- watson/ – Esse diretório contém lógica usada pela API REST. Interage diretamente com o Watson usando a Watson QAAPI.
- app.js – Esse arquivo inicia o servidor da web, que hospeda a API REST e todo o conteúdo do lado do cliente.
Inserindo conteúdo relevante no Watson usando o Watson Experience Manager
- Carregar e gerenciar documentos;
- Criar e gerenciar uma base de conhecimento;
- Criar dados de treinamento para ajudar a ensinar o Watson sobre seu domínio;
- Testar o Watson usando uma UI simples de instalar enviando perguntas e visualizando as respostas retornadas;
- Monitorar e visualizar os relatórios de uso.
![Figura 4. Watson Experience Manager](https://static.imasters.com.br/wp-content/uploads/2015/04/Watson-Experience-Manager.jpg)
O Watson pode absorver vários formados de conteúdo, incluindo DOCX, DOC, PDF, HTML e texto. Esses formatos representam a maioria do conteúdo não estruturado disponível. Para o aplicativo Watson Films, inseriremos HTML da Wikipédia sobre os 100 melhores filmes americanos, conforme o American Film Institute. Também inseriremos um documento em PDF do The Essential Reference Guide for Filmmakers. Vamos carregar e inserir esses documentos com o Watson Experience Manager.
![Figura 5. Watson Experience Manager - Gerenciamento de Corpus](https://static.imasters.com.br/wp-content/uploads/2015/04/Watson-Experience-Manager-Corpus-Management.jpg)
Desenvolver e executar o Watson Films
A demonstração do Watson Films pode ser construída usando ou não o Eclipse. Os dois métodos são descritos a seguir.
Depois de fazer o download do projeto e configurá-lo localmente, é necessário acessar uma instância do Watson para executá-la de ponta a ponta. Também é necessário alterar a URL e as credenciais no arquivo watson.js
para que reflitam a sua própria instância do Watson. Fornecemos várias amostras do JSON de solicitação e resposta da Watson QAAPI, que podem ser encontradas em watson_films_dw/samples
.
Para mais informações sobre Watson QAAPI JSON, consulte Dentro do IBM Watson.
Desenvolver e executar com Eclipse/Nodeclipse
Etapa 1. Instalar o Eclipse
- Faça o download e instaleEclipse (v4.3.2 ou superior);
- Instale Nodeclipse – Arraste o botão Install para a barra de ferramentas Eclipse.
Etapa 2. Obtenha o código
O código Watson Films é contido em um repositório Git hospedado no IBM DevOps Services. Para obter o código:
- Abra a perspectiva do Git: Window->Open Perspective->Git.
- Clone o repositório: o código fonte está na ramificação origin/master.
- Insira a seguinte URL do repositório Git: https://hub.jazz.net/project/dimascio/WatsonFilmsDW.
- Insira suas credenciais do hub e conclua o assistente.
Etapa 3. Importe o projeto WatsonFilm para o Eclipse
Da perspectiva do Git, abra o Working Directory e selecione Import Projects.
![Figura 7. Importar projetos](https://static.imasters.com.br/wp-content/uploads/2015/04/Import-projects.jpg)
Etapa 4. Instalar dependências
Selecione package.json
e execute npm install
para instalar as dependências, por exemplo, Express. Instalar dependências é opcional. Todas as dependências são incluídas no repositório.
![Figura 8. Instalar dependências](https://static.imasters.com.br/wp-content/uploads/2015/04/Install-dependencies.jpg)
Etapa 5. Executar o código
Na perspectiva Node, selecione app.js
e Run As->Node Application.
![Figura 9. Executar o código](https://static.imasters.com.br/wp-content/uploads/2015/04/Run-the-code.jpg)
O Watson Films agora está em execução na porta 3001. Aponte o navegador para http://localhost:3001 para experimentar a demonstração.
Desenvolver e executar sem Eclipse/Nodeclipse
- Clone do Git: https://username:password@hub.jazz.net/git/dimascio/WatsonFilmsDW, em que username e password referem-se à sua conta do IBM DevOps Services;
- Instale Node.js;
- Execute
npm install express;
- Execute
npm install request;
- Navegue para o repositório clonado e a pasta
WatsonFilmsDW/watson_films_dw
; - Execute
node app.js
.
O Watson Films agora está em execução na porta 3001. Aponte o navegador para http://localhost:3001 para experimentar a demonstração.
Construir a API REST com Node.js
npm install
.Etapa 1. Expor a API REST
Nossa API REST é simples. Ela contém um único recurso, /question
. Quando uma solicitação POST é feita a /question
, a lógica de negócios chama o Watson usando a QAAPI.
Com algumas linhas simples de código do Node, o seguinte fragmento de app.js
define nosso recurso de pergunta e cria e inicia um servidor da web.
// Get access to our Watson module var watson = require('./watson/watson'); // Set up RESTful resources // POST requests to /question are handled by 'watson.question' app.post('/question', watson.question); // Start the http server http.createServer(app).listen(app.get('port'), function() { console.log('Express server listening on port ' + app.get('port'));
Etapa 2. Chamar a Watson QAAPI
Na seção anterior, definimos um manipulador para todas as solicitações POST para/question.
Esse manipulador é definido em um módulo de nó simples chamado watson
. O arquivo, watson/watson.js
, é responsável por chamar o Watson usando a QAAPI.
// Describe the Watson Endpoint // Specify the information and credentials pertinent to your Watson instance var endpoint = { // enter watson host name; for example: 'http://www.myhost.com' host : '', // enter watson instance name; for example: '/deepqa/v1/question' instance : '', // enter auth info; for example: 'Basic c29tZXVzZXJpZDpzb21lcGFzc3dvcmQ=' auth : '' }; // Handler for /question POST requests // Submits a question to Watson via the IBM Watson QAAPI // and returns the QAAPI response. exports.question = function(req, res) { if (!endpoint.host) { res.send(404, 'Watson host information not supplied.'); } var uri = endpoint.host + endpoint.instance; var request = require("request"); // Form a proper Watson QAAPI request var questionEntity = { "question" : { "evidenceRequest" : { // Ask Watson to return evidence "items" : 5 // Ask for five answers with evidence }, "questionText" : req.body.question // The question } }; console.log('Ask Watson: ' + req.body.question + ' @ ' + uri); // Invoke the IBM Watson QAAPI Synchronously // POST the questionEntity and handle the QAAPI response request({ 'uri' : uri, 'method' : "POST", 'headers' : { 'Content-Type' : 'application/json;charset=utf-8', 'X-SyncTimeout' : 30, 'Authorization' : endpoint.auth }, 'json' : questionEntity, }, function(error, response, body) { // Return the QAAPI response in the entity body res.json(body); }); }
Assim, o que esse código faz? Primeiro, ele exporta a função question
, nosso manipulador, de modo que possa ser acessada a partir de app.js
. A função question
pega dois parâmetros, a solicitação req
e a resposta res
.
A solicitação req
deve ser a cadeia de caractere que contém o texto da pergunta. A cadeiaquestion
é então usada para criar uma solicitação de pergunta da Watson QAAPI adequada conforme o modelo de Solicitação e Resposta do JSON da QAAPI.
Por fim, a função question
chama a Watson QAAPI de maneira síncrona usando o módulorequest
e retorna a resposta “como tal”.
Criar a interface do usuário
Todo o código da interface com o usuário do Watson Films pode ser encontrado no diretóriowatson_films_dw/public
. Como é de se esperar, index.html
e movies.css
definem a aparência, enquanto movies.js
é responsável por chamar a API REST e renderizar a resposta.
Etapa 1. Chamar a API REST Node.js usando JQuery
Para chamar a API REST, fazemos uma solicitação Ajax POST para o recurso /question
usando JQuery.
O fragmento a seguir é de movies.js:
// Ask a question. // Invoke the Node.js REST service. The Node.js // service, in turn, invokes the IBM Watson QAAPI // and returns to us the QAAPI response var ask = function(question) { var searchTerm = $("#searchTerm"); var samples = $('.dropDownSampleQuestion'); // Create a Ladda reference object var l = Ladda.create(document.querySelector('button')); ...... l.start(); // Form a question request to send to the Node.js REST service var questionEntity = { 'question' : question }; // POST the question request to the Node.js REST service $.ajax({ type : 'POST', data : questionEntity, dataType : "json", url : '/question', success : function(r, msg) { // Enable search and stop the progress indicator searchTerm.removeAttr("disabled"); samples.removeAttr("disabled"); l.stop(); // Display answers or error if (r.question !== undefined) { displayAnswers(r); } else { alert(r); } }, error : function(r, msg, e) { // Enable search and stop progress indicator searchTerm.removeAttr("disabled"); samples.removeAttr("disabled"); l.stop(); // Display error if (r.responseText) { alert(e+' '+r.responseText); } else { alert(e); } } }); };
Etapa 2. Renderizar respostas com Slick Carousel
Slick Carousel é uma biblioteca de carrossel muito interessante. A demonstração do Watson usa Slick para exibir as respostas que são retornadas pelo Watson. Cada resposta é renderizada em um slide dentro do carrossel. Os seguintes fragmentos de código descrevem como fazer isso.
O fragmento a seguir é de index.htm:
<!-- placeholder for the slick carousel --> <div class="col-lg-12"> <div id="answerCarousel" class="single-item answer" style="margin-top: 10px;"></div> <iframe name="form-iframe" src="about:blank" class="hidden"></iframe> </div>
Este fragmento é de movies.js:
var displayAnswers = function(r) { var answerCarousel = $("#answerCarousel"); var answerText = "Hmm. I'm not sure."; slickIndex = 0; if (r.question.answers[0] !== undefined) { answerText = r.question.answers[0].text console.log('answer: ' + answerText); slickIndex = r.question.answers.length; } answerCarousel.show(); for (var i = 0; i < slickIndex; i++) { $('#panswer' + i).remove(); answerCarousel.slickAdd(createAnswerSlide(i, r)); } answerCarousel.slickGoTo(0); };
IBM DevOps Services e Bluemix
- Uma interface com o usuário simples que ajuda a rapidamente criar o projeto;
- Gerenciamento de controle de origem integrado por meio de Git ou Jazz SCM;
- Mecanismo de desenvolvimento e implementação automáticos que ajudam a publicar o aplicativo com os serviços integrados Bluemix;
- complementados com painéis que ajudam a rastrear e planejar atividades do projeto.
Para uma lista mais detalhada de recursos, viste https://hub.jazz.net/features.
Criar um projeto usando o DevOps Services
![Figura 10. Criar um projeto no DevOps Services](https://static.imasters.com.br/wp-content/uploads/2015/04/Create-project-on-JazzHub.jpg)
Para o Watson Films, chamamos nosso projeto de “Watson Films” e escolhemos criar um novo repositório Git. Em seguida, definimos as preferências do projeto. Esse projeto é privado? Não. Desejamos usar o Scrum Development para rastreamento e planejamento? Com certeza. Desejamos implementar o aplicativo em Bluemix? É claro!
![Figura 11. Configurações do projeto do DevOps Services](https://static.imasters.com.br/wp-content/uploads/2015/04/JazzHub-Project-Settings.jpg)
Criar um aplicativo no IBM Bluemix
- Efetue login no Bluemix;
- Clique em Add an application e selecione Node.js;
- Atribua um nome ao aplicativo.
![Figura 12. Criando um aplicativo Watson Films baseado em Node.js no IBM Bluemix](https://static.imasters.com.br/wp-content/uploads/2015/04/Creating-Node.js-based-Watson-Films-Application-in-IBM-BlueMix.jpg)
Desenvolva e implemente a partir do DevOps Services para Bluemix
- Efetue login no DevOps Services;
- Clique em Build and Deploy;
- Habilite Simple;
- Clique em Edit Code;
- Crie o arquivo YAML
manifest.yml
na raiz do projeto DevOps Services (consulte as informações a seguir para detalhes).
![Figura 13. Estrutura do código no IBM DevOps Services](https://static.imasters.com.br/wp-content/uploads/2015/04/Code-Structure-in-IBM-JazzHub.jpg)
O arquivo manifest.yml
fornece a configuração de implementação do aplicativo.
- name – o nome do aplicativo;
- mem – a quantidade de memória alocada ao aplicativo;
- instances – o número de nós do cluster que atendem o aplicativo. Quando o valor das instâncias for maior que 1, o Bluemix automaticamente manipula o balanceamento de carga;
- command – o comando para iniciar o aplicativo;
- host – o nome do host;
- domain – o nome do domínio;
- path – o caminho para o diretório de trabalho. O comando é executado a partir desse diretório.
Implementar novas alterações ao Bluemix
- Clique em Edit Code e pressione Deploy ou
- Entregue para a ramificação que contém código fonte integrado e implementado!
Revise a integridade do seu aplicativo
Efetue login no Bluemix e clique no widget do aplicativo.
![Figura 15. Aplicativo sendo executado em Bluemix](https://static.imasters.com.br/wp-content/uploads/2015/04/Application-Running-in-BlueMix.jpg)
Watson Films em ação
O aplicativo Watson Films que é desenvolvido pelo IBM Watson agora está concluído. O aplicativo deve ser iniciado localmente em Node.js ou iniciado em Bluemix. Inicie o navegador de sua escolha no laptop ou dispositivo celular e aponte-o para a URL do aplicativo, por exemplo http://watsonfilms.ng.bluemix.net ou http://localhost:3001. O aplicativo cognitivo recém-escrito aparecerá. Clique no ícone suspenso à direita do botão “Ask Watson” para perguntas de amostra para experimentar.
Como é possível ver na Figura 16, a pergunta de amostra “Several critics have raved about Zhivago. Was it shown in Russia in 2000?” foi feita. O Watson entendeu a pergunta em um nível mais profundo que apenas as palavras individuais. Se analisarmos a pergunta mais de perto, ela é bastante ambígua. É possível facilmente confundir Zhivago com um restaurante em Chicago ou até mesmo um livro. Mas é sobre o filme. Dr. Zhivago. Em si, “2000” na pergunta aparece como um número, mas na verdade se refere a um ano. E Rússia é uma referência geográfica. Como humanos, quando lemos uma pergunta ou nos fazem uma pergunta, automaticamente realizamos esse tipo de análise linguística.A resposta reflete como o Watson entendeu a pergunta em um nível bastante profundo. Analisando a resposta, vemos como o Watson sabia como aplicar o contexto, preencher as lacunas, resolver ambiguidade e incerteza e interpretar com precisão a linguagem como um humano. Ele entendeu que Zhivago era, de fato, um filme, e que 2000 se referia a um ano. Então voltou com a resposta (…it was not shown in Russia until 1994…) que estava contida no documento não estruturado. O Watson entendeu os recursos da linguagem como usados por humanos. A partir disso, pode determinar se uma passagem de texto (chame-a de “pergunta”) infere outra passagem de texto (chame-a de “resposta”) com incrível precisão sob circunstâncias inconstantes. Para completar, o Watson forneceu insight sobre como chegou às suas conclusões fornecendo evidências.
![Figura 16. Watson Films em ação](https://static.imasters.com.br/wp-content/uploads/2015/04/Watson-Films-in-Action.jpg)
Conclusão: unindo tudo
Projetamos um aplicativo cognitivo básico que demonstra como integrar uma tecnologia cognitiva do Watson Q&A em um aplicativo e, assim, um projeto de software.
O Watson é uma plataforma complexa e eficiente incrível. Exploramos a IBM Watson QAAPI, que fornece uma interface RESTful simples que habilita um desenvolvedor a aproveitar a eficiência do Watson. Enquanto criamos o Watson Films, não apenas usamos o Watson, como também usamos várias tecnologias de ponta, incluindo Node.js e Bootstrap.js. Agora que vimos como é fácil usar a eficiência do Watson, mal podemos esperar para ver os aplicativos desenvolvidos com Watson com que todos vocês sonham! Exploramos o IBM DevOps Services e vimos como ele pode praticamente eliminar a necessidade de configurar e realizar a manutenção de servidores para serviços como gerenciamento, planejamento e implementação de controle de origem. Vimos como é incrivelmente fácil criar, gerenciar e implementar um projeto de software usando o IBM DevOps Services e o IBM Bluemix. Este aplicativo Watson Films criado é um bom ponto de partida que pode ser expandido e aprimorado com recursos mais cognitivos, além de capacidades sociais e de e-commerce. Algumas ideias incluem:
- Realizar extração de entidade nomeada da pergunta e resposta para buscar automaticamente filmes de um catálogo de serviços de fluxo de filmes;
- Realizar análise de sentimentos sobre a pergunta para entender o humor do usuário, oferecer produtos de mercado relevantes que estejam relacionados às preferências do usuário, como ingressos para filmes, locações e apresentações ao vivo;
- Realizar análise psicográfica do linguístico do usuário e derivar automaticamente traços da personalidade individual;
- Extrair as informações de local do dispositivo e oferecer informações e insights específicos para o local;
- Recomendar filmes dos que o usuário possa gostar com base nos atributos de análise psicográfica;
- Integrar-se com serviços de terceiros, incluindo de mídia social e sites de transações e e-commerce.
Sistemas cognitivos como o IBM Watson e uma PaaS como IBM Bluemix tornam a atualidade uma ótima época para ser um desenvolvedor. É possível desenvolver ótimos aplicativos com mais rapidez e simplicidade, infundindo capacidades cognitivas continuamente. Bem-vindos ao futuro, colegas desenvolvedores. Deixem a imaginação voar livre!
Dentro do IBM Watson
Como o Watson Q&A Service funciona?
As organizações de hoje precisam poder lidar com:
- A velocidade de big data em constante mudança e sendo recebido (tanto estruturado quanto não estruturado);
- Eles aumentam de tamanho (volume);
- Várias formas inconsistentes e muitas vezes imprevisíveis de dados (variedade);
- A consciência crescente de que muitos dos dados são incertos (veracidade).
Coletar insight e conhecimento de dados nesse ambiente está se tornando cada vez mais desafiador.A tecnologia IBM Watson Q&A permite que usuários ou outros sistemas interajam com ela usando perguntas ou consultas em linguagem natural. Então entende a linguagem natural, gera hipóteses e fornece respostas e insights com evidência de embasamento e um grau de confiança. O Watson, ao longo do tempo, “aprende e fica mais inteligente”:
- Sendo ensinado por seus usuários;
- Aprendendo com interações anteriores;
- Absorvendo novas informações.
Solicitação JSON da Watson QAAPI
A Watson Question and Answer API (QAAPI) é uma interface de serviço Representational State Transfer (REST1) que permite aos aplicativos interagir com o Watson. Usando essa API, é possível fazer perguntas ao Watson, recuperar respostas e enviar feedback sobre essas respostas. Além de simples perguntas e respostas, o Watson pode fornecer transparência sobre como ele chegou às conclusões por meio dos serviços REST. Outras funções, como absorver conteúdo na plataforma Watson, são expostas como ferramentas.
Para usar a Watson QAAPI RESTful, faça o POST de uma pergunta com uma carga útil JSON que se pareça com a Listagem 6:
{ "question": { "questionText": "Several critics have raved about Zhivago. Was it shown in Russia in 2000?", "formattedAnswer": false, "evidenceRequest": { "items": "2" } } }
POST deve possuir o cabeçalho HTTP, incluindo o seguinte,
Accept: application/json
Content-Type: application/json
X-SyncTimeout: 30
Há um valor de 30 segundos para o elemento do cabeçalho X-SyncTimeout. Esse intervalo representa o quanto o servidor espera depois de a pergunta ser enviada até atingir o tempo limite. O valor não representa quanto o cliente espera uma resposta do servidor.
Resposta JSON da Watson QAAPI
200 Created
. A resposta bem-sucedida também inclui um status de pergunta de concluído e as respostas. A seção de respostas contém as respostas classificadas por confiança. O valor para a confiança é uma percentagem decimal que representa a confiança do Watson nessa resposta. Valores mais altos representam uma confiança maior. A seção de texto contém o texto de cada resposta.A resposta também fornece informações de natural language processing (NLP) na resposta, incluindo detalhes sobre a classe da pergunta, foco, tipo de resposta lexical, lista de sinônimos e mais.