
Cada serviço, cujos usuários podem criar seu próprio conteúdo (UGC - conteúdo gerado pelo usuário), é forçado não apenas a resolver problemas de negócios, mas também a ordenar as coisas no UGC. Uma moderação de conteúdo de baixa ou má qualidade no final pode reduzir a atratividade do serviço para os usuários, até o término de seu trabalho.
Hoje, falaremos sobre a sinergia entre Yula e Odnoklassniki, que nos ajuda a moderar efetivamente os anúncios no Yule.
A sinergia em geral é muito útil e, no mundo moderno, quando a tecnologia e as tendências mudam muito rapidamente, pode se tornar um salva-vidas. Por que gastar recursos e tempo escassos na invenção do que você já foi inventado e lembrado?
Pensamos da mesma maneira quando enfrentamos o desafio de moderar o conteúdo gerado pelo usuário - imagens, texto e links. Nossos usuários carregam milhões de unidades de conteúdo para o Yula todos os dias e, sem processamento automático, a moderação manual de todos esses dados não é realista.
Portanto, aproveitamos a plataforma de moderação já preparada, que na época nossos colegas de Odnoklassniki haviam apelidado de "quase perfeito".
Por que colegas de classe?
Todos os dias, dezenas de milhões de usuários vêm à rede social para publicar bilhões de unidades de conteúdo: de fotos a vídeos e textos. A plataforma de moderação do Odnoklassniki ajuda a verificar grandes quantidades de dados e neutralizar spammers e bots.
A equipe de moderação da OK adquiriu muita experiência, pois aprimora sua ferramenta há 12 anos. É importante que eles não apenas compartilhem suas soluções prontas, mas também configurem a arquitetura de sua plataforma para nossas tarefas específicas.

Por questões de brevidade, chamaremos a plataforma de moderação de OK simplesmente de "plataforma".
Como funciona
Entre Yula e Odnoklassniki, a troca de dados é estabelecida através do
Apache Kafka .
Por que escolhemos esta ferramenta:
- No Yulia, todos os anúncios são pós-moderados, portanto, inicialmente, uma resposta síncrona não era necessária.
- Se um parágrafo feroz acontecer, e Yula ou Odnoklassniki ficarem inacessíveis, inclusive devido a algumas cargas de pico, os dados de Kafka não desaparecerão em nenhum lugar e poderão ser lidos mais tarde.
- A plataforma já foi integrada ao Kafka, portanto, a maioria dos problemas de segurança foi resolvida.

Para cada anúncio criado ou modificado pelo usuário no Yule, o JSON é gerado com dados, que são colocados no Kafka para moderação subsequente. No Kafka, os anúncios são enviados para a plataforma, onde as decisões são tomadas automaticamente ou manualmente. Anúncios ruins são bloqueados por um motivo e aqueles em que a plataforma não encontrou violações são sinalizados como "bons". Todas as decisões são enviadas de volta para Yula e aplicadas no serviço.
Como resultado, para o Yula, tudo se resume a ações simples: envie um anúncio para a plataforma Odnoklassniki e volte a obter a resolução "ok" ou por que não "ok".
Processamento automático
O que acontece com um anúncio depois que ele atinge a plataforma? Cada anúncio é dividido em várias entidades:
- nome
- descrição
- fotos
- categoria selecionada pelo usuário e subcategoria do anúncio,
- o preço

Em seguida, para cada entidade, os clusters de plataforma para encontrar duplicatas. Além disso, o texto e as fotos são agrupados de maneiras diferentes.
Os textos antes do cluster são normalizados para apagar caracteres especiais, letras alteradas e outros tipos de lixo. Os dados recebidos são divididos em N gramas, cada um dos quais é hash. O resultado são muitos hashes únicos. A semelhança entre os textos é considerada
como Jacquard entre os dois conjuntos resultantes. Se a semelhança for maior que o limite, os textos serão colados juntos em um cluster. Para acelerar a pesquisa de clusters semelhantes, o MinHash e o hash sensível à localidade são usados.
Várias opções para colar imagens foram inventadas para fotos, desde comparar imagens de pHash até encontrar duplicatas usando uma rede neural.
O último método é o mais "severo". Para treinar o modelo, essas triplas imagens (N, A, P) foram selecionadas nas quais N não se parece com A e P - se parece com A (é metade duplicada). Então, a rede neural aprendeu a tornar A e P o mais próximo possível e A e N o mais longe possível. Isso resulta em menos falsos positivos em comparação com a simples incorporação de uma rede pré-treinada.
Quando uma rede neural recebe imagens na entrada, gera um vetor dimensional N (128) para cada uma delas e uma solicitação é feita para avaliar a proximidade da imagem. Em seguida, é calculado um limite no qual imagens fechadas são consideradas duplicadas.
O modelo pode encontrar habilmente spammers que fotografam especificamente o mesmo produto de diferentes ângulos, a fim de contornar a comparação de pHash.

