Como moderamos os anúncios

Como moderamos os anúncios

Todo serviço cujos usuários podem criar conteúdo próprio (UGC - Conteúdo Gerado pelo Usuário) é obrigado a não apenas resolver questões de negócio, mas também a organizar o UGC. Uma moderação inadequada ou de baixa qualidade pode diminuir a atratividade do serviço para os usuários, podendo até levar à sua interrupção.

Hoje vamos falar sobre a sinergia entre a Yula e o Одноклассники, que nos ajuda a moderar efetivamente os anúncios na Yula.

A sinergia é algo muito útil, e no mundo moderno, onde as tecnologias e as tendências mudam rapidamente, ela pode se tornar um verdadeiro recurso. Por que gastar recursos escassos e tempo inventando o que já foi inventado e aperfeiçoado por outros?

Pensamos assim também, quando nos deparamos com a tarefa de moderar o conteúdo do usuário - imagens, textos e links. Nossos usuários carregam milhões de unidades de conteúdo na Yula todos os dias, e sem o processamento automático, moderar todos esses dados manualmente é absolutamente inviável.

Portanto, utilizamos uma plataforma de moderação já preparada, que foi aprimorada pelos nossos colegas do Одноклассники até um estado de "quase perfeição".

Por que o Одноклассники?

Diariamente, a rede social recebe dezenas de milhões de usuários que publicam bilhões de unidades de conteúdo: de fotos a vídeos e textos. A plataforma de moderação do Одноклассники ajuda a verificar volumes muito grandes de dados e a combater spammers e bots.

A equipe de moderação do OK acumulou uma vasta experiência, já que aperfeiçoam sua ferramenta há 12 anos. É importante que eles não apenas possam compartilhar suas soluções já prontas, mas também ajustar a arquitetura de sua plataforma para nossas tarefas específicas.

Como moderamos os anúncios

A partir de agora, por conveniência, chamaremos a plataforma de moderação do OK simplesmente de "plataforma".

Como tudo funciona

Entre a Yula e o Одноклассники, a troca de dados é realizada através de Apache Kafka.

Por que escolhemos esta ferramenta:

  • Na Yula, todos os anúncios passam por pós-moderação, portanto, uma resposta síncrona não era inicialmente necessária.
  • Se acontecer um imprevisto e a Yula ou o Одноклассники ficarem indisponíveis, incluindo em razão de picos de carga, os dados do Kafka não se perderão e poderão ser lidos posteriormente.
  • A plataforma já foi integrada com Kafka, portanto, a maioria das questões de segurança foram resolvidas.

Como moderamos os anúncios

Para cada anúncio criado ou modificado pelo usuário no Yula, é gerado um JSON com os dados, que é colocado no Kafka para moderação posterior. Os anúncios são carregados do Kafka para a plataforma, onde decisões são tomadas automaticamente ou manualmente. Anúncios ruins são bloqueados com a indicação do motivo, enquanto aqueles em que a plataforma não encontrou violações são marcados como "bons". Em seguida, todas as decisões são enviadas de volta para o Yula e aplicadas no serviço.

Em suma, para o Yula, tudo se resume a ações simples: enviar o anúncio para a plataforma Odnoklassniki e receber de volta a resolução "ok" ou a razão pela qual não é "ok".

Processamento automático

O que acontece com o anúncio depois que ele entra na plataforma? Cada anúncio é dividido em várias entidades:

  • título,
  • descrição,
  • fotos,
  • categoria e subcategoria selecionadas pelo usuário para o anúncio,
  • preço.

Como moderamos os anúncios

Em seguida, para cada entidade, a plataforma realiza clusterização para encontrar duplicatas. Textos e fotos são clusterizados de acordo com esquemas diferentes.

Os textos são normalizados antes da clusterização para remover caracteres especiais, letras alteradas e outros ruídos. Os dados obtidos são divididos em N-gramas, cada um dos quais é hashado. No final, obtemos uma multiplicidade de hashes únicos. A similaridade entre os textos é calculada pela medida de Jaccard entre dois conjuntos obtidos. Se a similaridade for maior que o limite, os textos são agrupados em um único cluster. Para acelerar a busca por clusters semelhantes, são utilizados MinHash e hash sensível à localidade.

Para as fotos, foram desenvolvidas várias opções de junção de imagens, desde a comparação de pHash das imagens até a busca de duplicatas usando uma rede neural.

A última abordagem é a mais "rígida". Para treinar o modelo, foram selecionados grupos de três imagens (N, A, P), onde N não é semelhante a A, enquanto P é semelhante a A (sendo uma semi-duplicata). Em seguida, a rede neural foi treinada para garantir que A e P fossem o mais próximos possível, enquanto A e N fossem o mais distantes possível. Isso resulta em menos falsos positivos em comparação com simplesmente usar embeddings de uma rede pré-treinada.

