Cómo abrir comentarios y no ahogarse en spam

Cómo abrir comentarios y no ahogarse en spam

Cuando tu trabajo es crear algo bonito, no hace falta hablar mucho de ello, porque el resultado está ante los ojos de todos. Pero si borras las inscripciones de las vallas, nadie notará tu trabajo mientras las vallas luzcan decentes o hasta que borres algo incorrecto.

Cualquier servicio en el que puedas dejar un comentario, reseñar, enviar un mensaje o subir imágenes, tarde o temprano se enfrenta al problema del spam, el fraude y la obscenidad. Esto no se puede evitar, pero hay que afrontarlo.

Mi nombre es Mikhail, trabajo en el equipo Antispam, que protege a los usuarios de los servicios Yandex de este tipo de problemas. Nuestro trabajo rara vez pasa desapercibido (¡y eso es bueno!), así que hoy les contaré más sobre él. Aprenderá cuándo la moderación es inútil y por qué la precisión no es el único indicador de su eficacia. También hablaremos sobre las malas palabras usando el ejemplo de los perros y gatos y por qué a veces es útil “pensar como un que dice malas palabras”.

Cada vez aparecen más servicios en Yandex donde los usuarios publican su contenido. Puede hacer una pregunta o escribir una respuesta en Yandex.Q, discutir noticias sobre el jardín en Yandex.District, compartir las condiciones del tráfico en conversaciones en Yandex.Maps. Pero cuando la audiencia del servicio crece, se vuelve atractivo para los estafadores y spammers. Vienen y llenan comentarios: ofrecen dinero fácil, anuncian curas milagrosas y prometen beneficios sociales. Debido a los spammers, algunos usuarios pierden dinero, mientras que otros pierden el deseo de pasar tiempo en un servicio descuidado y cubierto de spam.

Y este no es el único problema. Nos esforzamos no sólo 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 se enfrentan a malas palabras e insultos en los comentarios, es probable que se vayan y nunca regresen. Esto significa que usted también debe poder lidiar con esto.

Web limpia

Como suele ocurrir con nosotros, los primeros desarrollos nacieron en la Búsqueda, en la parte que lucha contra el spam en los resultados de búsqueda. Hace unos diez años apareció allí la tarea de filtrar contenidos para adultos para búsquedas familiares y para consultas que no requerían respuestas de la categoría 18+. Así aparecieron los primeros diccionarios de pornografía y malas palabras escritos manualmente, que fueron repuestos por analistas. La tarea principal fue clasificar las solicitudes en aquellas en las que es aceptable mostrar contenido para adultos y en las que no. Para esta tarea, se recopilaron marcas, se construyeron heurísticas y se entrenaron modelos. Así aparecieron los primeros desarrollos para filtrar contenidos no deseados.

Con el tiempo, en Yandex comenzaron a aparecer UGC (contenido generado por el usuario): mensajes escritos por los propios usuarios y que Yandex solo publica. Por los motivos descritos anteriormente, muchos mensajes no se podían publicar sin mirarlos; se requería moderación. Luego decidieron crear un servicio que brindaría protección contra spam y atacantes para todos los productos Yandex UGC y utilizaría desarrollos para filtrar contenido no deseado en la Búsqueda. El servicio se llamó "Web Limpio".

Nuevas tareas y ayuda de los empujadores.

Al principio, solo nos funcionaba una simple automatización: los servicios nos enviaban textos y en ellos escribíamos diccionarios de obscenidades, diccionarios de pornografía y expresiones regulares; los analistas compilaban 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 una reseña, los usuarios publican un conjunto de cartas sin sentido, tratando de aumentar sus logros, a veces anuncian su empresa en reseñas de la empresa de la competencia y, a 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 aprenda a captar perfectamente el significado de cualquier texto, pero ahora la automatización a veces se las arregla peor que los humanos.

