A aprendizagem automática é uma ferramenta que está ajudando os desenvolvedores e cientistas de dados a realizar todos os tipos de tarefas:

  • Classificação - organizar e marcar dados

  • Regressão - encontrar relações entre pontos de dados

  • Previsão - usar dados atuais para prever o futuro

  • Detecção de anomalias - encontre pontos de dados incomuns

Neste post, mostrarei como você pode combinar a API REST baseada na Web que o Nexosis fornece para aprendizado de máquina com o Couchbase Server.

O primeiro lugar a ser visitado ao experimentar o aprendizado de máquina é geralmente o Kaggle. O Kaggle oferece uma grande variedade de conjuntos de dados perfeitos para aplicativos de aprendizado de máquina. Decidi usar o Conjunto de dados da Amazon Reviews for Sentiment Analysis (Eu tenho truncado e ligeiramente modificado para esta postagem).

Os dados desse conjunto contêm o texto de uma avaliação deixada na Amazon e um rótulo de "__label__1" ou "__label__2". O primeiro significa que foi uma avaliação negativa (1 ou 2 estrelas) e o segundo significa que foi uma avaliação positiva (4 ou 5 estrelas). A pontuação 3 é considerada neutra e não está incluída nesse conjunto de treinamento, mas vou explorar isso um pouco mais tarde.

Meu objetivo é dar à Nexosis uma avaliação da Amazon que seja não no conjunto de treinamento e fazer com que o Nexosis o classifique como "__label__1" ou "__label__2" para mim. Esse tipo de classificação também é conhecido como análise de sentimentos. Isso pode ser útil para alertar antecipadamente sobre uma experiência negativa do cliente, por exemplo.

Crie sua conta de aprendizado de máquina Nexosis

Achei muito fácil começar a usar Nexosis. A edição comunitária do O Nexosis é gratuito. Depois de fazer login, acesse sua página de perfil e anote sua chave de API (você precisará dela para cada solicitação de API que fizer).

Nexosis machine learning API key

A partir de agora, ao fazer uma solicitação HTTP para o Nexosis, você precisará incluir essa chave em seu cabeçalho como chave da API.

Configuração do aprendizado de máquina

A primeira etapa para configurar o Nexosis é fornecer a ele um conjunto de dados. Estou usando o conjunto de dados que obtive do Kaggle. Os dados são um arquivo CSV de duas colunas. Para obter esses dados para o Nexosis, você pode fazer uma solicitação como esta (usando uma ferramenta como o Postman, por exemplo):

Não se esqueça da chave API no cabeçalho!

A resposta dessa solicitação, se bem-sucedida, deve ser semelhante a esta:

Essa importação pode demorar um pouco. Você pode fazer uma solicitação GET para https://ml.nexosis.com/v1/imports para verificar se a solicitação foi concluída. Você verá esse conjunto de dados como um dos "itens".

Criação de uma sessão Nexosis

A próxima etapa é criar uma sessão do Nexosis. Isso iniciará o treinamento do Nexosis nos dados que você já importou. Aqui está um exemplo de POST para iniciar uma sessão:

Algumas observações sobre o significado de tudo isso:

  • "predictionDomain": "classification" (domínio de previsão) - Lembra quando eu disse que usaria a "classificação" para a análise de sentimentos?

  • "dataSourceName" : "AmazonReviews" - Dei esse nome à fonte de dados, portanto, estou dizendo a ela para usar essa fonte de dados para treinamento.

  • "targetColumn": "review_sentiment" - A coluna "review_sentiment" contém os valores "__label__1" ou "__label__2". Esse é o valor que eu quero que o Nexosis aprenda a gerar.

  • "extraParameters" : { "balance": true } - Se o seu conjunto de dados for desequilibrado (o que significa, por exemplo, que ele contém muito mais avaliações negativas do que positivas), isso poderá influenciar desproporcionalmente o aprendizado de máquina. Defina o equilíbrio como "true" (verdadeiro) para ajustar isso.

A resposta dessa solicitação será semelhante a esta:

Observe que esse tipo de sessão levará algum tempo para ser produzido. Você receberá uma notificação por e-mail da Nexosis quando a sessão estiver pronta. Você também pode verificar os "resultados" (consulte o URL acima) de tempos em tempos.

Modelo concluído

Quando a sessão for concluída, você receberá um modelId nos resultados, esse será outro GUID. Você precisará dele para prosseguir.

Depois de receber o modelId, você pode verificar a precisão do modelo. Faça um GET para https://ml.nexosis.com/v1/sessions//results e veja o métricas campo. Os resultados para o meu são os seguintes:

Isso permitirá que você saiba o quão confiável é o modelo. Se não for alto o suficiente para qualquer limite que você decidir precisar, talvez seja necessário tentar ajustar o modelo
para obter melhor precisão. Você pode considerar a adição/remoção de campos do conjunto de treinamento até atingir o limite necessário.

Ainda assim, não será perfeito, portanto, se essa análise for usada para algo crucial e de alto impacto, talvez seja melhor envolver um ser humano em alguma parte do processo.

A precisão do 81% é suficiente para eu prosseguir.

