
Amigos, chamamos a atenção para você uma tradução resumida de uma
apresentação curiosa sobre os problemas da criação de bots de bate-papo: quais são os recursos dessa tarefa, quais são as dificuldades no caminho dos desenvolvedores e como eles podem ser resolvidos. Também pedimos a um especialista do Centro de aprendizado de máquina da Jet Infosystems para comentar sobre esse material. Você encontrará a opinião dele no final do artigo.
Não são redes sociais, nem aplicativos móveis, mas as mensagens são uma tendência nova e muito importante. Hoje, a intensidade das mensagens está crescendo exponencialmente e, em termos de volume de dados, esse meio de comunicação ultrapassou as redes sociais em outro lugar no início de 2015. Por exemplo, o Facebook se concentra nas mensagens e vai empurrar todo o resto que está conectado à sua página nesta rede social - um feed de notícias e outras coisas - para algum lugar distante.
Hoje, graças aos smartphones, as interfaces de toque conquistaram o mundo. E parece que o próximo passo será a interface do usuário do bate-papo na qual você terá um bot de bate-papo por voz ou texto.
Vamos falar sobre as dificuldades que precisam ser superadas - e terão que ser superadas no futuro - pelos desenvolvedores de bots de bate-papo completos.
O que os analistas nos dizem?
O Gartner afirma que até 2022, 70% de todas as interações com os clientes ocorrerão através de algum tipo de IA. Supõe-se que mesmo o número de chamadas de voz na empresa diminua em 10%. No mínimo, quando os usuários fazem ligações para a empresa em 60% dos casos, a participação humana não é necessária. E em outros casos, as pessoas participarão apenas em alguma fase do processo, provavelmente se comunicarão diretamente com os usuários.
Segundo outros estudos, o mercado de chatbot crescerá exponencialmente. E não se trata apenas de atendimento ao cliente, mas também de vendas e marketing. Os pesquisadores acreditam que os chatbots poderão substituir 6% da força de trabalho em todo o mundo. Isso significa que quase 200 milhões de pessoas terão que procurar um emprego novo e mais interessante.

