Autocollants de relecture intelligente



Bonjour, Habr! Aujourd'hui, nous avons redémarré ICQ . Les fonctions clés du nouveau messager sont basées sur les technologies de l'intelligence artificielle: autocollant rapide Smart Reply et système d'invite de texte pour répondre à un message entrant, suggérant des autocollants pour les phrases entrées, la reconnaissance des messages vocaux et autres.

Dans cet article, je vais parler de l'un d'eux - Smart Reply. Cette fonctionnalité fera gagner du temps aux utilisateurs, car ils n'auront qu'à cliquer sur l'autocollant qu'ils aiment parmi ceux proposés. Dans le même temps, la fonctionnalité popularisera l'utilisation de divers autocollants et augmentera l'émotivité de la communication.

Préparation des données


La tâche du domaine de la PNL a été résolue à l'aide de l'apprentissage automatique et des réseaux de neurones. La formation a été menée sur des données spécialement préparées à partir de chats publics. Les paires ont été utilisées: un fragment du dialogue et une vignette qui a été envoyée par l'un des utilisateurs en réponse au dernier message de l'interlocuteur. Pour mieux prendre en compte le contexte, un fragment du dialogue est constitué des messages du dernier interlocuteur collés ensemble, et des messages de l'utilisateur avant lui. Vous pouvez tester le nombre de messages, par exemple, le kit Google ML utilise un contexte de 10 messages [1] .

L'un des problèmes auxquels j'ai dû faire face est que la fréquence d'utilisation des autocollants, à partir des plus populaires, diminue fortement. De plus, le nombre total d'autocollants dépasse le million. La figure ci-dessous montre la fréquence décroissante d'utilisation des 4000 autocollants les plus populaires. Par conséquent, 4000 autocollants populaires avec la suppression de certains des plus fréquents ont été choisis pour la formation afin de réduire la distribution inégale de l'ensemble de formation.


Fréquences d'utilisation des 4000 autocollants les plus populaires dans l'ordre décroissant.

Pour les textes, la normalisation a été effectuée en termes de suppression de chiffres, de répétition de lettres, de caractères uniques, de ponctuation (à l'exception des points d'interrogation et des exclamations, qui sont importants pour le sens), réduisant les lettres en minuscules. En général, les spécificités sont telles que dans les salles de chat, les utilisateurs suivent mal la grammaire.

Sélection du modèle


Pour la prédiction, le modèle siamois DSSM est utilisé, par analogie avec le modèle pour Smart Reply dans Mail.ru (une architecture similaire est décrite dans [2]), mais avec certaines différences. L'avantage du modèle siamois en termes d'efficacité pour l'inférence, puisque la partie correspondant aux autocollants est calculée à l'avance. Pour répondre aux lettres, le modèle original utilise un sac de mots de n-gramme pour représenter le texte, ce qui est justifié pour l'écriture: le texte peut être grand, et nous devons saisir les spécificités générales et donner une réponse courte standard. Dans le cas des chats et des autocollants, le texte est court et les mots individuels sont plus importants ici. Par conséquent, il a été décidé d'utiliser des incorporations de mots individuels comme fonctionnalités et d'ajouter une couche LSTM pour elles. Une idée similaire d'utiliser la couche LSTM dans le cas de textes courts a été utilisée, par exemple, pour les réponses textuelles dans le messager Google Allo [3] et dans le modèle de prédiction des émoticônes correspondant aux messages courts DeepMoji [4]. La figure ci-dessous montre schématiquement le modèle.


Modèle d'architecture.

Dans la figure, les couches initiales sont les incorporations de mots entrants symbolisés (à gauche) et d'autocollants (à droite). Pour la tokenisation des mots, un dictionnaire a été utilisé, qui comprenait 100K des mots les plus populaires. Pour séparer les messages des différents utilisateurs, un jeton dédié spécial a été utilisé. La formation est de bout en bout. Après avoir calculé les plongements pour la séquence de mots, nous passons à la couche LSTM, dont l'état est ensuite transféré aux couches entièrement connectées avec activation tangente. En conséquence, dans l'encodeur gauche à la sortie, nous obtenons un vecteur qui représente le texte, et à droite - le vecteur correspondant à l'autocollant. Le produit scalaire des vecteurs détermine la façon dont le texte et l'autocollant s'emboîtent. La dimension des plongements, le vecteur de l'état interne du LSTM et le vecteur de sortie ont été pris égaux à 300.

La fonction objectif de la formation ressemble à ceci:



K est la taille du lot,

S (x i , y i ) est le produit scalaire des vecteurs résultants pour des exemples positifs de paires de texte-autocollant,

S (x i , y j )- produit scalaire de vecteurs pour des exemples négatifs de paires texte-autocollant. Des exemples négatifs de paires de texte-autocollant ont été générés en raison du mélange aléatoire des paires correctes d'origine. Étant donné que, pour les autocollants universels populaires, il est probable que lors du nouveau mélange, il s'avère que c'est la bonne paire, au stade de la reconversion, un contrôle supplémentaire a été utilisé dans le cadre du lot afin qu'il n'y ait pas de textes similaires pour les paires positives et négatives avec un seul autocollant. Au cours des expériences fonctionnent mieux si des exemples négatifs à utiliser moins de K . Compte tenu du bruit des données, la formation en grands lots a mieux fonctionné. La complication du modèle et l'ajout de la couche d'attention n'ont pas donné une amélioration notable de la précision, ce qui indique plutôt les limites associées aux données et leur qualité.

