Cómo abrir comentarios y no ahogarse en spam



Cuando su trabajo es crear algo bello, no puede hablar especialmente de ello, porque el resultado está ante los ojos de todos. Pero si borra las inscripciones de las cercas, nadie nota su trabajo hasta que las cercas se vean decentes o hasta que borre algo mal.

Cualquier servicio en el que pueda dejar un comentario, revisar, enviar un mensaje o subir fotos, tarde o temprano enfrenta el problema del spam, el fraude y el lenguaje obsceno. Esto no se puede evitar, pero se debe combatir.

Mi nombre es Mikhail, trabajo en el equipo Anti-Spam, que protege a los usuarios de los servicios de Yandex de tales problemas. Nuestro trabajo rara vez se nota (¡y bueno!), Así que hoy hablaré sobre él con más detalle. Descubrirá en qué casos la moderación es inútil y por qué la precisión no es el único indicador de su efectividad. También hablaremos sobre el compañero usando el ejemplo de gatos y perros y por qué a veces es útil "pensar como un estafador".

En Yandex, hay cada vez más servicios donde los usuarios publican su contenido. Puede hacer una pregunta o escribir una respuesta en Yandex.Kew, discutir las noticias del patio en Yandex.Rayon, compartir la situación del tráfico en conversaciones en Yandex.Maps. Pero cuando la audiencia de servicios crece, se vuelve atractiva para los estafadores y los spammers. Vienen y completan los comentarios: ofrecen dinero fácil, anuncian fondos milagrosos y prometen beneficios sociales. Debido a los spammers, algunos usuarios pierden dinero, mientras que otros, el deseo de pasar tiempo en un servicio preparado y cubierto de spam.

Y este no es el único problema. Nos esforzamos no solo por proteger a los usuarios de los estafadores, sino también por crear una atmósfera cómoda para la comunicación. Si las personas en los comentarios encuentran lenguaje obsceno e insultos, es muy probable que se vayan y nunca regresen. Entonces, esto también necesita poder luchar.

Web limpia


Como suele suceder con nosotros, los primeros desarrollos nacieron en la Búsqueda, en la parte que combate el spam en los resultados de búsqueda. Hace diez años, apareció la tarea de filtrar contenido para adultos para búsquedas familiares y consultas que no implican respuestas de la categoría 18+. Así que aparecieron los primeros diccionarios de pornografía y tapete escritos manualmente, que fueron rellenados por analistas. La tarea principal era clasificar las solicitudes en aquellas donde el contenido para adultos es aceptable y donde no. Para esta tarea, se recogió el marcado, se construyeron heurísticas, se capacitaron modelos. Entonces aparecieron los primeros desarrollos para filtrar contenido inapropiado.

Con el tiempo, Yandex comenzó a aparecer UGC (contenido generado por el usuario), mensajes escritos por los propios usuarios, y Yandex solo publica. Por las razones descritas anteriormente, muchos mensajes no se podían publicar sin mirar; se requería moderación. Luego, decidimos crear un servicio que brindara protección contra el spam y los ciberdelincuentes para todos los productos Yandex UGC y utilizar las mejores prácticas para filtrar contenido inapropiado en la Búsqueda. El servicio se llamaba Clean Web.

Nuevas tareas y ayuda a tolokers


Al principio, solo la automatización simple funcionó para nosotros: los servicios nos enviaron mensajes de texto, y ejecutamos diccionarios mat, pornografía y diccionarios regulares; los analistas hicieron todo manualmente. Pero con el tiempo, el servicio se utilizó en un número cada vez mayor de productos Yandex, y tuvimos que aprender a trabajar con nuevos problemas.

A menudo, en lugar de recordar, los usuarios publican un conjunto de cartas sin sentido, tratando de terminar sus logros, a veces anuncian su empresa en las reseñas de la empresa de un competidor, y otras veces simplemente confunden a las organizaciones y escriben en una reseña sobre una tienda de mascotas: "¡Pescado perfectamente cocinado!". Quizás algún día la inteligencia artificial aprenderá a capturar perfectamente el significado de cualquier texto, pero ahora la automatización es a veces peor que la de los humanos.

