Adesivos de repetição inteligente



Olá Habr! Hoje, reiniciamos o ICQ . As principais funções do novo messenger são baseadas em tecnologias de inteligência artificial: adesivo rápido Smart Reply e sistema de prompt de texto para responder a uma mensagem recebida, sugerindo adesivos para frases inseridas, reconhecimento de mensagem de voz e outros.

Neste artigo, falarei sobre um deles - Resposta Inteligente. Esse recurso economiza tempo dos usuários, pois eles precisam apenas clicar no adesivo de que gostam dos oferecidos. Ao mesmo tempo, o recurso popularizará o uso de vários adesivos e aumentará a emocionalidade da comunicação.

Preparação de dados


A tarefa do campo da PNL foi resolvida com a ajuda do aprendizado de máquina e das redes neurais. O treinamento foi realizado com dados especialmente elaborados de bate-papos públicos. Os pares foram utilizados: um fragmento do diálogo e um adesivo enviado por um dos usuários em resposta à última mensagem do interlocutor. Para melhor levar em conta o contexto, um fragmento do diálogo consiste nas mensagens do último interlocutor que são coladas e nas mensagens do usuário antes deles. Você pode experimentar o número de mensagens, por exemplo, o Google ML Kit usa um contexto de 10 mensagens [1] .

Um dos problemas com os quais tive que lidar é que a frequência de uso de adesivos, começando pelos mais populares, diminui acentuadamente. Além disso, o número total de adesivos é superior a um milhão. A figura abaixo mostra a frequência decrescente de uso dos 4000 adesivos mais populares. Portanto, 4000 adesivos populares com a remoção de alguns dos mais frequentes foram escolhidos para treinamento, a fim de reduzir a distribuição desigual do conjunto de treinamento.


Frequências de uso dos 4000 adesivos mais populares em ordem decrescente.

Para os textos, a normalização foi realizada em termos de remoção de números, repetição de letras, caracteres únicos, pontuação (exceto pontos de interrogação e exclamações, importantes para o significado), reduzindo as letras para minúsculas. Em geral, as especificidades são tais que, nas salas de bate-papo, os usuários seguem mal a gramática.

Seleção de modelo


Para previsão, o modelo DSSM siamês é usado, por analogia com o modelo para Resposta Inteligente no Mail.ru (uma arquitetura semelhante é descrita em [2]), mas com certas diferenças. A vantagem do modelo siamês em eficiência de inferência, uma vez que a parte correspondente aos adesivos é calculada antecipadamente. Para responder às cartas, o modelo original usa um pacote de palavras n-grama para representar o texto, o que é justificável para a escrita: o texto pode ser grande e precisamos entender as especificações gerais e fornecer uma resposta curta padrão. No caso de bate-papos e adesivos, o texto é curto e as palavras individuais são mais importantes aqui. Portanto, foi decidido usar incorporamentos de palavras individuais como recursos e adicionar uma camada LSTM para eles. Uma idéia semelhante de usar a camada LSTM no caso de textos curtos foi usada, por exemplo, para respostas de texto no Google Allo messenger [3] e no modelo de previsão de smiley correspondente a mensagens curtas do DeepMoji [4]. A figura abaixo mostra esquematicamente o modelo.


Modelo de arquitetura.

Na figura, as camadas iniciais são as combinações de palavras tokenizadas recebidas (esquerda) e adesivos (direita). Para a tokenização das palavras, foi utilizado um dicionário, que incluía 100K das palavras mais populares. Para separar mensagens de diferentes usuários, um token dedicado especial foi usado. O treinamento é de ponta a ponta. Depois de calcular os encaixes para a sequência de palavras, vamos para a camada LSTM, cujo estado é então transferido para as camadas totalmente conectadas com ativação tangente. Como resultado, no codificador esquerdo na saída, obtemos um vetor que representa o texto e, à direita - o vetor correspondente ao adesivo. O produto escalar de vetores determina como o texto e o adesivo se encaixam. A dimensão dos revestimentos, o vetor do estado interno do LSTM e o vetor de saída foram calculados em 300.

A função objetivo do treinamento é semelhante a esta:



onde K é o tamanho do lote,

S (x i , y i ) é o produto escalar dos vetores resultantes para exemplos positivos de pares de etiqueta de texto,

S (x i , y j )- produto escalar de vetores para exemplos negativos de pares texto-adesivo. Exemplos negativos de pares de etiqueta de texto foram gerados devido à mistura aleatória dos pares corretos originais. Como para adesivos universais populares, é provável que, ao misturar novamente, seja o par correto, na fase de reciclagem, um controle adicional foi usado como parte do lote, para que não houvesse textos semelhantes para pares positivos e negativos com um adesivo. Durante os experimentos funcionar melhor se exemplos negativos para usar menos do que o K . Em vista do ruído dos dados, o treinamento em grandes lotes funcionou melhor. A complicação do modelo e a adição da camada de atenção não proporcionaram uma melhoria notável na precisão, o que, antes, fala das limitações associadas aos dados e à sua qualidade.

