Como abrir comentários e não se afogar em spam

Como abrir comentários e não se afogar em spam

Quando o seu trabalho é criar algo bonito, não é preciso falar muito sobre isso, pois o resultado está diante dos olhos de todos. Mas se você apagar as inscrições das cercas, ninguém notará seu trabalho, desde que as cercas pareçam decentes ou até que você apague algo errado.

Qualquer serviço onde você possa deixar um comentário, avaliar, enviar uma mensagem ou fazer upload de fotos, mais cedo ou mais tarde, enfrentará o problema de spam, fraude e obscenidade. Isto não pode ser evitado, mas deve ser enfrentado.

Meu nome é Mikhail, trabalho na equipe Antispam, que protege os usuários dos serviços Yandex de tais problemas. Nosso trabalho raramente é notado (e isso é bom!), então hoje vou contar mais sobre ele. Você aprenderá quando a moderação é inútil e por que a precisão não é o único indicador de sua eficácia. Também falaremos sobre palavrões usando o exemplo de cães e gatos e por que às vezes é útil “pensar como quem xinga”.

Mais e mais serviços estão aparecendo no Yandex onde os usuários publicam seu conteúdo. Você pode fazer uma pergunta ou escrever uma resposta no Yandex.Q, discutir notícias do pátio no Yandex.District, compartilhar as condições do trânsito em conversas no Yandex.Maps. Mas quando o público do serviço cresce, ele se torna atraente para golpistas e spammers. Eles vêm e preenchem comentários: oferecem dinheiro fácil, anunciam curas milagrosas e prometem benefícios sociais. Por causa dos spammers, alguns usuários perdem dinheiro, enquanto outros perdem o desejo de gastar tempo em um serviço mal cuidado e repleto de spam.

E este não é o único problema. Nós nos esforçamos não apenas para proteger os usuários de golpistas, mas também para criar uma atmosfera confortável para comunicação. Se as pessoas forem confrontadas com palavrões e insultos nos comentários, é provável que saiam e nunca mais voltem. Isso significa que você também precisa ser capaz de lidar com isso.

Rede limpa

Como costuma acontecer connosco, os primeiros desenvolvimentos nasceram no Search, na parte que combate o spam nos resultados de pesquisa. Há cerca de dez anos, surgiu ali a tarefa de filtrar conteúdo adulto para pesquisas familiares e para consultas que não exigiam respostas da categoria 18+. Foi assim que surgiram os primeiros dicionários de pornografia e palavrões digitados manualmente, reabastecidos por analistas. A principal tarefa foi classificar as solicitações entre aquelas em que é aceitável exibir conteúdo adulto e onde não é. Para esta tarefa, foram coletadas marcações, construídas heurísticas e treinados modelos. Foi assim que surgiram os primeiros desenvolvimentos para filtragem de conteúdo indesejado.

Com o tempo, UGC (conteúdo gerado pelo usuário) começou a aparecer no Yandex - mensagens que são escritas pelos próprios usuários e que o Yandex apenas publica. Pelas razões descritas acima, muitas mensagens não puderam ser publicadas sem consulta - era necessária moderação. Então eles decidiram criar um serviço que fornecesse proteção contra spam e invasores para todos os produtos Yandex UGC e usar os desenvolvimentos para filtrar conteúdo indesejado na Pesquisa. O serviço foi denominado “Web Limpa”.

Novas tarefas e ajuda dos traficantes

No início, apenas uma automação simples funcionou para nós: os serviços nos enviaram textos e neles rodamos dicionários de obscenidades, dicionários pornográficos e expressões regulares - os analistas compilavam tudo manualmente. Mas com o tempo, o serviço foi usado em um número cada vez maior de produtos Yandex e tivemos que aprender a trabalhar com novos problemas.

Muitas vezes, em vez de uma avaliação, os usuários publicam um conjunto de cartas sem sentido, tentando aumentar suas conquistas, às vezes anunciam sua empresa em avaliações de uma empresa concorrente, e às vezes simplesmente confundem as organizações e escrevem uma avaliação sobre uma loja de animais: “ Peixe perfeitamente cozido!” Talvez algum dia a inteligência artificial aprenda a compreender perfeitamente o significado de qualquer texto, mas agora a automação às vezes lida pior que os humanos.