Finalmente, os analistas acreditam que o uso de chatbots pode economizar US $ 7 trilhões por ano em todo o mundo.
Intenções e Expressões
Há dois anos, eu odiava bots de bate-papo, mas hoje eu gosto deles porque os desenvolvo. Mas muitos hoje ainda não gostam deles. Por que os chatbots são tão ruins?
Parece-me que as razões de sua imperfeição podem ser divididas em dois grupos: um se refere ao campo da IA e o segundo, às pessoas. Mas como eu sou engenheiro e não sou muito forte em psicologia e outros tópicos relacionados aos próprios usuários, eles só falarão sobre IA.
Antes de tudo, precisamos nos perguntar: como os robôs de bate-papo reconhecem o que os usuários estão dizendo? O reconhecimento tem dois conceitos principais. Qual é a
intenção do usuário, seu objetivo? Por exemplo, uma pessoa recebeu uma fatura de serviços por uma quantia enorme e quer saber por que tantos. Ele se volta para o suporte ao cliente, sua intenção é obter uma resposta para sua pergunta. Esse usuário pode usar várias
expressões ; ele pode perguntar: "Por que minha conta é tão grande?"; "O que aconteceu?"; "O que há de errado com minha conta?"; "Por que eu deveria pagar tanto?" Esses conceitos são amplamente utilizados no campo da criação de bots de bate-papo.
Como reconhecer intenções e expressões?
Chatbots usados para isolar palavras-chave. Digamos, se o texto "usuário" estava no texto do usuário, o recurso provavelmente se refere ao serviço de cobrança. Mas o usuário pode dizer: "
Vi na fatura que provavelmente estava com a assinatura errada ". Essa pessoa não está interessada na conta, ele deseja outra assinatura. E você tem que inventar todos os tipos de regras da muleta.
Mas o usuário pode virar a frase e dizer: "
Acho que tenho a assinatura errada, porque notei que algo está errado na minha conta ". E suas muletas não funcionam mais! E você expande essas regras empilhando novas camadas de muletas.
Essas regras não funcionam perfeitamente e os desenvolvedores gastaram muito tempo na finalização. Progresso adicional foi alcançado apenas através do aprendizado de máquina. No campo da compreensão de uma linguagem natural (Natural Language Understanding, NLU), há uma direção separada que trabalha nessa tarefa.
Ao mesmo tempo, a NLU é parte integrante do Processamento de Linguagem Natural (PNL) - este termo descreve tudo relacionado à compreensão e geração de fala. Entender o que alguém está lhe dizendo é essencialmente uma classificação de expressões de acordo com uma intenção específica.
Dificuldades na determinação de intenções
Um dos principais problemas é a existência de expressões "ruins". Para treinar os algoritmos, você precisa gerar suas próprias expressões de intenção. Por exemplo, você tem esses exemplos:
Por que minha conta é tão grande?
Por que minha conta é tão cara?
Por que o valor da
minha conta é tão grande?
Eles podem ser usados como entrada para o treinamento de sistemas NLU e PNL. Essas frases são muito semelhantes, elas começam com "Por que ...". Além disso, todas as frases contêm as palavras "minha conta", para que você possa usar uma regra simples de alterar a ordem, por exemplo, a presença da frase "minha conta". Além disso, cada vez que a palavra "so" é mencionada, podemos assumir que ela se refere especificamente à discussão da conta. Se você não explicou ao algoritmo o que exatamente importa para determinar esse tipo de intenção, seu sistema de PNL não funcionará bem.
Na frase, “
Por que diabos devo pagar muito mais do que o habitual? »Não há nenhuma das palavras destacadas acima. O sistema da PNL não será capaz de entender que a proposta pertence a esse grupo, a menos que você tenha uma única intenção. Mas se houver várias intenções, a situação se torna muito complicada.
Variedade de expressões
Portanto, precisamos de um conjunto muito diversificado de expressões. Gerá-los não é uma tarefa fácil. Para isso, desenvolvi minha estratégia de diversificação.
→
Uma parte do sistema de PNL gerencia uma variedade de sinônimos e outra parte lida com uma variedade de ordem de palavras. A maioria dos sistemas de PNL consiste em dois blocos principais:
- Word2Vec converte palavras reconhecíveis em representação vetorial.
- Uma rede neural convolucional (SNA) ou uma rede neural recorrente (RNS) que processa a ordem das palavras.
Os recursos do Word2Vec permitem reconhecer certas propriedades das palavras e, como resultado, palavras com significado semelhante estarão próximas umas das outras. Colocar no eixo "tamanho" dos veículos:
E se você fez tudo certo, pode distribuir essas entidades por outro eixo - o ambiente para o qual esse tipo de transporte é destinado.
Para treinar o sistema, você precisa saber qual variedade é relevante para sua tarefa e qual não é relevante. Digamos que você precise transportar algo realmente grande, e o método de transporte não importa. Então, provavelmente, essa variedade será aceitável:
Em outro caso, o tamanho pode não importar se entregue apenas por terra.
Word2Vec converte palavras em representação vetorial. Essa representação é então transmitida a uma rede neural que estuda a ordem das palavras.
Minha estratégia é bem simples. Primeiro, criamos muitas ofertas. No caso da conta, não estamos interessados em sinônimos, mas apenas na ordem das palavras.
Por que minha conta é tão grande?
Minha conta é tão grande!
Na minha conta, uma quantidade ultrajante!
A palavra "pontuação" está em diferentes lugares da frase. Estamos tentando gerar o maior número possível de exemplos com ordem de palavras diferente, sem nos preocupar em como expressar um pensamento em palavras diferentes.
Então você precisa adicionar sinônimos para a diversidade. Suponha que, na primeira frase, em vez de "
por que "
, você possa dizer "
como aconteceu ... ", "
me explique por que ... " ou "
me diga como aconteceu isso ... " e, em seguida, finalize a frase com qualquer outra opção Por exemplo, "
Explique-me por que seu cheque é tão grande ".

Criamos uma lista de sinônimos permitidos nesse contexto, escrevemos um script para gerar expressões e obtemos um bom conjunto de dados de treinamento. E então você precisa dizer explicitamente ao sistema quais sinônimos são permitidos neste contexto.
Melhoria
Parece-me que muitas empresas esquecem que o bot de bate-papo resultante precisa ser aprimorado.
Tome a frase: “
Como aconteceu que eu preciso pagar muito mais do que o habitual? »Essas palavras não estão incluídas nos meus sinônimos e a ordem das palavras é diferente da usada anteriormente. Não há necessidade de adicionar esta frase como outra expressão. Primeiro, veja se existe uma ordem de palavras e, se não, basta adicionar a frase como uma nova ordem de palavras e, em seguida, adicionar sinônimos. Dessa forma, você obtém um conjunto muito diversificado de expressões.
Avaliação de Expressão de Variedades
Como você sabe o quão bem tudo funciona? Você pode experimentar a combinação de representações vetoriais de palavras em grupos de expressões simplificadas e avaliar a diversidade delas.

