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



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

Qualquer serviço em que você possa deixar um comentário, revisar, enviar uma mensagem ou enviar fotos, mais cedo ou mais tarde, enfrenta o problema de spam, fraude e linguagem obscena. Isso não pode ser evitado, mas isso deve ser combatido.

Meu nome é Mikhail, trabalho na equipe do Anti-Spam, que protege os usuários dos serviços Yandex de tais problemas. Nosso trabalho raramente é perceptível (e bom!), Então hoje vou falar sobre isso com mais detalhes. Você descobrirá em que casos a moderação é inútil e por que a precisão não é o único indicador de sua eficácia. Também falaremos sobre parceiro usando o exemplo de cães e gatos e por que às vezes é útil "pensar como um vigarista".

No Yandex, há cada vez mais serviços em que os usuários publicam seu conteúdo. Você pode fazer uma pergunta ou escrever uma resposta no Yandex.Kew, discutir as notícias do estaleiro em Yandex.Rayon, compartilhar a situação do tráfego nas 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 os comentários: oferecem dinheiro fácil, anunciam fundos milagrosos e prometem benefícios sociais. Devido a spammers, alguns usuários perdem dinheiro, enquanto outros - o desejo de gastar tempo em um serviço preparado e cheio de spam.

E este não é o único problema. Nós nos esforçamos não apenas para proteger os usuários dos golpistas, mas também para criar uma atmosfera confortável para a comunicação. Se as pessoas nos comentários encontrarem linguagem e insultos obscenos, é muito provável que saiam e nunca mais voltem. Então, isso também precisa ser capaz de lutar.

Web limpa


Como geralmente acontece conosco, os primeiros desenvolvimentos nasceram na Pesquisa, na parte que combate o spam nos resultados da pesquisa. Há dez anos, apareceu a tarefa de filtrar o conteúdo adulto para pesquisas na família e para consultas que não impliquem respostas da categoria 18+. Assim, os primeiros dicionários de pornografia e esteira digitados manualmente apareceram, eles foram reabastecidos por analistas. A principal tarefa era classificar solicitações naquelas em que o conteúdo adulto é aceitável e onde não. Para esta tarefa, a marcação foi coletada, as heurísticas foram construídas, os modelos foram treinados. Portanto, os primeiros desenvolvimentos apareceram para filtrar conteúdo inapropriado.

Com o tempo, o Yandex começou a aparecer UGC (conteúdo gerado pelo usuário) - mensagens escritas pelos próprios usuários, e o Yandex apenas publica. Pelas razões descritas acima, muitas mensagens não puderam ser publicadas sem olhar - era necessária moderação. Decidimos criar um serviço que forneceria proteção contra spam e cibercriminosos para todos os produtos Yandex UGC e usar as práticas recomendadas para filtrar conteúdo inapropriado na Pesquisa. O serviço foi chamado de Web Limpa.

Novas tarefas e ajuda aos tolokers


No início, apenas a automação simples funcionava para nós: os serviços nos enviavam textos e rodávamos dicionários, pornografia e dicionários regulares - os analistas faziam tudo manualmente. Porém, com o tempo, o serviço foi usado em um número crescente de produtos Yandex, e tivemos que aprender a trabalhar com novos problemas.

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

Tornou-se claro que não se poderia prescindir da marcação manual e adicionamos o segundo passo ao nosso circuito - enviando-o para inspeção manual por uma pessoa. Havia aqueles textos publicados para os quais o classificador não viu problemas. Você pode imaginar facilmente a escala dessa tarefa, portanto, não apenas confiamos em avaliadores, mas também usamos a “sabedoria da multidão”, ou seja, pedimos a ajuda de tolokers. São eles que nos ajudam a identificar o que a máquina perdeu e, assim, ensiná-la.

Cache inteligente e hash LSH


Outro problema que encontramos ao trabalhar com comentários é o spam, ou melhor, seu volume e velocidade de distribuição. Quando o público do Yandex.Ryon começou a crescer rapidamente, os spammers chegaram lá. Eles aprenderam a se movimentar regularmente, alterando ligeiramente o texto. O spam, é claro, ainda foi encontrado e excluído, mas centenas de pessoas puderam ver uma mensagem inaceitável mesmo por 5 minutos na escala Yandex.



Obviamente, isso não nos convinha e fizemos cache inteligente de textos com base em LSH ( hash sensível à localidade)) Funciona assim: normalizamos o texto, jogamos fora links e cortamos em n-gramas (sequências de n letras). Além disso, os hashes de n-gramas foram considerados e o vetor LSH do documento já foi construído sobre eles. O ponto é que textos semelhantes, mesmo que tenham mudado um pouco, se transformaram em vetores semelhantes.

Essa decisão permitiu reutilizar vereditos de classificadores e tokers para textos semelhantes. Em 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 a treinar e treinar automaticamente os classificadores de spam, mas esse "cache inteligente" permaneceu conosco e ainda nos ajuda muito.

Classificador de bons textos


Sem tempo para interromper o combate ao spam, percebemos que 95% do nosso conteúdo é moderado manualmente: os classificadores respondem apenas a violações e a maioria dos textos é boa. Carregamos os tolokers, que em 95 casos em cada 100 classificaram "Tudo está bem". Eu tive que fazer um trabalho incomum - para fazer classificadores de bom conteúdo, o benefício da marcação para esse período já se acumulou o suficiente.