Um exemplo de fotos de spam coladas por uma rede neural como duplicatas.Na fase final, os anúncios duplicados são pesquisados simultaneamente em texto e imagem.
Se dois ou mais anúncios estiverem presos em um cluster, o sistema inicia um bloqueio automático que, de acordo com certos algoritmos, seleciona quais duplicatas remover e quais sair. Por exemplo, se dois usuários tiverem as mesmas fotos em um anúncio, o sistema bloqueará um 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 ao cluster: com que probabilidade ele contém a ameaça que esse filtro identifica.
Por exemplo, o sistema analisa a descrição no anúncio e seleciona categorias em potencial para ele. Depois, ele pega o que tem a maior probabilidade e o compara com a categoria indicada pelo criador do anúncio. Se eles não corresponderem, o anúncio será bloqueado para a categoria errada. E, como somos gentis e honestos, informamos diretamente ao usuário qual categoria ele precisa escolher para que o anúncio seja moderado.
Bloquear notificação para a categoria errada.Em nossa plataforma, o aprendizado de máquina se sente em casa. Por exemplo, com sua ajuda, procuramos mercadorias proibidas na Federação Russa em nomes e descrições. E modelos de redes neurais meticulosamente "olham" imagens para URLs, textos com spam, telefones e os mesmos "proibidos".
Nos casos em que eles tentam vender produtos proibidos, disfarçando-se como algo legal, e ao mesmo tempo não há texto no nome ou na descrição, usamos a marcação de imagens. Para cada imagem podem ser afixados até 11 mil tags diferentes que descrevem o que está na imagem.
Eles estão tentando vender um cachimbo de água, disfarçando-o de samovar.Paralelamente a filtros complexos, simples, resolvendo tarefas óbvias relacionadas ao trabalho de texto:
- antimat;
- Detector de URL e número de telefone;
- menção de mensageiros instantâneos e outros contatos;
- preço baixo;
- anúncios que não vendem nada etc.
Hoje, cada anúncio passa por uma peneira fina de mais de 50 filtros automáticos que tentam encontrar algo ruim no anúncio.
Se nenhum dos detectores funcionou, é enviada uma resposta a Yulu de que o anúncio está "provavelmente" completo. Usamos essa resposta em casa e os usuários que assinam o vendedor recebem uma notificação sobre a aparência de um novo produto.
Notificação de que o vendedor tem um novo produto.Como resultado, cada anúncio "é coberto" com metadados, alguns dos quais são gerados quando o anúncio é criado (endereço IP do autor, agente do usuário, plataforma, geolocalização etc.), e o restante é a pontuação atribuída a cada filtro.
Filas de anúncios
Quando um anúncio atinge a plataforma, o sistema o coloca em uma das filas. Cada fila é formada usando uma fórmula matemática que combina metadados de anúncios de maneira a detectar algum tipo de padrão incorreto.
Por exemplo, você pode criar uma fila de anúncios na categoria "Celulares" de usuários de Yula supostamente de São Petersburgo, mas ao mesmo tempo seus endereços IP de Moscou ou outras cidades.
Um exemplo de anúncio publicado por um usuário em cidades diferentes.Ou, você pode criar filas com base nos pontos que a rede neural atribui aos anúncios, colocando-os em ordem decrescente.
Cada linha, de acordo com sua fórmula, atribui uma pontuação final ao anúncio. Então você pode agir de diferentes maneiras:
- especifique um valor limite no qual o anúncio receberá um determinado tipo de bloqueio;
- todos os anúncios na fila devem ser enviados aos moderadores para revisão manual;
- ou combine as opções anteriores: especifique o limite para bloqueio automático e envie aos moderadores os anúncios que não atingiram esse limite.