A métrica é muito simples: contamos o número de clusters e dividimos pelo número de expressões. Em média, uma grande variedade de expressões tem um nível de aproximadamente 50%.
Obviamente, se a variedade estiver abaixo de 20%, você não estará trabalhando muito bem. Por outro lado, se a diversidade estiver acima de 80%, as expressões provavelmente não estarão relacionadas entre si, e é muito difícil para o algoritmo encontrar uma boa combinação.
Precisão do reconhecimento
Uma pontuação de trem significa com que precisão o sistema funciona em um conjunto de dados de treinamento. Isso não é muito interessante, porque você receberá apenas uma avaliação do seu conjunto de dados de treinamento. E o que fazer a seguir não está claro.
Nessa situação, você deve estar interessado em quais expressões são classificadas incorretamente. Onde tudo deu errado?
A frase "
vi na fatura que provavelmente tenho a assinatura incorreta " tem uma alta probabilidade de ser classificada incorretamente, mesmo com os exemplos que mostrei acima.
E se você perceber que a proposta está classificada incorretamente, precisará descobrir como melhorar a situação.
O Word2Vec e uma rede neural recorrente são frequentemente considerados caixas negras; são muito difíceis de interpretar. Mas ainda existe um caminho não muito difícil. Separadamente, para cada palavra, adicionamos ruído. E começando a mudar uma palavra, você verá o quão sensível é a definição dessa palavra em particular.
O mesmo acontece com todas as palavras da frase: adicione ruído ao vetor e execute-o através do algoritmo. Se o resultado for o mesmo, o algoritmo não está interessado nesta palavra. Se, após adicionar ruído, o resultado se tornar completamente diferente, provavelmente esta palavra será muito relevante.
Analisando a sensibilidade dessa maneira, você poderá entender que a intenção foi determinada erroneamente, por exemplo, por causa da palavra "contagem". Ou, se a frase contiver apenas as palavras "por que ...", então talvez tenham sido elas que levaram a essa definição de intenção. Se a coisa toda estiver na palavra "score", você terá várias opções:
- Exclua esta expressão e sua expressão classificada incorretamente desaparecerá.
- Ou no grupo de expressões associadas à assinatura, você simplesmente adiciona mais expressões com a palavra "contar" para que o sistema comece a "entender" que essas duas palavras podem ocorrer juntas. E, com base no contexto, você deve descobrir o que acontece, independentemente de ser uma conta ou uma assinatura.
- Ou, inversamente, você pode adicionar mais expressões relacionadas à "contagem", mas não a contê-las, para que o sistema se torne menos sensível à "contagem".
Fluxos de conversação
A próxima coisa, à qual poucas pessoas prestam atenção, são os fluxos de conversação. Como as pessoas usam seu bot? Como eles trabalham com ele? O que está acontecendo na conversa? O que a maioria dos usuários faz?

