Desenvolvimento

26 out, 2018

Melhorando a comunicação por meio de bate-papo com um clique: sistema de Resposta Inteligente da Uber

Publicidade

Imagine-se em pé na calçada, esperando que sua corrida com a Uber chegue. No seu aplicativo, você vê que o carro mal está se movendo. Você envia uma mensagem para o motorista para descobrir o que está acontecendo.
Sem que você saiba, o seu motorista fica preso no trânsito a caminho de seu local de embarque.

Ele recebe sua mensagem e quer te responder de volta. Este cenário é algo que os parceiros-motorista da Uber nos dizem ser um ponto problemático. Então começamos a pensar, e se fosse possível para as pessoas que dirigem comunicarem-se com os passageiros com um simples clique.

O resultado de nossos esforços é um novo recurso de resposta inteligente chamado chat com um clique (OCC). Com o OCC, a coordenação pré-viagem entre os passageiros e os parceiros-motorista é mais rápida e mais perfeita.

Aproveitando as técnicas de machine learning e de processamento de linguagem natural (NLP) para antecipar respostas a mensagens comuns de passageiros, a Uber desenvolveu o OCC para tornar mais fácil para os motistas parceiros responderem às mensagens no aplicativo.

O OCC, um dos mais recentes recursos aprimorados do UberChat, tem como objetivo fornecer aos motoristas parceiros da Uber uma experiência de bate-papo com um clique, oferecendo as respostas mais relevantes.

Figura 1: Com o bate-papo com um clique, os parceiros-motorista podem responder com mais facilidade às mensagens do passageiro.

Arquitetura do bate-papo com um clique

O bate-papo com um clique (OCC) aproveita a plataforma de aprendizado de máquina da Uber, Michelangelo, para realizar a NLP nas mensagens de bate-papo do passageiro e gerar respostas apropriadas. Conforme mostrado na Figura 2, abaixo, a arquitetura segue um fluxo de cinco etapas:

  • Lado do remetente (aplicativo do passageiro) envia uma mensagem.
  • Uma vez que nosso serviço de back-end recebe a mensagem, ele envia para o serviço de machine learning em Michelangelo.
  • O modelo de aprendizado de máquina pré-processa e codifica a mensagem, gera pontuações de previsão para cada intenção possível e as envia de volta ao serviço de back-end.
  • Quando o serviço de back-end recebe as previsões, segue a política de recuperação de respostas para encontrar as melhores respostas (neste caso, as quatro principais).
  • O lado do receptor (aplicativo do motorista parceiro) recebe a sugestão e a processa no aplicativo para que o parceiro-motorista dê o toque.
Figura 2: A arquitetura do sistema de resposta inteligente da Uber, OCC, consiste em um fluxo de trabalho de cinco etapas.

Para encontrar as melhores respostas para cada mensagem recebida, formulamos a tarefa em uma solução de aprendizado de máquina com dois componentes principais: 1) detecção de intenção e 2) recuperação de resposta.
Considere este exemplo, mostrado na Figura 3, abaixo, para entender melhor como o aprendizado de máquina permite a experiência do OCC:

Figura 3: O algoritmo de aprendizado de máquina permite o fluxo da experiência de OCC. Dois passos principais estão envolvidos: 1) detecção de intenção e 2) recuperação de resposta.

O motorista parceiro recebe uma mensagem de passageiro perguntando “Onde você está agora?”, o que é muito comum durante o tempo de embarque. O sistema OCC primeiro detecta a intenção da mensagem como “Onde você está?”. Essa etapa é chamada de detecção de intenção.

Em seguida, o sistema apresenta as quatro respostas mais relevantes ao motorista parceiro, que são: “Sim, estou a caminho”, “Desculpe, ainda estou no trânsito”, “Estou no seu endereço de embarque” e “Ligue para mim, por favor”. Esta é a etapa de recuperação da resposta. Agora, o parceiro-motorista pode selecionar uma dessas quatro respostas e enviá-la de volta ao passageiro com um único toque.

Implementando o OCC no UberChat