Quando a rede neural recebe imagens, ela gera um vetor de N(128) dimensões para cada uma e faz uma solicitação para avaliar a similaridade da imagem. Em seguida, é calculado um limiar, abaixo do qual imagens próximas são consideradas duplicatas.

O modelo é habilidoso em identificar spammers que fotografam o mesmo produto de diferentes ângulos para contornar a comparação por pHash.

Como moderamos os anúnciosComo moderamos os anúncios
Exemplo de fotos de spam, unidas pela rede neural como duplicatas.

Na etapa final, as duplicatas de anúncios são pesquisadas simultaneamente tanto pelo texto quanto pela imagem.

Se dois ou mais anúncios se juntam em um cluster, o sistema inicia um bloqueio automático, que, segundo certos algoritmos, escolhe quais duplicatas remover e quais manter. Por exemplo, se dois usuários têm fotos idênticas em seus anúncios, o sistema bloqueará o anúncio mais recente.

Após a criação, todos os clusters passam por uma série de filtros automáticos. Cada filtro atribui uma pontuação (score) ao cluster: qual a probabilidade de conter uma ameaça identificada por esse filtro.

Por exemplo, o sistema analisa a descrição do anúncio e seleciona categorias potenciais para ele. Em seguida, adota a que possui a probabilidade máxima e compara com a categoria especificada pelo autor do anúncio. Se não coincidem, o anúncio é bloqueado por categoria incorreta. E, como somos bons e honestos, informamos diretamente ao usuário qual categoria ele deve escolher para que o anúncio passe pela moderação.

Como moderamos os anúncios
Notificação de bloqueio por categoria incorreta.

Na nossa plataforma, a aprendizagem de máquina se sente em casa. Por exemplo, com a sua ajuda, buscamos, nos títulos e descrições, produtos proibidos na Rússia. E os modelos de redes neurais olham atentamente as imagens, verificando se há URLs, textos de spam, telefones e todas as outras 'proibições'.

Para os casos em que um produto proibido é tentado vender disfarçado como algo legal, e não há texto algum no título ou na descrição, utilizamos a rotulagem de imagens. Para cada imagem, podem ser aplicadas até 11 mil diferentes etiquetas, descrevendo o que está na imagem.

Como moderamos os anúncios
Um narguilé está sendo vendido disfarçado como um samovar.

Ao lado dos filtros complexos, também operam filtros simples que resolvem problemas óbvios relacionados ao texto:

  • antimat;
  • detector de URLs e números de telefone;
  • menções de mensageiros e outros contatos;
  • preço abaixo do mercado;
  • anúncios em que nada é vendido, etc.

Hoje, cada anúncio passa por uma peneira fina de mais de 50 filtros automáticos que tentam encontrar algo ruim nele.

Se nenhum dos detectores se ativar, o Yula recebe uma resposta de que o anúncio "provavelmente" está em ordem. Nós aplicamos essa resposta e os usuários que se inscreveram no vendedor recebem uma notificação sobre a disponibilidade de um novo produto.

Como moderamos os anúncios
Notificação de que o vendedor tem um novo produto.

Como resultado, cada anúncio ‘acumula’ metadados, parte dos quais é gerada no momento da criação do anúncio (endereço IP do autor, user-agent, plataforma, geolocalização, etc.), enquanto o restante são scores atribuídos por cada filtro.

Filas de anúncios

Quando um anúncio chega à plataforma, o sistema o coloca em uma das filas. Cada fila é formada por meio de uma fórmula matemática que combina os metadados do anúncio de maneira a detectar algum padrão ruim.

Por exemplo, pode-se criar uma fila de anúncios na categoria ‘Celulares’ de usuários do Yula alegadamente de São Petersburgo, mas com seus endereços IP vindo de Moscovo ou de outras cidades.

Como moderamos os anúncios
Exemplo de anúncios postados por um usuário em diferentes cidades.

Ou pode-se formar filas com base nas pontuações que a rede neural atribui aos anúncios, ordenando-os em ordem decrescente.

Cada fila, de acordo com sua fórmula, atribui um score final ao anúncio. A partir daí, diferentes ações podem ser tomadas:

  • indicar um valor limite, ao qual o anúncio receberá um certo tipo de bloqueio;
  • enviar todos os anúncios da fila aos moderadores para verificação manual;
  • ou combinar as opções anteriores: indicar um limiar de bloqueio automático e enviar aos moderadores aqueles anúncios que não atingiram esse limiar.