Ficou claro que não poderíamos fazer isso sem marcação manual, e adicionamos um segundo estágio ao nosso circuito: enviá-lo para inspeção manual por uma pessoa. Foram incluídos ali aqueles textos publicados para os quais o classificador não encontrou problemas. Você pode facilmente imaginar a escala de tal tarefa, por isso não contamos apenas com avaliadores, mas também aproveitamos a “sabedoria da multidão”, ou seja, recorremos aos tolokers em busca de ajuda. São eles que nos ajudam a identificar o que a máquina deixou passar e, assim, ensiná-lo.

Cache inteligente e hashing LSH

Outro problema que encontramos ao trabalhar com comentários foi o spam, ou mais precisamente, seu volume e velocidade de propagação. Quando o público do Yandex.Region começou a crescer rapidamente, os spammers chegaram lá. Eles aprenderam a contornar as expressões regulares alterando ligeiramente o texto. Spam, é claro, ainda foi encontrado e excluído, mas na escala do Yandex, uma mensagem inaceitável postada mesmo por 5 minutos poderia ser vista por centenas de pessoas.

Como abrir comentários e não se afogar em spam

Claro, isso não nos agradou e criamos cache de texto inteligente baseado em LSH (hashing sensível à localidade). Funciona assim: normalizamos o texto, retiramos links dele e cortamos em n-gramas (sequências de n letras). Em seguida, foram calculados os hashes de n-gramas e a partir deles foi construído o vetor LSH do documento. A questão é que textos semelhantes, mesmo que ligeiramente alterados, se transformaram em vetores semelhantes.

Esta solução permitiu reutilizar os veredictos de classificadores e tolokers para textos semelhantes. Durante um ataque de spam, assim que a primeira mensagem passou na verificação e entrou no cache com o veredicto de “spam”, todas as novas mensagens semelhantes, mesmo as modificadas, receberam o mesmo veredicto e foram excluídas automaticamente. Mais tarde, aprendemos como treinar e retreinar automaticamente classificadores de spam, mas esse “cache inteligente” permaneceu conosco e ainda nos ajuda com frequência.

Bom classificador de texto

Sem ter tempo para parar de combater o spam, percebemos que 95% do nosso conteúdo é moderado manualmente: os classificadores reagem apenas às violações e a maioria dos textos é boa. Carregamos limpadores que em 95 casos em 100 dão a classificação “Está tudo bem”. Tive que fazer um trabalho incomum - criar classificadores de bom conteúdo, felizmente bastante marcação foi acumulada durante esse período.

O primeiro classificador ficou assim: lematizamos o texto (reduzimos as palavras à sua forma inicial), descartamos todas as classes gramaticais auxiliares e usamos um “dicionário de bons lemas” pré-preparado. Se todas as palavras do texto forem “boas”, então todo o texto não contém nenhuma violação. Em diferentes serviços, essa abordagem proporcionou imediatamente de 25 a 35% de automação da marcação manual. Claro que esta abordagem não é a ideal: é fácil combinar várias palavras inocentes e obter uma afirmação muito ofensiva, mas permitiu-nos atingir rapidamente um bom nível de automação e deu-nos tempo para treinar modelos mais complexos.

As próximas versões de bons classificadores de texto já incluíam modelos lineares, árvores de decisão e suas combinações. Para marcar grosserias e insultos, por exemplo, experimentamos a rede neural BERT. É importante compreender o significado de uma palavra no contexto e a conexão entre palavras de frases diferentes, e o BERT faz um bom trabalho nisso. (A propósito, recentemente colegas do News contado, como a tecnologia é usada para uma tarefa fora do padrão - encontrar erros em cabeçalhos.) Com isso, foi possível automatizar até 90% do fluxo, dependendo do serviço.

Precisão, integridade e velocidade

Para desenvolver, você precisa entender quais benefícios trazem certos classificadores automáticos, mudanças neles e se a qualidade das verificações manuais é degradante. Para fazer isso, usamos métricas de precisão e recall.