Por que essas linhas são necessárias? Digamos que um usuário enviou uma foto de uma arma de fogo. A rede neural atribui a ele uma pontuação de 95 a 100 e, com 99% de precisão, determina qual é a arma na imagem. Mas se o valor da pontuação estiver abaixo de 95%, a precisão do modelo começará a diminuir (esse é um recurso dos modelos de redes neurais).
Como resultado, uma fila é formada com base no modelo de pontuação e os anúncios recebidos de 95 a 100 são automaticamente bloqueados como "Bens Proibidos". Anúncios com pontos abaixo de 95 são enviados aos moderadores para processamento manual.
Beretta de chocolate com cartuchos. Apenas para moderação manual! :)Moderação manual
No início de 2019, cerca de 94% de todos os anúncios no Yule são moderados automaticamente.

Se a plataforma não puder decidir sobre nenhum anúncio, envie-o para moderação manual. Os colegas de classe desenvolveram sua própria ferramenta: as tarefas dos moderadores exibem imediatamente todas as informações necessárias para tomar uma decisão rápida - o anúncio é adequado ou deve ser bloqueado com uma indicação do motivo.
E para que, com moderação manual, a qualidade do serviço não sofra, o trabalho das pessoas é constantemente monitorado. Por exemplo, no fluxo de tarefas, o moderador mostra "traps" - anúncios para os quais já existem soluções prontas. Se a decisão do moderador não corresponder à pronta, um erro será contado para o moderador.
O moderador médio gasta 10 segundos para verificar um anúncio. Além disso, o número de erros não ultrapassa 0,5% de todos os anúncios testados.
Moderação popular
Os colegas de Odnoklassniki foram ainda mais longe, aproveitaram a "ajuda do salão": eles escreveram um jogo de aplicativo para a rede social, no qual você pode marcar rapidamente uma grande quantidade de dados, destacando algum sinal ruim - Odnoklassnikov Moderator (
https://ok.ru/app/ moderador ). Uma boa maneira de aproveitar a ajuda de usuários OK que tentam tornar o conteúdo mais agradável.
Um jogo no qual os usuários marcam fotos com um número de telefone.Qualquer fila de anúncios na plataforma pode ser redirecionada para o jogo Odnoklassniki Moderator. Tudo o que os usuários do jogo marcam e depois vai para moderadores internos para verificação. Esse esquema permite bloquear anúncios para os quais os filtros ainda não foram criados e, simultaneamente, criar amostras de treinamento.
Armazenamento de resultados de moderação
Salvamos todas as decisões tomadas durante a moderação, para que depois não processemos os anúncios que já tomaram uma decisão.
Os anúncios geram milhões de clusters diariamente. Com o tempo, cada cluster recebe uma marca de "bom" ou "ruim". Cada novo anúncio ou sua edição, caindo no cluster com uma marca, recebe automaticamente a resolução do próprio cluster. Cerca de 20 mil dessas resoluções automáticas por dia.

Se o cluster não receber novas declarações, ele será excluído da memória e seu hash e solução serão gravados no Apache Cassandra.
Quando a plataforma recebe um novo anúncio, primeiro tenta encontrar um cluster semelhante entre os já criados e tomar uma decisão a partir dele. Se não houver esse cluster, a plataforma acessará o Cassandra e pesquisará lá. Encontrou? Ótimo, aplica a solução ao cluster e a envia para o Yula. Em média, 70.000 dessas decisões "repetidas" são recrutadas - 8% do total.
Resumir
Usamos a plataforma de moderação Odnoklassniki por dois anos e meio. Gostamos dos resultados:
- Moderamos automaticamente 94% de todos os anúncios por dia.
- O custo de moderação de um anúncio foi reduzido de 2 rublos para 7 copeques.
- Graças à ferramenta concluída, eles se esqueceram dos problemas de gerenciar moderadores.
- 2,5 vezes aumentou o número de anúncios processados manualmente com o mesmo número de moderadores e orçamento. A qualidade da moderação manual também aumentou devido ao controle automatizado e oscila em torno de 0,5% dos erros.
- Filtre rapidamente novos tipos de spam.
- Conecte rapidamente novas unidades do Yula Vertical à moderação. Desde 2017, verticais de Imóveis, Empregos e Automóveis aparecem em Yule.