Introdução a Chatbot e NLP

Overview da crescente área de Chatbot, mostrando uma visão geral das tecnologias e plataformas envolvidas

Guilherme Reis Mendes
geleia
9 min readJun 28, 2020

--

É praticamento impossível não nos depararmos com bots em nosso dia a dia, eles estão por todos os lados, do atendimento automático dos call centers ao assistente pessoal no celular, muita gente já não passa um dia sequer sem “conversar” com um robô.

Segundo uma avaliação feito pela Business Insider a projeção de crescimento no valor de mercado de Chatbots aumenta exponencialmente, e poderá chegar $9.4 bilhões em 2024.

Chatbots opera em mais de 50% das tarefas e contribui em 20% em todas as tarefas de “conversação” nas mídias sociais.

Existem duas principais abordagens para desenvolvimento de Chatbots, rule-based e self-learning.

Rule-based utilizam uma série de regras definidas. Essas regras podem ser simples ou complexas, entretanto, o bot não é capaz de responder nada que fuja às regras estabelecidas. Eles não aprendem e trabalham apenas com aquilo com o qual foram treinados.

Self-Learning é divididos em dois tipos:

  • Retrieval-based: retorna a melhor resposta dentro de uma lista de respostas possíveis. São mais utilizados para um objetivo específico e permite um controle maior por parte dos desenvolvedores.
  • Generative: o bot é capaz de gerar novas respostas, baseado em um grande conjunto de conversas com o qual ele é treinado. Ele aprende a gerar uma nova resposta, porém, pode gerar respostas fora do contexto da pergunta.

Alguns dos grandes avanços em IA e machine learning nos últimos anos tem Statistical esido na área de percepção e cognição. Reconhecimento de voz e processamento natural de linguagem estão cada vez melhores para que possamos ter uma conversa mais fluida, humana, rápida e eficiente.

Uma questão para reflexão: Alguma vez já duvidou se estava conversando com humano ou um bot?

O que é Processamento Natural de Linguagem?

NLP é uma subárea da inteligência artificial que estuda os problemas da geração e compreensão automática de línguas humanas naturais. Convertem informações de dados em linguagem compreensível ao ser humano, ou seja, ensina o computador a interpretar e reagir “linguagens humanas”.

Os métodos de NLP mais usados no contexto de Chatbots:

1. Intent Matching: identifica o que o usuário quer dentre os processos que o bot atende.

2. Question Answering: respostas a perguntas através de busca em bases de conhecimento.

3. Entity Extraction: extrai as informações relevantes de uma frase (nomes, datas, locais, produtos, etc).

4. Sentiment Analysis: identifica o sentimento de frases (positivo, neutro, negativo).

5. Keyword Identification: extrai os termos principais de uma frase.

Algumas das ferramentas e tecnologias implementadas em NLP:

  1. Bag of Words: neste modelo, um texto (como uma frase ou um documento) é representado como o “saco” (multiset) de suas palavras, desconsiderando a gramática e mesmo a ordem das palavras, mas mantendo a multiplicidade. Envolve um vocabulário de palavras conhecidas e uma medida da presença dessas palavras.
  2. TF-idf: é uma medida estatística que tem o intuito de indicar a importância de uma palavra de um documento em relação a uma coleção de documentos. A importância é proporcional a frequência que a palavra aparece no documento.
  3. Word2Vec: é uma rede neural de duas camadas que processa texto por palavras “vetorizadas”. A entreada é o documento e o output é um set de vetores. Dizemos que é um método embedding.
  4. GloVe: é um outro método embedding. Aprende com base em uma matriz de coocorrência e treina vetores de palavras para que suas diferenças prevejam taxas de coocorrências. Clique aqui para mais detalhes.
  5. BERT: é o estado da arte nas questões de NLP, utiliza modelos de deep learning pré-treinados. Os atuais avanços e desenvolvimentos estão ligados a esse modelo.

Vamos entender o que é o Bidirectinal Encoder Representations for transformers (BERT). O modelo utiliza transformadores, um mecanismo de atenção para aprender as relações contextuais entre palavras em um texto. Publicado pela Google AI Language, o paper causou agitação na comunidade de machine learning e representa um grande avanço na variedade e qualidade das tarefas de NLP. Podemos dizer que é a principal ferramenta para as novas tecnologias dessa subárea.

Mas como ela funciona?

Transformadores é o primeiro modelo de transdução que depende inteiramente da self-attention para calcular representações de sua entrada e saída sem usar Recurrent Neural Network (RNN) ou convolução alinhados por sequência. A ideia por trás dos transformadores é lidar com as dependências entre entrada e saída com self-attention e recorrência completa. Explicaremos self-attetion mais a frente.

BERT foi projetado para pré-treinar representações bidirecionais profundas de texto não rotulado, condicionando em conjunto o contexto esquerdo e direito em todas as camadas. Como resultado, o modelo BERT pré-treinado pode ser ajustado com apenas uma camada de saída adicional para criar modelos de ponta para uma ampla gama de tarefas, como resposta a perguntas e inferência de idioma, sem modificações substanciais na arquitetura de tarefas específicas. BERT aprende informações do lado esquerdo e do lado direito do contexto de um token durante a fase de treinamento.

A bidirecionalidade é a verdadeira importância para a compreensão do significado de um texto.

Se tentarmos prever a natureza da palavra “bank” apenas com o contexto esquerdo ou direito, estaremos cometendo um erro em pelo menos um dos dois exemplos dados. Uma maneira de lidar com isso é considerar o contexto esquerdo e o direito antes de fazer uma previsão. É exatamente isso que o BERT faz, com ajuda do mecanismo de self-attetion.

Self-attetion relaciona diferentes posições de uma única sequência para calcular uma representação dela mesmo.

Olhando a imagem acima. Você consegue descobrir o que o termo “it” nesta frase se refere?

Refere-se à “street” ou ao “animal” ? É uma pergunta simples para nós, mas não para um algoritmo. Quando o modelo está processando a palavra “it”, a self-attention tenta associar “it” a palavra “animal” na mesma frase. Ela permite que o modelo observe as outras palavras na sequência de entrada para entender melhor uma determinada palavra na sequência.

Processamento de texto para o BERT

Para o BERT, todo input é uma combinação de três embeddings:

Embedding de posição: incorpora a posição de cada palavra em uma frase. Eles são adicionadas para capturar a “sequência” ou “ordem”.

Embedding de segmento: também pode usar pares de frases como entradas. É uma maneira de ele aprender, como se fosse perguntas e respostas, tentando prever a qual segmento a palavra pertence. No exemplo acima, todos os tokens marcados como “Ea” pertence a sentença A (e da mesma forma para “Eb”).

Embedding de token: são as incorporações aprendidas para o token específico do vocabulário passado.

Para um determinado input, sua representação de entrada é construída pela soma das combinações correspondentes de token, segmento e posição. Esse esquema abrangente de incorporação contém muitas informações úteis para o modelo. Essas combinações de etapas de pré-processamento tornam o BERT tão versátil.

Como usar BERT com seu próprio dataset (Fine-Tuning)

Usar BERT para uma tarefa específica é relativamente simples, apenas adicionando uma pequena camada no final do modelo principal pré-treinado.

  1. Problemas de classificação como análise de sentimentos é feito apenas adicionando uma camada de classificação na parte superior da saída do transformados para o token [CLS]
  2. Em Question Answering o software recebe uma pergunta sobre um texto e é necessário achar a resposta na sequência. Com BERT, modelos Q&A podem ser treinados com dois vetores adicionais que marcam o começo e o final de cada resposta.
  3. Com NER (reconhecimento de entidade nomeada), o software recebe o texto e é necessário marcar os vários tipos de entidades (pessoal, organização, data). Com BERT, modelos NER podem ser treinados alimentando o vetor de saída de cada token em uma camada de classificação que prediz o rótulo NER.

Nesse repositório você consegue ver o código completo para um exemplo de utilização de BERT com o dataset do kaggle “Real or not? NLP with Disaster Tweets”. A ideia é predizer quando um Tweet é sobre um desastre real ou não.

Provedores de tecnologia NLP para construção de Chatbot’s