Quedó claro que no podíamos hacer esto sin un marcado manual, y agregamos una segunda etapa a nuestro circuito: enviándolo para que una persona lo inspeccione manualmente. Allí se incluyeron aquellos textos publicados en los que el clasificador no vio ningún problema. Es fácil imaginar la magnitud de tal tarea, por lo que no solo confiamos en los asesores, sino que también aprovechamos la "sabiduría de la multitud", es decir, recurrimos a los tolokers en busca de ayuda. Ellos son quienes nos ayudan a identificar lo que la máquina omitió y así enseñarle.

Almacenamiento en caché inteligente y hash LSH

Otro problema que encontramos al trabajar con comentarios fue el spam, o más precisamente, su volumen y velocidad de propagación. Cuando la audiencia de Yandex.Region comenzó a crecer rápidamente, llegaron los spammers. Aprendieron a eludir las expresiones regulares cambiando ligeramente el texto. Por supuesto, todavía se encontró y eliminó spam, pero en la escala de Yandex, cientos de personas podían ver un mensaje inaceptable publicado incluso durante 5 minutos.

Cómo abrir comentarios y no ahogarse en spam

Por supuesto, esto no nos convenía y creamos un almacenamiento en caché de texto inteligente basado en LSH (hashing sensible a la localidad). Funciona así: normalizamos el texto, eliminamos enlaces y lo cortamos en n-gramas (secuencias de n letras). A continuación, se calcularon los hashes de n-gramas y a partir de ellos se construyó el vector LSH del documento. La cuestión es que textos similares, incluso si se modificaron ligeramente, se convirtieron en vectores similares.

Esta solución hizo posible reutilizar los veredictos de clasificadores y tolokers para textos similares. Durante un ataque de spam, tan pronto como el primer mensaje pasó el análisis y entró en la caché con un veredicto de "spam", todos los mensajes nuevos similares, incluso los modificados, recibieron el mismo veredicto y se eliminaron automáticamente. Más tarde, aprendimos cómo entrenar y reentrenar automáticamente clasificadores de spam, pero este "caché inteligente" permaneció con nosotros y, a menudo, todavía nos ayuda.

Buen clasificador de texto

Sin tener tiempo para descansar de la lucha contra el spam, nos dimos cuenta de que el 95% de nuestro contenido se modera manualmente: los clasificadores sólo reaccionan ante las infracciones y la mayoría de los textos son buenos. Contamos con limpiadores que en 95 de cada 100 casos dan la calificación “Todo está bien”. Tuve que hacer un trabajo inusual: crear clasificadores de buen contenido; afortunadamente, durante este tiempo se habían acumulado suficientes marcas.

El primer clasificador tenía este aspecto: lematizamos el texto (reducimos las palabras a su forma inicial), descartamos todas las partes auxiliares del discurso y utilizamos un "diccionario de buenos lemas" preparado previamente. Si todas las palabras del texto son "buenas", entonces el texto completo no contiene ninguna infracción. En diferentes servicios, este enfoque dio inmediatamente entre un 25 y un 35% de automatización del marcado manual. Por supuesto, este enfoque no es ideal: es fácil combinar algunas 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 buenos clasificadores de texto ya incluían modelos lineales, árboles de decisión y sus combinaciones. Para marcar groserías e insultos, por ejemplo, probamos la red neuronal BERT. Es importante captar el significado de una palabra en contexto y la conexión entre palabras de diferentes oraciones, y BERT hace un buen trabajo en esto. (Por cierto, recientemente colegas de News dicho, cómo se utiliza la tecnología para una tarea no estándar: encontrar errores en los encabezados). Como resultado, fue posible automatizar hasta el 90% del flujo, según el servicio.

Precisión, exhaustividad y rapidez.

Para desarrollarse, es necesario comprender qué beneficios aportan determinados clasificadores automáticos, cambios en ellos y si la calidad de las comprobaciones manuales se está degradando. Para hacer esto, utilizamos métricas de precisión y recuperación.

La precisión es la proporción de veredictos correctos entre todos los veredictos sobre contenido inadecuado. Cuanto mayor sea la precisión, menos falsos positivos. Si no presta atención a 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 sólo en la precisión, entonces la mejor tecnología será aquella que no atrape a nadie en absoluto. Por lo tanto, también existe un indicador de integridad: la proporción de contenido malo identificado entre el volumen total de contenido malo. Estas dos métricas se equilibran entre sí.