Quedó claro que no se podía prescindir del marcado manual, y agregamos el segundo paso a nuestro circuito, enviándolo para su inspección manual por una persona. Hubo aquellos textos publicados para los cuales el clasificador no vio problemas. Usted puede imaginar fácilmente la escala de tal tarea, por lo tanto, no solo confiamos en los asesores, sino que también usamos la "sabiduría de la multitud", es decir, pedimos ayuda a los invocadores. Son ellos quienes nos ayudan a identificar lo que la máquina perdió y, por lo tanto, a enseñarlo.

Caché inteligente y hash LSH


Otro problema que encontramos al trabajar con comentarios es el spam, o más bien, su volumen y velocidad de distribución. Cuando la audiencia de Yandex.Ryon comenzó a crecer rápidamente, los spammers llegaron allí. Aprendieron a sortear a los habituales cambiando ligeramente el texto. El spam, por supuesto, todavía se encontró y eliminó, pero cientos de personas pudieron ver un mensaje inaceptable incluso durante 5 minutos en una escala Yandex.



Por supuesto, esto no nos convenía, e hicimos el almacenamiento en caché inteligente de textos basados ​​en LSH ( hash sensible a la localidad)) Funciona así: normalizamos el texto, eliminamos enlaces y lo cortamos en n-gramas (secuencias de n letras). Además, se consideraron los hashes de n-gramas, y el vector LSH del documento ya estaba construido sobre ellos. El punto es que textos similares, incluso si cambiaron un poco, se convirtieron en vectores similares.

Esta decisión permitió reutilizar los veredictos de clasificadores y tokers para textos similares. En un ataque de spam, tan pronto como el primer mensaje pasó la verificación y entró en la caché con el veredicto "spam", todos los mensajes similares nuevos, incluso los modificados, recibieron el mismo veredicto y se eliminaron automáticamente. Más tarde, aprendimos a entrenar y reentrenar automáticamente a los clasificadores de spam, pero este "caché inteligente" se ha quedado con nosotros y todavía nos ayuda mucho.

Clasificador de buenos textos


Al no tener tiempo para tomar un descanso de la lucha contra el spam, nos dimos cuenta de que el 95% de nuestro contenido se modera manualmente: los clasificadores responden solo a las violaciones y la mayoría de los textos son buenos. Cargamos los tolokers, que en 95 casos de cada 100 calificaron "Todo está bien". Tuve que hacer un trabajo inusual: para hacer clasificadores de buen contenido, el beneficio del marcado para este tiempo se ha acumulado lo suficiente.

El primer clasificador se veía así: lematizamos el texto (reducimos las palabras a la forma inicial), desechamos todas las partes de servicio del discurso y usamos el "diccionario de buenos lemas" preparado previamente. Si todas las palabras son "buenas" en el texto, entonces el texto completo no contiene violaciones. En diferentes servicios, este enfoque proporcionó inmediatamente del 25 al 35% de la automatización del marcado manual. Por supuesto, este enfoque no es ideal: es fácil combinar varias palabras inocentes y obtener una declaración muy ofensiva, pero nos permitió alcanzar rápidamente un buen nivel de automatización y nos dio tiempo para entrenar modelos más complejos.

Las siguientes versiones de los clasificadores de buenos textos ya incluían modelos lineales, árboles de decisión y sus combinaciones. Para marcar rudeza e insultos, por ejemplo, probamos la red neuronal BERT. Aquí es importante comprender el significado de la palabra en contexto y la conexión de palabras de diferentes oraciones, y BERT hace un buen trabajo al respecto. (Por cierto, recientemente, colegas de News informaron cómo usan la tecnología para una tarea no estándar: buscar errores en los encabezados). Como resultado, logramos automatizar hasta el 90% del flujo según el servicio.

Precisión, integridad y velocidad.


Para desarrollarse, debe comprender qué tipo de clasificadores automáticos aportan beneficios, cambios en ellos y también si la calidad de las verificaciones manuales no se degrada. Para esto, utilizamos indicadores de precisión e integridad.