Nosso sistema UberChat permite comunicações no aplicativo para motoristas parcereiros, passageiro, Eaters e parceiros de entrega na plataforma da Uber. O fluxo atual segue os sistemas de mensagens padrão: esperamos que o remetente digite suas mensagens, que serão transmitidas ao receptor. A Figura 4, abaixo, mostra a visão geral do sistema UberChat, com um fluxo de mensagens típico:

Figura 4: O serviço de back-end do UberChat gerencia o fluxo de mensagens entre os remetentes e os destinatários.

Para cada mensagem que um usuário envia, a plataforma de mensagens da Uber (UMP) faz o seguinte (conforme mostrado acima na Figura 4):

  • Envia a mensagem do remetente para o Edge Gateway da Uber
  • Roteia a mensagem para a Plataforma de Mensagens da Uber
  • Adiciona a mensagem aos serviços de Notificação por Push
  • Mensagem persistente para o cluster Cassandra de armazenamento da Uber
  • Executa o envio Remoto e Local para enviar mensagens para o receptor
  • Busca o corpo da mensagem da Plataforma de Mensagens quando a mensagem é recebida

Para dar suporte às respostas inteligentes, precisamos da capacidade de avaliar as respostas em tempo real usando modelos de aprendizado de máquina em tempo hábil com latência baixa o suficiente. Para atender a essa necessidade, aproveitamos o treinamento de aprendizado de máquina e o serviço de pipelines na plataforma de aprendizado de máquina da Uber, Michelangelo.

Entregando respostas inteligentes com aprendizado de máquina no UberChat

Por padrão, o OCC tem como objetivo fornecer uma experiência de chat fácil para os motoristas parceiros durante o período de embarque do passageiro, um cenário específico da Uber e um tópico. No entanto, ele compartilha um desafio técnico com todas as outras tentativas de entender mensagens de texto comuns: elas não apenas são curtas, mas também contém abreviações, erros de digitação e coloquialismos. Projetamos nosso sistema de aprendizado de máquina com esse desafio em mente.

Do lado de fora olhando para dentro, o OCC recebe a última mensagem recebida e retorna possíveis respostas, mas há muito mais acontecendo nos bastidores. Há dois fluxos de fluxo de trabalho principais que alimentam o sistema OCC ML, o treinamento offline e a veiculação on-line, descritos na Figura 5, abaixo:

Figura 5: Nos bastidores do OCC, nosso sistema de aprendizado de máquina depende de dois fluxos de trabalho, treinamento off-line e serviço on-line.

Treinamento offline

Durante o treinamento off-line, usamos o seguinte pipeline ML e NLP baseado em incorporação para lidar com essas mensagens de texto:

Pré-processador

Para preparar dados de treinamento para o modelo de incorporação de texto, aproveitamos as mensagens anônimas do UberChat. Primeiro, particionamos as mensagens de bate-papo por idioma (detecção de idioma) e conduzimos o truncamento de comprimento (comprimento <= 2). Finalmente, nós tokenizamos cada uma dessas mensagens.

Incorporação de texto e mensagem

Após o pré-processamento, realizamos a incorporação de mensagens usando o modelo Doc2vec, um algoritmo não supervisionado proposto por Le e Mikolov (2014), que aprende representações de características de comprimento fixo a partir de pedaços de texto de tamanho variável, como sentenças, parágrafos e documentos.

Treinamos o modelo Doc2vec em milhões de mensagens UberChat agregadas e anônimas e usamos esse treinamento para mapear cada mensagem para um espaço de incorporação de vetor denso. As duas principais vantagens do Doc2vec que atendem às nossas necessidades são que ele captura tanto a ordenação quanto a semântica das palavras.

A Figura 6, abaixo, visualiza os vetores de palavras em uma projeção bidimensional usando um gráfico t-SNE. Como captura o significado semântico das palavras, o modelo pode agrupar palavras semelhantes. Por exemplo, “Toyota” está perto de “Prius” e “Camry”, mas longe de “chihuahua”.

Figura 6: Esta projeção t-SNE bidimensional da incorporação de palavras Doc2vec ilustra a capacidade do modelo de organizar automaticamente os conceitos e aprender implicitamente as relações entre as palavras, agrupando-as com base na semântica.

Detecção intencional

Para entender a intenção do usuário, treinamos nosso modelo de detecção de intenção após o procedimento de incorporação. Semelhante ao recurso de Resposta Inteligente do Gmail, formulamos a tarefa de detecção de intenção como um problema de classificação.