Devido ao fato de a abordagem com um dicionário de palavras individuais, em vez do caractere n-grama, ser escolhida, a flexibilidade do modelo em relação aos erros de digitação é perdida. Foi conduzido um experimento com o treinamento da incorporação do fastText, que é treinado diretamente na rede, reduzindo assim o impacto dos erros. Nesse caso, o treinamento piorou e a adição de uma camada de atenção ajudou visivelmente. Após ponderar os indicadores de qualidade e outros fatores, decidiu-se por um modelo mais simples. Nesse caso, o problema de erros de digitação é resolvido usando um corretor ortográfico em uma situação se a palavra não estiver no dicionário. No modo normal, o corretor ortográfico não é usado, pois algumas palavras com erros são um recurso do bate-papo informal.

Obtendo respostas


Como o modelo funciona no estágio de inferência?

Calculamos os vetores de adesivo calculados com antecedência pelo codificador correto. No estágio de processamento da solicitação, apenas o codificador esquerdo é usado para obter um vetor para o texto recebido. Em seguida, é necessário obter a lista de adesivos em ordem decrescente do produto escalar do vetor de texto e adesivo. Isso pode ser feito diretamente multiplicando todos os vetores de adesivo ou use os algoritmos de pesquisa de vizinhos mais próximos para essa métrica. Por exemplo, em [2], propõe-se o uso da quantização hierárquica para a máxima pesquisa interna de produtos (MIPS). Aplicamos o algoritmo de pesquisa HNSW, e isso deu uma aceleração significativa em comparação com a pesquisa exaustiva.

Tornando as respostas diversas


O próximo estágio é a diversificação dos adesivos propostos, pois os adesivos de ponta podem ser todos iguais.

Três adesivos sugeridos para a frase "Olá": sem diversificação e com diversificação.

Várias opções de diversificação foram testadas. A maneira mais fácil é escolher os N adesivos superiores, levando em conta o limite de pontuação, depois selecionar o adesivo superior e selecionar os outros dois com a distância máxima entre si, enquanto limita a diferença permitida nas distâncias do adesivo superior. Essa abordagem pode ser combinada usando os resultados da marcação manual de adesivos por coloração emocional (positiva, negativa, neutra) e escolha um dos N adesivos principais com cores diferentes, se houver.

Outra opção é agrupar adesivos por suas combinações e, ao gerar resultados, selecione não mais que um adesivo no cluster. Para cluster, foi utilizado o pacote UMAP + HDBSCAN. UMAP é um novo algoritmo de redução de dimensionalidade eficaz que supera o já comprovado t-SNE. A redução de dimensão foi aplicada a dois e, em seguida, o algoritmo de agrupamento HDBSCAN foi usado. Cerca de 100 grupos foram identificados. Essa tarefa não é totalmente resolvida automaticamente. Com várias configurações, foi possível obter até 70% de adesivos em cluster, mas, em seguida, revisão manual, a verificação é necessária. Portanto, optamos pelas opções mais simples descritas acima, pois o resultado foi bom.


Adesivos de agrupamento em incorporações.

resultados


Como resultado, obtivemos um adesivo de repetição inteligente simples e eficaz, que demonstrou uma qualidade muito boa de respostas. De acordo com testes para 1000 frases diferentes, de simples a relativamente complexas, de acordo com os entrevistados, o adesivo superior foi considerado completamente adequado em mais de 75% dos casos. No teste de 100 frases mais simples e populares, o resultado é ainda mais impressionante: o adesivo superior foi considerado completamente adequado em 93% dos casos.

Exemplos de adesivos oferecidos pelo modelo de respostas.

Quais são as desvantagens?

Devido ao desequilíbrio no conjunto de dados de treinamento, algumas palavras têm um impacto desnecessariamente grande. Por exemplo, a palavra “amor” em algum contexto geralmente leva à proposta de vários adesivos “românticos”, uma vez que existe um viés nessa direção nos dados de treinamento. A introdução de pesos adicionais para palavras e adesivos de frequência, bem como o aumento de frases, não resolveu completamente o problema, mas melhorou parcialmente a situação.

Nós não descansamos em nossos louros e, como o processo de melhoria da qualidade de nossos modelos continua, são realizadas experiências para modificar a arquitetura e os mecanismos de preparação e uso de dados.

Literatura


  1. Google updates ML Kit with Smart Reply API for third-party Android and iOS apps. 9to5google.com/2019/04/05/ml-kit-smart-reply
  2. Matthew Henderson, Rami Al-Rfou, Brian Strope, Yun-Hsuan Sung, Laszlo Lukacs, Ruiqi Guo, Sanjiv Kumar, Balint Miklos, and Ray Kurzweil. Efficient Natural Language Response Suggestion for Smart Reply. arXiv:1705.00652v1, 2017.
  3. Pranav Khaitan. Chat Smarter with Allo. ai.googleblog.com/2016/05/chat-smarter-with-allo.html
  4. Bjarke Felbo, Alan Mislove, Anders Søgaard, Iyad Rahwan, Sune Lehmann. Using millions of emoji occurrences to learn any-domain representations for detecting sentiment, emotion and sarcasm. arXiv:1708.00524v2, 2017.

All Articles