Limpe uma tabela de pontuação alta para remover termos / nomes de usuário ofensivos

43

Estou criando um aplicativo para um cliente, que ele solicitou para ter uma tabela de recordes visível ao público. Ele exibirá o nome de usuário, que é um campo de texto livre que os jogadores podem inserir. É provável que a contagem de jogadores seja extremamente baixa - eu esperaria 10s ou 100s / dia no máximo.

O campo de nome de usuário terá mais de 3 caracteres. Os nomes serão vinculados às contas de autenticação do Firebase, mas são criados por meio do aplicativo, não vinculados a nada como o Google Play ou uma conta do Facebook ou algo assim. Eu acho que eles ficarão bem em excluir nomes obviamente ofensivos, mas não terão grandes recursos dedicados à moderação manual.

Quando eu era jovem, 100% das minhas tabelas de pontuação alta nos gabinetes de fliperama locais consistiam em um monte de palavrões e termos ofensivos (ou variações de tais palavras).

Não consigo imaginar que a internet tenha melhorado as coisas.

Como posso limpar nomes de usuários para torná-los seguros para exibição?

NeilD
fonte
10
O cliente deseja limpar os nomes de usuário? Caso contrário, não é realmente seu problema agora.
MonkeyZeus
5
Primeiras reflexões: - Alerte o cliente sobre esse perigo, pergunte se ele deseja gastar dinheiro com seu tempo para lidar com isso. - Peça ao cliente para fornecer uma lista de termos não permitidos para remover. - Honestamente, este é um campo minado. Pergunte se eles querem que seja público.
AJFaraday
4
Veja também: o problema de Scunthorp .
Draco18s
4
Não é exatamente a mesma coisa, mas é bastante semelhante: Filtros de obscenidade: má ideia ou má ideia incrivelmente intercambiável?
Gary
3
O emoticon é permitido? Como o placar será exibido? Posso desenhar ascii dong depois de encontrar uma maneira de inserir a pontuação no seu placar? Posso inserir o URL como nome ("XYZ.com", "XYZ_Com", "XYZ_Dot_Com")?
xdtTransform

Respostas:

73

Eu recomendo que você deixe o cliente fazer isso manualmente.

De uma perspectiva de custo, desta vez você tem sorte:

  • Você espera não mais que 100 usuários / dia, possivelmente tão baixo quanto 10 / dia
  • Você possui um sistema de autenticação, o que significa que as proibições podem ser permanentes
  • Você tem um cliente que pode excluir nomes (com pouca frequência)

A realidade é que os 10 minutos que alguém levará para examinar as principais tabelas de classificação e banir nomes extremos - serão simplesmente mais baratos e mais confiáveis ​​do que você gastando tempo com uma solução de engenharia (que terá problemas).

Com um número de reprodução tão baixo, é improvável que isso precise ser feito com frequência - mesmo uma vez por semana durante o pico é suficiente.


Mas tenho muito tempo, posso fazer algo certo?

Errado.

Você pode facilmente fazer algo errado, que é mais prejudicial para a marca do cliente do que não fazer nada.

Deseja usar o Regex para pegar todos os nomes ruins? Espero que você acerte perfeitamente e também filtre todos os falsos positivos de vários bancos de dados de nomes internacionais de pessoas reais:

https://en.wikipedia.org/wiki/Scunthorpe_problem

E mesmo que você gerencie o que foi mencionado acima com sucesso, os jogadores não são burros - eles encontrarão uma maneira fácil de contornar o sistema para criar um nome igualmente ofensivo que você não está entendendo.

No mínimo, você acabou de adicionar ainda mais trabalho para manter essas regras atualizadas, em comparação com o pequeno trabalho manual de apenas observar as pontuações e proibições mais altas.


Não, mas falando sério, este é um jogo infantil - o cliente deixou claro que não pode haver tolerância para nomes ofensivos. Tem que haver alguma coisa!

Se esse for o caso, honestamente, e você não pode tolerar nomes ofensivos. A única solução realista é não deixar seus jogadores criarem seus próprios nomes.

Esta é a solução que você encontrará em quase todos os sites de jogos infantis, como o Cartoon Network.

Em vez de fornecer uma entrada em branco, você oferece uma seleção de "partes de nome" pré-fabricadas. Por exemplo:

  • Um adjetivo, como "Incrível", "Fantástico", "Astucioso"

  • Um meio, como "Barbudo", "Olho de Laser", "Pirata"

  • Um substantivo, como "Mestre", "Vencedor", "Detector"

O que restringe os nomes de exibição a coisas como "Awesome Pirate Master".

Também faça uma rápida consideração de quais listas de palavras você está usando. Não faz sentido implementar esse sistema se o usuário for capaz de mexer em nomes para obter coisas que ainda soam ofensivas ou sujas.

Claro, também existe a possibilidade de duplicatas - mas você pode escrever isso (3 listas de 100 palavras, já fornece 1 milhão de nomes possíveis) devido ao número de jogadores que possui ou se necessário - você ainda pode verificar se ninguém mais tem o nome no registro.

Realisticamente, essa pode ser a solução mais eficaz se você estiver seriamente preocupado com os maus nomes. Mas você precisa fazer uma análise de custos e descobrir se vale a pena fazer esse sistema, mesmo se comparado a verificações manuais simples.

Bilkokuya
fonte
25
Gosto desta resposta, porque "não automatize algo até que você saiba mais sobre o problema" quase sempre foi a coisa certa a fazer na minha experiência.
NeilD
5
Me lembra o universo Lego e a detecção de pênis.
02 de
7
Uma criança de 4 anos teve acesso a um dos meus jogos de console onde você pode criar personagens. Esse slot de salvamento estava cheio de cocô, vagabundo, xixi, etc, etc. As crianças fazem isso e riem muito ...
Nelson
4
"Mas não, sério, este é um jogo infantil." Você já ouviu falar sobre o Lego Universe? Nem mesmo a Lego conseguiu construir um detector de pênis . Nome de partes: "Astuto linguista pirata".
Draco18s
7

Uma pequena base de usuários provavelmente não é suficiente para diminuir a facilidade de implementar uma lista negra. Existem muitas bibliotecas e / ou listas de palavras, como as mencionadas aqui, que podem permitir que você verifique os nomes de usuários com o que considerar inapropriado.

Se você decidiu tentar sua própria lista, provavelmente deseja usar regexpara filtrar nomes.

Como Bilkokuya aponta, pode haver problemas com nomes legítimos na lista negra. Essa é uma decisão comercial para seu cliente , mas que você pode / deve conscientizá-lo. Não conheço nenhuma maneira de contornar o aspecto cultural, exceto que, se você espera um grande número de usuários de culturas onde isso pode ser um problema, convém implementar a filtragem específica da região.

Razões para implementar alguma forma de filtragem (além das verificações manuais):

  • Facilidade de implementação. Provavelmente não vai demorar mais de uma hora para conseguir algo .

  • Um impedimento para os brincalhões menos dedicados.

  • Permite checar no momento da inscrição, diminuindo a chance de eles chegarem à tabela de recordes.

  • Funciona com verificações manuais.

  • Considerando que é um problema antigo, deve haver muitos recursos disponíveis.

Marte
fonte