Nota do editor: os exemplos de profanação neste artigo são representados pela palavra “profanação” para permanecer inclusiva e apropriada para todos os públicos.
Detectar e filtrar palavrões é uma tarefa que você enfrentará ao construir aplicativos nos quais os usuários postam (ou interagem com) texto. Podem ser aplicativos de mídia social, seções de comentários ou salas de bate-papo de jogos, apenas para citar alguns.
Ter a capacidade de detectar palavrões para filtrá-los é a solução para manter os espaços de comunicação seguros e antiquados-apropriado, se seu aplicativo exigir.
Este tutorial irá guiá-lo na construção de uma API GraphQL para detectar e filtrar profanação com Python e Flask. Se você está interessado apenas no código, pode visitar este repositório GitHub para ver a demonstração código-fonte do aplicativo.
Pré-requisitos
Para seguir e entender este tutorial, você precisará do seguinte:
Python 3.7 ou posterior instalado em sua máquina Conhecimento básico do conhecimento básico do Flask of GraphQL Um editor de texto
O que é palavrão?
Palavrões (também conhecidos como palavrões ou palavrões) se referem ao uso ofensivo, indelicado ou rude de palavras e linguagem. Palavrões também ajudam a mostrar ou expressar um forte sentimento em relação a algo. Palavrões podem tornar os espaços online hostis aos usuários, o que é indesejável para um aplicativo desenvolvido para um público amplo.
Quais palavras se qualificam como palavrões fica a seu critério. Este tutorial explicará como filtrar palavras individualmente, para que você tenha controle sobre o tipo de idioma permitido em seu aplicativo.
O que é um filtro de profanação?
Um filtro de profanação é um software ou aplicativo que ajuda a detectar, filtrar ou modificar palavras consideradas profanas em espaços de comunicação.
Por que detectamos e filtramos palavrões?
Para promover interações saudáveis entre as pessoas, especialmente quando há crianças envolvidas Para melhore as experiências sociais criando um ambiente positivo para as pessoas se comunicarem Para adicionar uma camada extra de segurança às comunidades de usuários Para bloquear e filtrar automaticamente o conteúdo indesejado dos espaços de comunicação Para reduzir a necessidade de moderação manual do usuário em comunidades online
Problemas comuns enfrentados quando detecção de palavrões
Os usuários podem começar a usar subversões de linguagem para contornar os filtros. Os usuários podem começar a manipular a linguagem substituindo letras por números e caracteres Unicode ou escrevendo palavras de forma criativa para filtros de desvio Os filtros de profanação podem não considerar o contexto ao filtrar o conteúdo. Os filtros de profanação geralmente criam falsos positivos durante a filtragem, por exemplo, o Scunthorpe problema
Detectando palavrões com Python
Usando Python, vamos construir um aplicativo que nos diga se uma determinada string é profana ou não, em seguida, prossiga para filtrá-la.
Criando um detector de palavrões baseado em lista de palavras
Para criar nosso filtro de palavrões, criaremos uma lista de palavras não aceitas e, em seguida, verificaremos se uma determinada string contém alguma delas. Se palavrões forem detectados, substituiremos a palavra profana por um texto de censura.
Crie um arquivo chamado filter.py e salve o seguinte código nele:
def filter_profanity (frase): lista de palavras=[“profanidade1″,”profanidade2″,”profanidade3″,”profanidade4″,”profanidade5″,”profanidade6″,”profanidade7″,”profanidade8″] frase=frase.lower () para palavra em frase.split (): se palavra na lista de palavras: frase=frase.replace (palavra,”****”) frase de retorno
Testando nosso filtro baseado em lista de palavras
Se você passasse os seguintes argumentos para a função acima:
filter_profanity (“insulto profano”) filter_profanity (“esta é uma palavra profana”) filter_profanity (“Não use linguagem profana”)
Você obteria os seguintes resultados:
** ***** ****** esta é uma palavra ******* Não use linguagem *******
No entanto, esta abordagem tem muitos problemas que vão desde a impossibilidade de detectar palavrões fora de sua lista de palavras para ser facilmente enganado por erros de ortografia ou ai rd paddings. Também exige que mantenhamos regularmente nossa lista de palavras, o que adiciona muitos problemas aos que já temos. Como podemos melhorar o que temos?
Usando a biblioteca Python de melhor profanidade para melhorar nosso filtro
Better-profanity é uma biblioteca Python incrivelmente rápida para verificar (e limpar) palavrões em strings. Ele oferece suporte a listas de palavras personalizadas, listas seguras, detecção de palavrões em grafias de palavras modificadas e caracteres Unicode (também chamados de leetspeak) e até mesmo detecção de profanação multilíngue.
Instalando a biblioteca de profanação melhor
Para começar com profanidade melhor, você deve primeiro instalar a biblioteca via pip.
No terminal, digite:
pip install profanidade melhor
Integrando profanação melhor em nosso filter
Agora, atualize o arquivo filter.py com o seguinte código:
from better_profanity import profanity profanity.load_censor_words () def filter_profanity (frase): return profanity.censor (frase)
Testando o melhor filtro baseado em profanação
Se você passasse os seguintes argumentos mais uma vez para a função acima:
filter_profanity (“palavra profana”) filter_profanity (“você é uma palavra profana”) filter_profanity (“Não seja profano”)
Você obteria os seguintes resultados, como esperado:
******* **** você é um ******* * *** Não seja merda ***
Como mencionei anteriormente, a melhor profanidade suporta a detecção de profanação de ortografia de palavras modificadas, portanto, os exemplos a seguir serão censurados com precisão:
filter_profanity (“pr0f4ne 1n5ult”) # ******* ****** filter_profanity (“você é Pr0F4N3”) # você é *******
Better-profanity também tem funcionalidades para dizer se uma string é profana. Para fazer isso, use:
profanity.contains_profanity (“Pr0f4ni7y”) # True profanity.contains_profanity (“hello world”) # False
Melhor-profanidade também nos permite fornecer um caractere para censurar palavrões. Para fazer isso, use:
profanity.censor (“profanity”,”@”) # @@@@ profanity.censor (“você cheira a profanação”,”&”) # você cheira a &&&&
Construindo uma API GraphQL para nosso filtro
Criamos um script Python para detectar e filtrar palavrões, mas é bastante inútil no mundo real, pois nenhuma outra plataforma pode usar nosso serviço. Precisaremos construir uma API GraphQL com Flask para nosso filtro de profanação, para que possamos chamá-lo de aplicativo real e usá-lo em outro lugar que não seja um ambiente Python.
Instalando os requisitos do aplicativo
Para começar, você deve primeiro instalar algumas bibliotecas via pip.
No terminal, digite:
pip install Flask Flask_GraphQL graphene
Escrevendo os esquemas GraphQL do aplicativo
A seguir, vamos escrever nosso GraphQL esquemas para a API. Crie um arquivo chamado schema.py e salve nele o seguinte código:
import grafeno de better_profanity import profanity class Result (graphene.ObjectType): frase=graphene.String () is_profane=graphene.Boolean () censored_sentence=graphene.String () class Query (graphene.ObjectType): detect_profanity=graphene.Field (Result, frase=graphene.String (obrigatório=True), character=graphene.String (default_value=”*”)) def resolve_detect_profanity (self, info , frase, personagem): is_profane=profanidade.contains_profanity (frase) censored_sentence=profanity.censor (frase, personagem) return Result (frase=frase, is_profane=is_profane, censored_sentence=censored_sentence) profanity.load_censor_words () schema=graphene.Schema ( query=Query)
Configurando nosso servidor de aplicação para GraphQL
Depois disso, crie outro arquivo chamado server.py e salve o seguinte código em it:
from flask import Flask from flask_graphql import GraphQLView from schema import schema app=Flask (__ name__) app.add_url_rule (“/”, view_func=GraphQLView.as_view (“graphql”, schema=schema, graphiql=True) ) if __name__==”__main__”: app.run (debug=True)
Executando o servidor GraphQL
Para executar o servidor, execute o script server.py.
No terminal, digite:
python server.py
Seu terminal deve se parecer com o seguinte:
Testando a API GraphQL
Depois de executar o arquivo server.py no terminal, vá para o seu navegador e abra o URL http://127.0.0.1:5000 . Você deve ter acesso à interface GraphiQL e obter uma resposta semelhante à imagem abaixo:
Podemos prosseguir para testar a API executando uma consulta como a seguinte na interface GraphiQL:
{detectProfanity (frase:”profanidade!”) {frase isProfane censoredSentence}}
O resultado deve ser semelhante às imagens abaixo:
Conclusão
Este artigo nos ensinou sobre a detecção de palavrões, sua importância e implementação. Além disso, vimos como é fácil construir uma API de detecção de palavrões com Python, Flask e GraphQL.
O código-fonte da API GraphQL está disponível em GitHub . Você pode aprender mais sobre a melhor biblioteca Python profanadora em sua documentação oficial .