Como moderamos os anúncios

Por que essas filas são necessárias? Vamos supor que um usuário carregou uma foto de uma arma de fogo. A rede neural atribui uma pontuação de 95 a 100 e com 99% de precisão determina que a imagem contém uma arma. Mas se o valor da pontuação for inferior a 95%, a precisão do modelo começa a diminuir (esta é uma característica dos modelos de redes neurais).

Como resultado, é formada uma fila com base na pontuação do modelo, e aqueles anúncios que obtiveram de 95 a 100 são automaticamente bloqueados como "Produto Proibido". Anúncios com pontuações abaixo de 95 são enviados para uma verificação manual pelos moderadores.

Como moderamos os anúncios
Beretta de chocolate com munições. Somente para moderação manual! 🙂

Moderação manual

No início de 2019, cerca de 94% de todos os anúncios no Yula são moderados automaticamente.

Como moderamos os anúncios

Se a plataforma não consegue se decidir sobre alguns anúncios, ela os envia para moderação manual. Os colegas do Odnoklassniki desenvolveram uma ferramenta própria: nas tarefas para os moderadores, todas as informações necessárias para uma rápida decisão — se o anúncio é aceitável ou se deve ser bloqueado com indicação do motivo — são exibidas instantaneamente.

E para que a qualidade do serviço não seja comprometida na moderação manual, o trabalho das pessoas é constantemente monitorado. Por exemplo, no fluxo de tarefas, são mostradas "armadilhas" ao moderador — anúncios para os quais já existem soluções prontas. Se a decisão do moderador não coincidir com a solução pronta, um erro é registrado para o moderador.

Em média, o moderador gasta 10 segundos para verificar um anúncio. Além disso, a quantidade de erros não ultrapassa 0,5% de todos os anúncios verificados.

Moderação popular

Os colegas do Odnoklassniki foram ainda mais longe e utilizaram "ajuda da plateia": criaram um aplicativo-jogo para a rede social, no qual é possível marcar rapidamente uma grande quantidade de dados, destacando um certo indicador negativo — Moderador do Odnoklassniki (https://ok.ru/app/moderator). Uma boa maneira de contar com a ajuda dos usuários do OK, que buscam tornar o conteúdo mais agradável.

Como moderamos os anúncios
Um jogo em que os usuários marcam fotos que contêm um número de telefone.

Qualquer fila de anúncios na plataforma pode ser redirecionada para o jogo Moderador do Odnoklassniki. Tudo que os usuários do jogo rotulam é então enviado para os moderadores internos para verificação. Esse esquema permite bloquear anúncios para os quais ainda não foram criados filtros, enquanto cria conjuntos de dados para treinamento.

Armazenamento dos resultados da moderação

Mantemos todas as decisões tomadas durante a moderação, para não processar novamente os anúncios que já tiveram alguma decisão.

Diariamente, são criados milhões de clusters de anúncios. Com o tempo, cada cluster recebe uma marca de "bom" ou "ruim". Cada novo anúncio ou sua edição, ao cair em um cluster com uma marca, recebe automaticamente a resolução do próprio cluster. Essas resoluções automáticas somam cerca de 20 mil por dia.

Como moderamos os anúncios

Se nenhum novo anúncio chega ao cluster, ele é removido da memória, e seu hash e decisão são registrados no Apache Cassandra.

Quando a plataforma recebe um novo anúncio, ela primeiro tenta encontrar um cluster semelhante entre os já criados e obter a decisão dele. Se não há tal cluster, a plataforma vai ao Cassandra e procura lá. Encontrou? Ótimo, aplica a decisão ao cluster e envia para a Yula. Essas decisões "repetidas" chegam a cerca de 70 mil diariamente, o que representa 8% do total.

Resumindo

Estamos usando a plataforma de moderação do Odnoklassniki há dois anos e meio. Estamos satisfeitos com os resultados:

  • Moderamos automaticamente 94% de todos os anúncios por dia.
  • Reduzimos o custo da moderação de um anúncio de 2 rublos para 7 copeques.
  • Graças à ferramenta pronta, esquecemos os problemas de gerenciamento de moderadores.
  • Aumentamos em 2,5 vezes o número de anúncios processados manualmente, mantendo o mesmo número de moderadores e orçamento. A qualidade da moderação manual também melhorou devido ao controle automatizado, com uma taxa de erro em torno de 0,5%.
  • Cobrimos rapidamente novos tipos de spam com filtros.
  • Conectamos rapidamente novos departamentos à moderação «Verticalidades da Yula». Desde 2017, a Yula lançou verticalidades em Imóveis, Vagas e Autos.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster