Pegatinas inteligentes de repetición



Hola Habr! Hoy reiniciamos ICQ . Las funciones clave del nuevo mensajero se basan en tecnologías de inteligencia artificial: etiqueta rápida de respuesta inteligente y sistema de mensaje de texto para responder un mensaje entrante, sugiriendo etiquetas adhesivas para frases ingresadas, reconocimiento de mensajes de voz y otros.

En este artículo hablaré sobre uno de ellos: Respuesta inteligente. Esta característica ahorrará tiempo a los usuarios, ya que solo tendrán que hacer clic en la etiqueta que les gusta de las que se ofrecen. Al mismo tiempo, la función popularizará el uso de varias pegatinas y aumentará la emotividad de la comunicación.

Preparación de datos


La tarea del campo de la PNL se resolvió con la ayuda del aprendizaje automático y las redes neuronales. La capacitación se realizó sobre datos especialmente preparados de chats públicos. Se utilizaron los pares: un fragmento del diálogo y una pegatina que fue enviada por uno de los usuarios en respuesta al último mensaje del interlocutor. Para tener mejor en cuenta el contexto, un fragmento del diálogo consiste en los últimos mensajes del interlocutor que están pegados, y de los mensajes del usuario antes que ellos. Puede experimentar con la cantidad de mensajes, por ejemplo, el Kit ML de Google utiliza un contexto de 10 mensajes [1] .

Uno de los problemas con los que tuve que lidiar es que la frecuencia del uso de adhesivos, comenzando por los más populares, disminuye drásticamente. Además, el número total de pegatinas es más de un millón. La siguiente figura muestra la frecuencia descendente de uso de los 4000 stickers más populares. Por lo tanto, se eligieron 4000 calcomanías populares con la eliminación de algunas de las más frecuentes para el entrenamiento a fin de reducir la distribución desigual del conjunto de entrenamiento.


Frecuencias de uso de las 4000 pegatinas más populares en orden descendente.

Para los textos, la normalización se llevó a cabo en términos de eliminar números, repetir letras, caracteres individuales, puntuación (excepto los signos de interrogación y exclamaciones, que son importantes para el significado), reduciendo las letras a minúsculas. En general, los detalles son tales que en las salas de chat, los usuarios siguen mal la gramática.

Selección de modelo


Para la predicción, se utiliza el modelo Siamese DSSM, por analogía con el modelo para Smart Reply en Mail.ru (una arquitectura similar se describe en [2]), pero con ciertas diferencias. La ventaja del modelo siamés en eficiencia por inferencia, ya que la parte correspondiente a las pegatinas se calcula de antemano. Para responder letras, el modelo original usa una bolsa de palabras de n-gramas para representar el texto, lo cual está justificado para escribir: el texto puede ser grande, y necesitamos comprender los detalles generales y dar una respuesta breve estándar. En el caso de chats y stickers, el texto es corto y las palabras individuales son más importantes aquí. Por lo tanto, se decidió utilizar incrustaciones de palabras individuales como características y agregar una capa LSTM para ellas. Se usó una idea similar de usar la capa LSTM en el caso de textos cortos, por ejemplo, para respuestas de texto en Google Allo messenger [3] y en el modelo de predicción de smiley correspondiente a mensajes cortos DeepMoji [4]. La siguiente figura muestra esquemáticamente el modelo.


Modelo de arquitectura.

En la figura, las capas iniciales son las incrustaciones de palabras tokenizadas entrantes (izquierda) y pegatinas (derecha). Para la tokenización de las palabras, se utilizó un diccionario, que incluía 100K de las palabras más populares. Para separar mensajes de diferentes usuarios, se utilizó un token dedicado especial. La capacitación es de principio a fin. Después de calcular las incrustaciones para la secuencia de palabras, pasamos a la capa LSTM, cuyo estado se transfiere a las capas completamente conectadas con activación tangente. Como resultado, en el codificador izquierdo en la salida obtenemos un vector que representa el texto, y en la derecha, el vector correspondiente a la etiqueta. El producto escalar de los vectores determina cómo encajan el texto y la pegatina. La dimensión de las incrustaciones, el vector del estado interno del LSTM y el vector de salida se tomaron igual a 300.

La función objetivo del entrenamiento se ve así:



donde K es el tamaño del lote,

S (x i , y i ) es el producto escalar de los vectores resultantes para ejemplos positivos de pares de etiquetas de texto,

S (x i , y j )- producto escalar de vectores para ejemplos negativos de pares de etiqueta de texto. Se generaron ejemplos negativos de pares de etiqueta de texto debido a la mezcla aleatoria de los pares correctos originales. Dado que, para los adhesivos universales populares, es probable que al mezclar nuevamente resulte ser el par correcto, en la etapa de reentrenamiento, se usó un control adicional como parte del lote para que no hubiera textos similares para pares positivos y negativos con un adhesivo. Durante los experimentos funcionan mejor si los ejemplos negativos que utilizan menos de la K . En vista del ruido de los datos, la capacitación en grandes lotes funcionó mejor. La complicación del modelo y la adición de la capa de atención no dieron una mejora notable en la precisión, que, más bien, habla de las limitaciones asociadas con los datos y su calidad.