La precisión es la proporción de veredictos correctos entre todos los veredictos de contenido inadecuado. Cuanto mayor sea la precisión, menos falsos positivos. Si no sigue la precisión, en teoría puede eliminar todo el spam y las obscenidades, y con ellos la mitad de los mensajes buenos. Por otro lado, si confías solo en la precisión, entonces la mejor tecnología será la que no atrape a nadie. Por lo tanto, también hay un indicador de integridad: la proporción de contenido malo detectado entre el volumen total de contenido malo. Estas dos métricas se equilibran entre sí.

Para la medición, tomamos muestras de todo el flujo entrante para cada servicio y entregamos muestras de contenido a los evaluadores para la evaluación experta y la comparación con soluciones de máquinas.

Pero hay otro indicador importante.

Escribí anteriormente que cientos de personas pueden ver un mensaje inaceptable incluso en 5 minutos. Por lo tanto, consideramos cuántas veces logramos mostrar a la gente contenido inadecuado antes de ocultarlo. Esto es importante porque no es suficiente para trabajar de manera eficiente, debe trabajar rápido. Y cuando construimos la defensa contra el tapete, lo sentimos al máximo.

Antimat en el ejemplo de gatitos y perros


Una ligera digresión lírica. Alguien puede decir que las palabrotas y los insultos no son tan peligrosos como los enlaces maliciosos, ni tan molestos como el spam. Pero nos esforzamos por mantener un ambiente cómodo para la comunicación entre millones de usuarios, y a las personas no les gusta regresar a donde se ofenden. No es de extrañar que la prohibición del lenguaje obsceno y los insultos se detallen en las reglas de muchas comunidades, incluso en Habré. Pero estábamos distraídos.

Los diccionarios de Mata no hacen frente a toda la riqueza del idioma ruso. A pesar del hecho de que solo hay cuatro raíces obscenas principales, a partir de ellas puedes hacer una miríada de palabras que no puedes entender por ningún habitual. Además, puede transcribir una parte de una palabra, reemplazar letras con combinaciones similares, reorganizar letras, agregar asteriscos, etc. A veces, sin contexto, en principio, no se puede determinar que el usuario tenga en mente una palabra obscena. Respetamos las reglas de Habr, por lo tanto, demostraremos esto no en ejemplos en vivo, sino en focas y perros.



"Lyau", dijo el gato. Pero entendemos que el gato dijo otra palabra ...

Comenzamos a pensar en los algoritmos de "coincidencia difusa" de nuestro vocabulario y en un preprocesamiento más inteligente: transliterados, espacios pegados y puntuación, buscaban patrones y escribían regulares por separado en ellos. Este enfoque arrojó resultados, pero a menudo redujo la precisión, sin proporcionar la integridad deseada.

Luego decidimos "pensar como malas palabras". Nosotros mismos comenzamos a introducir ruido en los datos: letras reorganizadas, errores tipográficos generados, letras reemplazadas por otras similares en la ortografía, etc. El marcado inicial para esto se tomó aplicando diccionarios de mat a grandes cuerpos de textos. Si toma una oración y la distorsiona de varias maneras, ya tendrá muchas oraciones. Para que pueda aumentar la muestra de entrenamiento decenas de veces. Todo lo que quedaba era entrenar en un grupo recibido algún modelo más o menos inteligente que tuviera en cuenta el contexto.



Es muy temprano para hablar sobre la decisión final. Todavía estamos experimentando enfoques para este problema, pero ya vemos que una simple red de convolución simbólica de varias capas excede significativamente los diccionarios y los habituales: resulta que aumenta tanto la precisión como la integridad.

Por supuesto, entendemos que siempre hay formas de sortear incluso la automatización más avanzada, especialmente cuando es tan imprudente: escribir para que una estúpida máquina no entienda. Aquí, como en la lucha contra el spam, no tenemos el objetivo de erradicar la posibilidad de escribir algo obsceno, nuestra tarea es hacer que el juego no valga la pena.

Es fácil abrir la oportunidad de compartir su opinión, comunicarse y comentar. Es mucho más difícil lograr un ambiente seguro, cómodo y respeto por las personas. Y sin esto, no habrá desarrollo de ninguna comunidad.

All Articles