Teste o modelo de aprendizado de máquina

Vamos testar o modelo com REST. Farei uma solicitação POST para o arquivo /prever url usando o modelId como:

POST https://ml.nexosis.com/v1/models//predict

O corpo dessa solicitação conterá a avaliação da Amazon sobre a qual desejo obter a opinião da Nexosis. Darei a ela o texto de uma avaliação de 1 estrela.

Ao enviar isso, o Nexosis pensará sobre o assunto e retornará um resultado como este:

Isso significa duas coisas:

  1. O modelo está funcionando bem!

  2. A avaliação que acabei de enviar é provavelmente uma avaliação negativa. Lendo-a eu mesmo, tenho que concordar.

Uso do Nexosis no Couchbase

Em vez de criar essas solicitações POST manualmente, podemos usar o Nexosis diretamente no Couchbase.

Observação: o Nexosis não exige o Couchbase e vice-versa. O Nexosis simplesmente expõe uma API REST JSON e o Couchbase é capaz de usá-la. Eles funcionam bem juntos porque ambos seguem padrões comuns da Web.

Para usar o Nexosis no Couchbase, basta fazer solicitações CURL para a API do Nexosis a partir de uma consulta N1QL do Couchbase.

Permitir CURL no Couchbase

Primeiro, você precisa configurar o couchbase para permitir que ele faça CURL solicitações. Permitir qualquer solicitação CURL arbitrária seria um risco de segurança, portanto, você precisará optar por permitir determinadas solicitações. Para fazer isso, crie (ou atualize) um arquivo curl_whitelist.json. Confira CURL chega ao N1QL para obter mais detalhes.

Aqui está o arquivo curl_whitelist.json que estou usando. No Windows, esse arquivo vai para o diretório C:\Arquivos de programas\Couchbase\Server\var\lib\couchbase\n1qlcerts pasta.

Criação de uma consulta N1QL

N1QL é a implementação SQL do Couchbase usada para consultar JSON. Em última análise, você pode querer que o Nexosis alimente os comandos UPDATE ou INSERT. Mas, para este post, vou usar apenas um SELECT.

No Couchbase, criei um bucket com algumas avaliações que extraí manualmente da Amazon. (Também executei CREATE PRIMARY INDEX on reviews).

Reviews in Couchbase bucket

Eles não faziam parte dos dados de treinamento, portanto, o Nexosis dará uma pontuação de sentimento positivo ou negativo por conta própria.

Vamos começar com um simples SELECIONAR e construir a partir daí.

First simple query

Usando o CURL para trazer a aprendizagem automática

Em seguida, vou usar o CURL. Estou usando o LET para tornar a consulta mais legível.

Observe que o corpo está extraindo o texto diretamente do documento de revisão no Couchbase. A única coisa que selecionei (até agora) é a resposta completa do Nexosis, que é semelhante a esta:

Query 2

Eu poderia detalhar ainda mais os resultados do Nexosis e colocá-los lado a lado com a pontuação real da Amazon para ver como o Nexosis se saiu. Aqui está a consulta:

E aqui estão os resultados (trunquei o texto completo):

Resultados

Como era de se esperar, o Nexosis pegou a avaliação de 1 estrela da Amazon e percebeu corretamente que se tratava de uma avaliação negativa (classificou-a como "__label__1").

Ele também pegou a avaliação de 5 estrelas e percebeu corretamente que se tratava de uma avaliação positiva (classificou-a como "__label__2").

Também decidi dar a ele uma avaliação "neutra" de 3 estrelas. Observe que o conjunto de treinamento não tinha nenhuma dessas avaliações, portanto, isso pode não ser válido, mas eu estava curioso. Ele a classificou como uma avaliação negativa. Apenas com base na linguagem, isso provavelmente é correto. Na verdade, essa pode ser uma ferramenta útil para analisar avaliações aparentemente "neutras" e discernir se elas estão se inclinando para um lado ou para o outro.

Resumo

Sempre que você usar CURL no N1QL, tenha cuidado. Ao usar o CURL, você está colocando sua consulta à mercê de uma solicitação HTTP para terceiros. Talvez você queira executá-las em segundo plano como um processo em lote para ATUALIZAÇÃO e INSERIR em vez de um SELECIONAR como eu estou fazendo.

Mas se você usar o CURL com sabedoria, poderá usar uma ferramenta de terceiros, como o Nexosis, para realizar aprendizado de máquina, categorização, análise de sentimentos e muito mais. O Nexosis facilitou muito o meu início e é muito fácil de usar com um comando CURL padrão.

Se você estiver interessado no Nexosis, dê uma olhada no site Casos de uso da Nexosis para ver como o Nexosis pode ajudar você ou sua empresa. Se você tiver dúvidas sobre o uso do Nexosis, consulte a página Fóruns Nexosis.

Tem alguma dúvida sobre o Couchbase? Dê uma olhada na seção Fóruns do Couchbasee confira o Fórum N1QL se você tiver alguma dúvida sobre as consultas apresentadas nesta postagem.

Tem alguma pergunta para mim? Estou à disposição Twitter @mgroves.

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

Deixar uma resposta