En raison du choix de l’approche avec un dictionnaire de mots individuels plutôt que de n-gramme de caractères, la flexibilité du modèle en ce qui concerne les fautes de frappe est perdue. Une expérience a été menée avec la formation à l'intégration de fastText, qui est directement formée dans le réseau, réduisant ainsi l'impact des erreurs. Dans ce cas, la formation s'est détériorée et l'ajout d'une couche d'attention a considérablement aidé. Après avoir pesé les indicateurs de qualité et d'autres facteurs, il a été décidé de s'attarder sur un modèle plus simple. Dans ce cas, le problème de faute de frappe est résolu en utilisant un correcteur orthographique dans une situation où le mot n'est pas dans le dictionnaire. En mode normal, le correcteur orthographique n'est pas utilisé, car certains mots avec des erreurs sont une caractéristique de la discussion informelle.

Obtenir des réponses


Comment fonctionne le modèle au stade de l'inférence?

Nous calculons à l'avance les vecteurs autocollants calculés par le bon encodeur. Au stade du traitement des demandes, seul l'encodeur de gauche est utilisé pour obtenir un vecteur pour le texte entrant. Ensuite, vous devez obtenir la liste des autocollants dans l'ordre décroissant du produit scalaire du texte et du vecteur d'autocollant. Cela peut être fait directement en multipliant tous les vecteurs d'autocollants ou en utilisant les algorithmes de recherche du voisin le plus proche pour cette métrique. Par exemple, dans [2], il est proposé d'utiliser la quantification hiérarchique pour la recherche de produit interne maximale (MIPS). Nous avons appliqué l'algorithme de recherche HNSW, ce qui a donné une accélération significative par rapport à une recherche exhaustive.

Rendre les réponses diverses


L'étape suivante est la diversification des autocollants proposés, car les autocollants haut de gamme peuvent souvent être identiques.

Trois autocollants suggérés pour la phrase "Bonjour": sans diversification et avec diversification.

Plusieurs options de diversification ont été testées. Le moyen le plus simple consiste à choisir les N autocollants supérieurs, en tenant compte de la limite du score, puis à sélectionner l'autocollant supérieur, et à sélectionner les deux autres avec la distance maximale entre eux, tout en limitant la différence admissible dans les distances à l'autocollant supérieur. Cette approche peut être combinée en utilisant les résultats du marquage manuel des autocollants par coloration émotionnelle (positive, négative, neutre), et choisissez parmi les N autocollants supérieurs avec différentes couleurs, le cas échéant.

Une autre option consiste à regrouper les autocollants en fonction de leurs incorporations et, lors de la sortie des résultats, ne sélectionnez pas plus d'un autocollant dans le cluster. Pour le clustering, le bundle UMAP + HDBSCAN a été utilisé. UMAP est un nouvel algorithme de réduction de dimensionnalité efficace qui surpasse le t-SNE déjà éprouvé. La réduction de dimension a été appliquée à deux, puis l'algorithme de clustering HDBSCAN a été utilisé. Une centaine de clusters ont été identifiés. Cette tâche n'est pas complètement résolue automatiquement, avec divers paramètres, il était possible d'obtenir un regroupement de jusqu'à 70% des autocollants, mais une révision manuelle, une vérification est nécessaire. Par conséquent, nous avons opté pour les options plus simples décrites ci-dessus, car leur résultat était bon.


Autocollants de regroupement sur les encastrements.

résultats


En conséquence, nous avons obtenu un autocollant de relecture intelligent simple et efficace, qui a démontré une très bonne qualité des réponses. Selon les tests de 1000 phrases différentes, du simple au relativement complexe, selon les répondants, l'autocollant supérieur a été qualifié de complètement adapté dans plus de 75% des cas. Dans le test de 100 phrases plus simples et plus populaires, le résultat est encore plus impressionnant: l'autocollant supérieur a été qualifié de complètement adapté dans 93% des cas.

Exemples d'autocollants offerts par le modèle de réponses.

Quels sont les inconvénients?

En raison du déséquilibre dans l'ensemble de données d'apprentissage, certains mots ont un impact inutilement important. Par exemple, le mot «amour» dans certains contextes conduit souvent à la proposition de divers autocollants «romantiques», car il y a un biais dans ce sens dans les données d'entraînement. L'introduction de poids supplémentaires pour les mots de fréquence et les autocollants, ainsi que l'augmentation des phrases, n'ont pas complètement résolu le problème, mais ont partiellement amélioré la situation.

Nous ne nous reposons pas sur nos lauriers, et le processus d'amélioration de la qualité de nos modèles se poursuit, des expérimentations sont menées pour modifier l'architecture et les mécanismes de préparation et d'utilisation des données.

Littérature


  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