Por que precisamos de detecção intencional? A linguagem humana é rica. Há muitas maneiras de fazer a mesma pergunta, como: “Para onde você vai?”, “Para onde você está indo?” e “Qual é o seu destino?”.

Mensagens de bate-papo adicionam um nível de complexidade, com erros de digitação e abreviações adicionando ainda mais permutações.

Criar um sistema com respostas para milhões de perguntas individuais não seria escalável, por isso precisamos de um sistema que possa identificar a intenção ou o tópico por trás de cada pergunta, permitindo-nos fornecer respostas a um conjunto finito de intenções. A Figura 7, abaixo, ilustra como as diferentes mensagens se agrupam com base nas intenções detectadas:

Figura 7: Nesta projeção t-SNE bidimensional de incorporação de frase, o modelo agrupa as mensagens em torno da intenção.

Mapeamento de resposta-intenção

Aproveitamos conversações históricas anônimas e agregadas para encontrar as respostas mais frequentes para cada intenção. Depois disso, nosso estrategista de conteúdo de comunicação e equipe jurídica realizam mais uma rodada de aprimoramento para tornar as respostas tão fáceis de entender e precisas quanto possível. Em seguida, criamos o mapeamento resposta-intenção para recuperação de resposta.

Serviço online

A veiculação on-line é relativamente simples depois de concluir o treinamento off-line dos modelos. Pegamos a última mensagem recebida e enviamos pelo mesmo pré-processador da contraparte offline. A mensagem pré-processada será codificada como uma representação de vetores de comprimento fixo por meio do modelo Doc2vec pré-treinado, após o qual usaremos o vetor e o classificador de detecção de intenção para prever a possível intenção da mensagem.

Finalmente, aproveitando nosso mapeamento de resposta-intenção, recuperamos as respostas mais relevantes com base na intenção detectada e as exibimos para o motorista parceiro que recebe a mensagem. Além disso, alguns casos periféricos serão cobertos por regras e não por algoritmos, incluindo mensagens muito curtas (mensagem truncada no estágio de pré-processamento), emojis e previsões de baixa confiança (casos de uso com várias intenções).

Próximos passos

Planejamos continuar expandindo o recurso de bate-papo com um clique para outros idiomas em nossos mercados globais. Também estamos buscando mais recursos contextuais específicos da Uber, como informações de mapa e tráfego, e planejamos incorporá-los ao nosso modelo existente.

Essas atualizações aumentarão nossa probabilidade de identificar com mais precisão a intenção do usuário e apresentar respostas personalizadas para melhor atender os motoristas parceiros: em suma, tornar a experiência da Uber mais mágica.

Além disso, enquanto o sistema atual usa mapeamento de resposta-intenção estático para recuperar respostas, planejamos construir um modelo de recuperação de resposta para melhorar ainda mais a precisão do sistema OCC.

Em um nível elevado, o OCC é uma aplicação natural de um sistema de diálogo com várias voltas, já que os motoristas parceiros e os passageiros podem conversar sobre várias voltas de uma conversa antes de se encontrarem.

Aproveitando o OCC e outros recursos, construa um sistema de diálogo para otimizar a recompensa a longo prazo de uma experiência bem-sucedida de bate-papo e embarque, levando a uma melhor experiência do usuário em nossa plataforma.

OCC é apenas uma dentre várias iniciativas de Inteligência Artificial/NLP Conversacional na Uber. Por exemplo, o NL também é utilizado para melhorar o atendimento ao cliente na Uber [1, 2] e também está no centro dos embarques de viva-voz, onde logo começaremos a testar os comandos ativados por voz.

Interessado em desenvolver processamento de linguagem natural de ponta ou outros sistemas de aprendizado de máquina? Considere se candidatar a uma função em nossa equipe!

Assine nossa newsletter para acompanhar as mais recentes inovações da Engenharia da Uber.

***

Este artigo é do Uber Engineering. Ele foi escrito por Yue Weng, Huaixiu Zheng, Anwaya Aras e Franziska Bell. A tradução foi feita pela Redação iMasters com autorização. Você pode conferir o original em: https://eng.uber.com/one-click-chat/