O primeiro classificador ficou assim: deixamos o texto de lado (reduzimos as palavras para a forma inicial), jogamos fora todas as partes do discurso e usamos o “dicionário de bons lemas” pré-preparado. Se todas as palavras forem "boas" no texto, o texto inteiro não conterá violações. Em serviços diferentes, essa abordagem deu imediatamente de 25 a 35% da automação de marcação manual. Obviamente, essa abordagem não é ideal: é fácil combinar várias palavras inocentes e obter uma declaração muito ofensiva, mas nos permitiu alcançar rapidamente um bom nível de automação e deu tempo para treinar modelos mais complexos.

As seguintes versões dos classificadores de bons textos já incluíam modelos lineares, árvores de decisão e suas combinações. Para marcar grosseria e insultos, por exemplo, tentamos a rede neural BERT. Aqui é importante compreender o significado da palavra no contexto e a conexão de palavras de diferentes frases, e o BERT faz um bom trabalho. (A propósito, recentemente, colegas do News disseram como usam a tecnologia para uma tarefa não padrão - para procurar erros nos cabeçalhos.) Como resultado, conseguimos automatizar até 90% do fluxo, dependendo do serviço.

Precisão, perfeição e velocidade


Para desenvolver, você precisa entender que tipo de classificadores automáticos traz benefícios, mudanças neles e também se a qualidade das verificações manuais não diminui. Para isso, usamos indicadores de precisão e integridade.

Precisão é a proporção de veredictos corretos entre todos os veredictos de conteúdo ruim. Quanto maior a precisão, menos falsos positivos. Se você não seguir a precisão, em teoria poderá excluir todo o spam e obscenidades, e com eles metade das boas mensagens. Por outro lado, se você confiar apenas na precisão, a melhor tecnologia será aquela que não pega ninguém. Portanto, há também um indicador de integridade: a proporção de conteúdo incorreto detectado entre o volume total de conteúdo incorreto. Essas duas métricas se equilibram.

Para medição, 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 centenas de pessoas podem ver uma mensagem inaceitável mesmo em 5 minutos. Portanto, consideramos quantas vezes conseguimos mostrar às pessoas conteúdo ruim antes de ocultá-lo. Isso é importante, porque não é suficiente trabalhar com eficiência - você precisa trabalhar rápido. E quando construímos a defesa contra o tatame, sentimos isso ao máximo.

Antimat no exemplo de gatinhos e cachorros


Uma ligeira digressão lírica. Alguém pode dizer que xingamentos e insultos não são tão perigosos quanto links maliciosos, nem tão irritantes quanto spam. Mas nos esforçamos para manter um ambiente confortável para a comunicação entre milhões de usuários, e as pessoas não gostam de voltar para onde são ofendidas. Não é de admirar que a proibição de linguagem obscena e insultos esteja explicitada nas regras de muitas comunidades, inclusive em Habré. Mas nós estávamos distraídos.

Os dicionários da Mata não lidam com toda a riqueza da língua russa. Apesar do fato de haver apenas quatro raízes obscenas principais, a partir delas, você pode criar uma infinidade de palavras que não consegue entender por nenhum habitual. Além disso, você pode escrever na parte de transliteração de uma palavra, substituir letras por combinações semelhantes, reorganizar letras, adicionar estrelas etc. Às vezes, sem contexto, é basicamente impossível determinar o que o usuário quis dizer com uma palavra obscena. Nós respeitamos as regras de Habr, portanto, demonstraremos isso não em exemplos ao vivo, mas em focas e cães.



"Lyau", disse o gato. Mas entendemos que o gato disse outra palavra ...

Começamos a pensar nos algoritmos de "correspondência difusa" do nosso vocabulário e em um pré-processamento mais inteligente: transliterados, espaços colados e pontuação, procuramos padrões e escrevemos regulares nele. Essa abordagem produziu resultados, mas frequentemente reduziu a precisão, sem fornecer a integridade desejada.

Então decidimos "pensar em palavrões". Nós mesmos começamos a introduzir ruídos nos dados: reorganizamos as letras, geramos erros de digitação, substituímos as letras por ortografia semelhante e assim por diante. A marcação inicial para isso foi realizada aplicando-se dicionários mat em grandes grupos de textos. Se você pegar uma frase e a distorcer de várias maneiras, você já terá muitas frases. Assim, você pode aumentar a amostra de treinamento dezenas de vezes. Tudo o que restou foi treinar em um pool recebido um modelo mais ou menos inteligente que levasse em conta o contexto.



É muito cedo para falar sobre a decisão final. Ainda estamos experimentando abordagens para esse problema, mas já vemos que uma rede de convolução simbólica simples de várias camadas excede significativamente dicionários e regulares: ela aumenta a precisão e a integridade.

Obviamente, entendemos que sempre há maneiras de contornar a automação mais avançada, especialmente quando é tão imprudente: escrever para que uma máquina estúpida não entenda. Aqui, como na luta contra o spam, não temos como objetivo erradicar a possibilidade de escrever algo obsceno, nossa tarefa é fazer com que o jogo não valha a pena.

É fácil abrir a oportunidade de compartilhar sua opinião, comunicar e comentar. É muito mais difícil alcançar um ambiente seguro, confortável e respeito pelas pessoas. E sem isso, não haverá desenvolvimento de nenhuma comunidade.

All Articles