Para medir, tomamos muestras de todo el flujo entrante para cada servicio y damos muestras de contenido a los evaluadores para que los evalúen expertos y los comparen con las soluciones de las máquinas.

Pero hay otro indicador importante.

Escribí anteriormente que cientos de personas pueden ver un mensaje inaceptable incluso en 5 minutos. Entonces contamos cuántas veces mostramos a la gente contenido inadecuado antes de ocultarlo. Esto es importante porque no basta con trabajar de manera eficiente: también es necesario trabajar con rapidez. Y cuando construimos una defensa contra las malas palabras, lo sentimos al máximo.

Antimatismo usando el ejemplo de perros y gatos.

Una pequeña digresión lírica. Algunos podrían decir que la obscenidad y los insultos no son tan peligrosos como los enlaces maliciosos ni tan molestos como el spam. Pero nos esforzamos por mantener condiciones cómodas de comunicación para millones de usuarios, y a la gente no le gusta regresar a lugares donde los insultan. No en vano, la prohibición de decir palabrotas e insultos está detallada en las reglas de muchas comunidades, incluida Habré. Pero estamos divagando.

Los diccionarios de malas palabras no pueden hacer frente a toda la riqueza del idioma ruso. A pesar de que solo hay cuatro malas raíces principales, a partir de ellas se pueden inventar innumerables palabras que ningún motor normal puede captar. Además, puede escribir parte de una palabra en transliteración, reemplazar letras con combinaciones similares, reorganizar letras, agregar asteriscos, etc. A veces, sin contexto, es básicamente imposible determinar que el usuario quiso decir una mala palabra. Respetamos las reglas de Habr, por lo que lo demostraremos no con ejemplos reales, sino con perros y gatos.

Cómo abrir comentarios y no ahogarse en spam

“Ley”, dijo el gato. Pero entendemos que el gato dijo una palabra diferente...

Comenzamos a pensar en algoritmos de “coincidencia difusa” para nuestro diccionario y en un preprocesamiento más inteligente: proporcionamos transliteración, pegamos espacios y puntuación, buscamos patrones y escribimos expresiones regulares separadas en ellos. Este enfoque produjo resultados, pero a menudo redujo la precisión y no proporcionó la exhaustividad deseada.

Entonces decidimos “pensar como palabrotas”. Nosotros mismos comenzamos a introducir ruido en los datos: reorganizamos letras, generamos errores tipográficos, reemplazamos letras con ortografía similar, etc. El marcado inicial para esto se tomó aplicando diccionarios mat a grandes corpus de textos. Si tomas una oración y la tuerces de varias maneras, terminarás con muchas oraciones. De esta forma puede aumentar la muestra de entrenamiento decenas de veces. Sólo quedaba entrenar en el grupo resultante algún modelo más o menos inteligente que tuviera en cuenta el contexto.

Cómo abrir comentarios y no ahogarse en spam

Es demasiado pronto para hablar de la decisión final. Todavía estamos experimentando con enfoques para este problema, pero ya podemos ver que una red convolucional simbólica simple de varias capas supera significativamente a los diccionarios y motores regulares: es posible aumentar tanto la precisión como la recuperación.

Por supuesto, entendemos que siempre habrá maneras de eludir incluso la automatización más avanzada, especialmente cuando el asunto es tan peligroso: escribir de tal manera que una máquina estúpida no lo entienda. Aquí, como en la lucha contra el spam, nuestro objetivo no es erradicar la posibilidad misma de escribir algo obsceno; nuestra tarea es asegurarnos de que el juego no valga la pena.

Abrir la oportunidad de compartir tu opinión, comunicarte y comentar no es difícil. Es mucho más difícil lograr condiciones seguras, cómodas y un trato respetuoso hacia las personas. Y sin esto no habrá desarrollo de ninguna comunidad.

Fuente: habr.com

Añadir un comentario