Felizmente não precisamos construir um Chatbot do princípio, existem dezenas de plataformas que podem auxiliar na construção e implementação da mesma. Para escolher a plataforma certa para você temos que ter em mente alguns fatores importantes como:

  1. Aprendizado: A eficiência do Chatbot depende na sua infraestrutura de conhecimento e competência de aprendizado. Existem plataformas que requer que você treine o chatbot manualmente. Porém existem outras que já possuem Chatbots treinados com o corpus da organização, facilitando e agilizando o processo.
  2. Entendimento: Chatbots são feitos para simplificar e interpretar linguagens e tarefas complexas. Nesse contexto, é necessário que a plataforma possua capacidades de NLP e IA de ponta.
  3. Deploying: As melhores plataformas possuem Dialog Manager, Behavior engine, e NLP servive tools. Temos que levar em conta também as plataformas de integração e linguagens de programação.
  4. Treinamento: Um aspecto importante é a capacidade de treinar o Chatbot para novas conversas com usuários. Precisam ser constantemente monitorados em ordem que a precisão e acurácia quando respondendo os pedidos esteja de acordo com os empreendimentos. Chatbots modernos precisam aprender com cada conversa feita. Um caso isolado seria quando o treinamento manual é preciso para ensinar novos vocabulários.
  5. Custo: As plataformas atualmente utilizam combinações de preços mensais, pay-per-call e pay-per-performance. Pagamentos mensais fornece suporte e manutenção de chatbots; Pay-per-call fornece flexibilidade para pagar apenas quando estiver usando; Pay-per-performance garante economia, porque o custo é de acordo com objetivos alcançados ou não alcançados.

Algumas das principais plataformas no mercado:

  • DialogFlow

O Dialogflow incorpora os conhecimentos e produtos de machine learning do Google, como o Google Cloud Speech-to-Text, e é otimizado para o Google Assistant. Este bot suporta mais de 20 idiomas.

  • Wit.AI

Gerenciado pelo facebook, o API é extremamente fácil de integrar com seu aplicativo ou aparelho. Uma das grandes vantagens é que ele suporta praticamentes todas as línguas utilizadas no mundo atual. Ele também é de graça , porém tem limitação de suporte com o uso de ferramentas de terceiros.

  • IBM Watson

O Watson Assistant da IBM é provavelmente o provedor de NLP para chatbot mais conhecido e demandado pelo mercado. Ele oferece serviços como definição de intenções, entidades e diálogos, score absoluto , marcação de irrelevantes, buscas e conteúdo do catálogo. Um ponto interessante do Watson são as suas formas de detecção de entidades: baseada em dicionário ou em contexto. É um provedor que permite boa flexibilidade de recursos e que está em evolução no português do Brasil.

  • LUIS

Usa intenções e entidades. Todos os aplicativos LUIS estão centralizados em um tópico ou conteúdo específico do domínio. Possuem aprendizado constante e você pode usar modelos pré-existentes, de classe mundial e pré-criados do Bing e Cortana.

  • Kore.AI

O Kore é uma plataforma de chatbot de conversação de nível empresarial que satisfaz os requisitos complexos de casos de uso da empresa. Ele pode ser implantado no local, na nuvem ou usando um modelo híbrido. É uma plataforma omnichannel.

  • Amazon Lex

Oferece uma ótima interface de conversação para mensagens de texto ou voz. Você consegue facilmente integrá-lo com outros aplicativos de terceiros. Porém suporta apenas a língua inglesa.

  • Intercom

O Intercom é um chatbot de vendas, marketing e suporte que se integra às plataformas sociais e de comércio eletrônico e tem uma opção de bate-papo ao vivo. Conversas de canais sociais podem ser integradas em um CRM. Possuem emails automáticos, multi-língua, live chat, dashboard, planos sem custo e livre de códigos.

  • Engati

O Engati oferece chatbot e live chat. Ele tem a capacidade de interromper uma resposta de bot para que um humano possa assumir a conversa. Funciona em plataformas sociais e sites e oferece suporte multi-línguas. É um chatbot sem programação.

  • Ochatbot

Plataforma de chatbot de conversação de IA gratuita que não requer codificação. O Ochatbot aumenta os leads de negócios e as vendas on-line e responde rapidamente às perguntas dos clientes com módulos que incluem formulários de leads, pesquisas, assistente e comércio eletrônico, incluindo a importação de SKUs.

Obrigado pela leitura! A intenção do texto é guiar você na subárea de processamento natural de linguagem e as plataformas de Chatbot. Porém existem muito mais a isso. Se a sua intenção é implementar um Chatbot, sugiro que busque conhecimento sobre as aplicações e treinamento de NLP, e descubra em detalhes o que cada plataforma tem a oferecer, ou seja, qual plataforma oferece aquilo que você precisa.

--

--