Este diagrama mostra o desenvolvimento da conversa. Pode-se ver que esse tópico é usado com mais frequência, que muitas pessoas gostam dessa parte do bot. Mas é mais importante ver onde surgem momentos na conversa que levam as pessoas a parar de usar o bot: perguntam algo e depois saem de repente.
Análise de emoção
É importante tentar entender como as pessoas se sentem quando conversam com seu bot de bate-papo. Para isso, usamos a análise de emoções. Se você consegue entender que 60% ou mais dos usuários se sentem insatisfeitos depois de conversar com um bot de bate-papo, algo precisa ser feito. Não creio que nenhuma plataforma de diálogo leve em consideração essas informações.
Muitas vezes, emoções negativas causam propostas que não parecem negativas - elas foram aprendidas apenas por um bot de bate-papo baseado em emoji. Se você tem uma frase sarcástica no conjunto de dados, isso pode significar qualquer coisa. Um bot não deve assumir que está associado a emoções ruins, porque a expressão pode ser neutra.
Exemplos de uso
Quando usar os bots de bate-papo? Quando seus clientes precisam de uma resposta rápida ou não querem ficar na fila do telefone, antes que um operador esteja pronto para ajudá-los.
Se não houver pessoal suficiente, por que não usar o bot de bate-papo para responder rapidamente a perguntas básicas ou comuns?
Também é muito importante descobrir qual área da sua empresa é responsável pela maior parte dos custos, pois você poderá economizar muito dinheiro se transferir essa área para os bots de bate-papo.
Os robôs não são os melhores interlocutores em termos de emocionalidade. Se você ligar para o serviço de resgate, deseja uma resposta direta. Mas se você tiver problemas com o carro ou um pequeno acidente, ligue para o serviço de automóveis e não quer esperar muito tempo na fila, basta dizer: "Meu pneu estourou", algo assim. Claro, não me refiro a pequenos acidentes ou acidentes com um grande número de feridos; em tais situações, os chat bots não podem ser usados.
E quero abordar outro aspecto: avaliar se o bot de bate-papo é adequado para uma tarefa específica. Muitos de nossos clientes vêm até nós e dizem: “
Temos esse formulário no site, por que não transferi-lo para o chatbot? “Mas trabalhamos com formulários há muitos anos e acreditamos que eles são muito eficazes.
Os formulários são muito simples e as pessoas sabem como trabalhar com eles. Por que transformar um formulário em um bot de bate-papo? Parte da interação do usuário é adequada para o chatbot, mas às vezes é melhor simplesmente preencher o formulário, porque é muito mais fácil.
Mas existem outras situações.
Por exemplo, se a interface gráfica não for muito conveniente para procurar informações, a interface do usuário conversacional poderá se tornar a saída. Obviamente, se você tiver expressões "ruins", o bot de bate-papo não funcionará. E, geralmente, essas expressões são geradas por uma pessoa.
O mais importante é o design da conversa. Uma conferência inteira do VoiceCon é dedicada a esse tópico. O design da conversa deve ser muito rigoroso. E se você criar um bom design, poderá se safar da IA de qualidade não muito alta. E isso é bastante triste, pois causa falhas nos chatbots.
Dicas úteis
Provavelmente, muitos de vocês já viram pop-ups em sites: “Olá. Posso ajudá-lo com alguma coisa? ou “Vejo que você está tentando enviar uma carta. Deixe-me ajudá-lo!
Não coloque robôs de bate-papo na página principal. NÃO FAÇA.
Esses robôs só podem ser usados de forma mais branda se não ocuparem a página inteira. Então as pessoas começam a usar o bot, porque ele pode ajudá-lo a encontrar as respostas. Além disso, como você limita o escopo do bot, fica mais fácil o desenvolvimento. No entanto, você não incomoda as pessoas com um bot que elas não precisam atualmente.
As pessoas tendem a personalizar o chatbot. Eles não gostam de robôs deliberados.
Personalize o seu chatbot! Mesmo que você diga a seus clientes toda vez que ele é um robô, ofereça alguns recursos individuais.
Se você é gerente de hotel, talvez precise de um robô de bate-papo muito formal que fale como um mordomo: "Sim, senhor", "Obrigado, senhor". E se você é uma empresa de telecomunicações e está desenvolvendo planos tarifários para jovens, é melhor usar algo como: "Ei, pessoal, tudo bem?"
Lembre-se sempre de quem é seu público.
Se você é elegante e consistente, o bot de bate-papo atrairá mais seus clientes. Mantenha a consistência durante todo o fluxo de conversação, porque geralmente tudo começa bem e, depois de um tempo, a conversa se torna muito robótica.
É muito importante que seu chatbot se comunique de maneira colaborativa. E de grande importância é a maneira como aparece no início.
Uma pessoa abriu seu bot de bate-papo por algum motivo. Explique imediatamente ao usuário que você pode criar um bot de bate-papo. Além disso, gerencie as expectativas do usuário: diga que você é um bot, porque alguns erros serão desculpáveis para ele.
Não use frases muito gerais. Não pergunte: "Como posso ajudá-lo?"
Normalmente, pergunto a esses bots: "
Ajude-me a ganhar na loteria ", ou algo assim. Então deixe o bot se comunicar de forma clara e simples.
É realmente importante - e difícil - lidar com a transferência de iniciativa em uma conversa.
Quando nos comunicamos, usamos sinais visuais que nos permitem entender: "
Agora é minha vez de falar ". Mas conversar é muito difícil de implementar. É necessário deixar claro para o usuário que agora o bot está aguardando o que uma pessoa escreverá para ele. Por exemplo, ele pediu um hambúrguer e o bot pode perguntar: “
Você quer mais batatas fritas? "
É muito importante usar a linguagem humana em bots.
Conversa seca é muito irritante. Use a identidade do bot para tornar a conversa mais crível.
É muito tentador começar a confirmar ou verificar confirmações ao longo da conversa com o cliente.
Mas é irritante se o bot perguntar constantemente: "Está tudo bem?" ou "certo?" ou "Você pediu um hambúrguer, certo?" Não faça isso no seu chatbot!
Isso é permitido apenas onde é realmente relevante. Por exemplo, no final da conversa, adicione: “
Bom. Agora você tem que pagar um hambúrguer com batatas fritas e uma bebida. Está tudo bem? »Uma maneira elegante de fazer isso é ter a confirmação embutida. Se você pedir um hambúrguer, poderá perguntar: “
Ótimo. Você quer batatas fritas no seu hambúrguer?Em algum momento, o bot pode interpretar mal alguma coisa. Além disso, as pessoas tendem a cometer erros. Às vezes, você pede algo e pensa: "
Hmm, provavelmente tomo bacon triplo, é melhor ". Portanto, o desenvolvedor deve garantir que o chatbot seja capaz de lidar com isso. Você deve criar um fluxo de conversa para entender que, neste ponto da conversa, queremos alterar a ordem.
Crie encadeamentos robustos contra erros do usuário, pois as pessoas cometem erros constantemente!
O objetivo é lembrar um pouco a pessoa, mas a comunicação com pessoas que constantemente se desculpam é muito irritante. Portanto, não deixe seu bot de bate-papo se desculpar com muita frequência. Evite desculpas, sugira soluções. Diga: “
Eu não entendi. Você pode reformular? "Se você cometer alguns erros, poderá informar ao usuário:"
Você está pedindo algo que eu não entendo. Você pode pedir um hambúrguer, batatas fritas e bebidas comigo .
O futuro
Facilite para o cliente criar um chatbot com um bom design de conversação. Se você cometer um erro, tente corrigi-lo. Honestamente, os chatbots ainda são ruins. Mas você pode criar bots de bate-papo que realmente funcionem, faça algum trabalho para nós. Só tem que abordar isso corretamente.
Opinião de especialista
E agora queremos compartilhar com você a opinião de um especialista da nossa empresa sobre as idéias e dicas descritas aqui.
Nikolay Knyazev, especialista em aprendizado de máquina da Jet Infosystems :
O discurso do autor é dedicado ao que o desenvolvedor precisa saber para criar bots de bate-papo bem-sucedidos. O tópico é interessante, muitos pontos não se encontram na superfície. No entanto, vale a pena entender que, do ponto de vista dos algoritmos, a visão geral dos métodos é bastante geral e não há indicação de sua implementação.
Por exemplo, um exemplo com o Word2vec é fornecido, mas não é mencionado sobre outros métodos de vetorização de palavras, por exemplo, Glove, Fasttext. Existem várias maneiras de classificar o texto (da bolsa de palavras à RNN e CNN), mas não há comparação ou bibliotecas onde elas são implementadas (por exemplo, para Python, são Keras, Scikit-learn etc.). Dois pontos importantes foram perdidos na revisão geral. Primeiro, detalhes regionais: métodos diferentes serão bem-sucedidos para diferentes idiomas. E a implementação para o idioma inglês definitivamente não é adequada para o idioma russo. Embora em nosso país haja desenvolvimentos, por exemplo, o bigARTM ou o prédio da Taiga, com base nos quais é possível treinar o Word2vec mencionado.
Outro aspecto é o conceito de uso do bot: bot de uma só vez (escolha de um apartamento, solução de um problema) ou uso constante (parte do processo de trabalho). No primeiro caso, de fato, as emoções da comunicação e tudo o que o autor falou são lembradas. No segundo, as pessoas aguardam precisamente o "fuzil de assalto Kalashnikov" para que ele execute suas funções sem perguntas adicionais, aprendendo lentamente as maneiras mais curtas de usá-lo. E aqui não é a cor emocional que vem à tona, mas a experiência do usuário, porque até agora as redes neurais em nossa cabeça se ajustam à realidade muito mais rapidamente do que seus irmãos em ferro.