Debido al hecho de que se elige el enfoque con un diccionario de palabras individuales, en lugar de caracteres n-gramo, se pierde la flexibilidad del modelo con respecto a los errores tipográficos. Se realizó un experimento con la capacitación de la inserción de texto rápido, que se capacita directamente en la red, reduciendo así el impacto de los errores. En este caso, el entrenamiento fue peor, y la adición de una capa de atención ayudó notablemente. Después de sopesar los indicadores de calidad y otros factores, se decidió insistir en un modelo más simple. En este caso, el problema de los errores tipográficos se resuelve utilizando un corrector ortográfico en una situación si la palabra no está en el diccionario. En el modo normal, el corrector ortográfico no se usa, ya que algunas palabras con errores son una característica del chat informal.

Obteniendo respuestas


¿Cómo funciona el modelo en la etapa de inferencia?

Calculamos los vectores adhesivos calculados por el codificador correcto de antemano. En la etapa de procesamiento de la solicitud, solo se usa el codificador izquierdo para obtener un vector para el texto entrante. A continuación, debe obtener la lista de calcomanías en orden descendente del producto escalar del texto y el vector de calcomanía. Esto se puede hacer directamente multiplicando todos los vectores adhesivos o utilizando los algoritmos de búsqueda de vecinos más cercanos para esta métrica. Por ejemplo, en [2] se propone utilizar la cuantización jerárquica para la búsqueda máxima de productos internos (MIPS). Aplicamos el algoritmo de búsqueda HNSW, y esto dio una aceleración significativa en comparación con la búsqueda exhaustiva.

Hacer respuestas diversas


La siguiente etapa es la diversificación de los adhesivos propuestos, ya que a menudo los adhesivos de alta gama pueden ser todos iguales.

Tres pegatinas sugeridas para la frase "Hola": sin diversificación y con diversificación.

Se han probado varias opciones para la diversificación. La forma más fácil es elegir las N calcomanías superiores, teniendo en cuenta el límite en la puntuación, luego seleccione la calcomanía superior y las otras dos con la distancia máxima entre ellas, al tiempo que limita la diferencia permitida en las distancias a la calcomanía superior. Este enfoque se puede combinar utilizando los resultados del marcado manual de las etiquetas adhesivas por coloración emocional (positiva, negativa, neutra) y elegir entre las N etiquetas superiores con diferentes colores, si los hay.

Otra opción es agrupar las etiquetas adhesivas por sus incrustaciones y, al generar resultados, no seleccionar más de una etiqueta adhesiva del grupo. Para la agrupación, se usó el paquete UMAP + HDBSCAN. UMAP es un nuevo algoritmo de reducción de dimensionalidad efectivo que supera el t-SNE ya probado. La reducción de dimensión se aplicó a dos, y luego se usó el algoritmo de agrupación HDBSCAN. Se identificaron alrededor de 100 grupos. Esta tarea no se resuelve completamente de forma automática, con varias configuraciones fue posible lograr la agrupación de hasta el 70% de las etiquetas, pero luego se requiere una revisión manual, verificación. Por lo tanto, nos decidimos por las opciones más simples descritas anteriormente, ya que su resultado fue bueno.


Agrupando pegatinas en incrustaciones.

resultados


Como resultado, obtuvimos una etiqueta de repetición inteligente simple y efectiva, que demostró una muy buena calidad de respuestas. Según las pruebas para 1000 frases diferentes, desde simples hasta relativamente complejas, según los encuestados, la pegatina superior se consideró completamente adecuada en más del 75% de los casos. En la prueba de 100 frases más simples y populares, el resultado es aún más impresionante: la pegatina superior se llamó completamente adecuada en el 93% de los casos.

Ejemplos de stickers ofrecidos por el modelo de respuestas.

¿Cuales son las desventajas?

Debido al desequilibrio en el conjunto de datos de capacitación, algunas palabras tienen un impacto innecesariamente grande. Por ejemplo, la palabra "amor" en algún contexto a menudo conduce a la propuesta de varias calcomanías "románticas", ya que existe un sesgo en esta dirección en los datos de capacitación. La introducción de pesos adicionales para palabras y calcomanías de frecuencia, así como el aumento de frases, no resolvió por completo el problema, pero mejoró parcialmente la situación.

No descansamos en nuestros laureles, y el proceso de mejorar la calidad de nuestros modelos continúa, se realizan experimentos para modificar la arquitectura y los mecanismos para preparar y usar los datos.

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