Precisão é a proporção de veredictos corretos entre todos os veredictos sobre conteúdo impróprio. Quanto maior a precisão, menos falsos positivos. Se você não prestar atenção à precisão, então, em teoria, você poderá excluir todos os spams e obscenidades, e junto com eles metade das mensagens boas. Por outro lado, se você confiar apenas na precisão, então a melhor tecnologia será aquela que não pega ninguém. Portanto, há também um indicador de completude: a parcela de conteúdo impróprio identificado entre o volume total de conteúdo impróprio. Essas duas métricas se equilibram.

Para medir, coletamos amostras de todo o fluxo de entrada de cada serviço e fornecemos amostras de conteúdo aos avaliadores para avaliação especializada e comparação com soluções de máquinas.

Mas há outro indicador importante.

Escrevi acima que uma mensagem inaceitável pode ser vista por centenas de pessoas mesmo em 5 minutos. Assim, contamos quantas vezes mostramos às pessoas conteúdo ruim antes de ocultá-lo. Isso é importante porque não basta trabalhar com eficiência – é preciso também trabalhar rápido. E quando construímos uma defesa contra os palavrões, sentimos isso ao máximo.

Antimatismo usando o exemplo de cães e gatos

Uma pequena digressão lírica. Alguns podem dizer que obscenidades e insultos não são tão perigosos quanto links maliciosos e nem tão irritantes quanto spam. Mas nos esforçamos para manter condições confortáveis ​​de comunicação para milhões de usuários, e as pessoas não gostam de voltar a lugares onde são insultadas. Não é à toa que a proibição de palavrões e insultos está prevista nas regras de muitas comunidades, inclusive em Habré. Mas nós divagamos.

Os dicionários de palavrões não conseguem lidar com toda a riqueza da língua russa. Apesar do fato de existirem apenas quatro raízes palavrões principais, a partir delas você pode inventar um número incontável de palavras que não podem ser captadas por nenhum mecanismo regular. Além disso, você pode escrever parte de uma palavra em transliteração, substituir letras por combinações semelhantes, reorganizar letras, adicionar asteriscos, etc. Às vezes, sem contexto, é basicamente impossível determinar que o usuário quis dizer um palavrão. Respeitamos as regras de Habr, por isso demonstraremos isso não com exemplos vivos, mas com cães e gatos.

Como abrir comentários e não se afogar em spam

“Lei”, disse o gato. Mas entendemos que o gato disse uma palavra diferente...

Começamos a pensar em algoritmos de “correspondência difusa” para nosso dicionário e em um pré-processamento mais inteligente: fornecemos transliteração, colamos espaços e pontuação, procuramos padrões e escrevemos expressões regulares separadas neles. Essa abordagem trouxe resultados, mas muitas vezes reduziu a precisão e não proporcionou a completude desejada.

Então decidimos “pensar como palavrões”. Começamos a introduzir ruído nos dados: reorganizamos letras, geramos erros de digitação, substituímos letras por grafias semelhantes e assim por diante. A marcação inicial para isso foi feita aplicando dicionários mat a grandes corpora de textos. Se você pegar uma frase e distorcê-la de várias maneiras, acabará com muitas frases. Dessa forma, você pode aumentar a amostra de treinamento dezenas de vezes. Restava apenas treinar no pool resultante algum modelo mais ou menos inteligente que levasse em conta o contexto.

Como abrir comentários e não se afogar em spam

É muito cedo para falar sobre a decisão final. Ainda estamos experimentando abordagens para esse problema, mas já podemos ver que uma rede convolucional simbólica simples de várias camadas supera significativamente os dicionários e os motores regulares: é possível aumentar a precisão e a recuperação.

Claro, entendemos que sempre haverá maneiras de contornar até mesmo a automação mais avançada, especialmente quando o assunto é tão perigoso: escrever de uma forma que uma máquina estúpida não entenda. Aqui, como na luta contra o spam, nosso objetivo não é erradicar a própria possibilidade de escrever algo obsceno; nossa tarefa é garantir que o jogo não valha a pena.

Abrir a oportunidade de compartilhar sua opinião, comunicar e comentar não é difícil. É muito mais difícil conseguir condições seguras e confortáveis ​​e um tratamento respeitoso das pessoas. E sem isso não haverá desenvolvimento de nenhuma comunidade.

Fonte: habr.com

Adicionar um comentário