如何在 GraphQL 中使用 Python better_profanity 过滤器 API

随着网络上的社交互动不断增长,特别是随着生成式人工智能在全球范围内得到应用,构建具有检测和过滤脏话能力的社交应用程序的需求也日益增加。

构建能够检测和过滤亵渎内容的应用程序可能是实现更安全的在线社交交流和互动的解决方案之一。

在本教程中,我们将通过代码片段说明如何使用 Python better_profanity API 和 GraphQL 构建亵渎过滤器。

什么是粗言秽语

脏话是指在对话中使用脏话、粗鲁和冒犯性的词语。脏话可用于表达对某人或某事的强烈敌意或不满。

脏话过滤器是一款可检测并过滤在线交流渠道中被视为脏话的词语的应用程序。

检测和过滤脏话的原因

  • 使网络空间成为安全的社交互动空间。
  • 自动检测并过滤不需要的内容。
  • 检测和过滤亵渎内容可提高用户体验。
  • 它构建了健康的社会空间。
  • 使用 better_profanity 检测脏话

    Better-profanity 是一个速度超快的 Python 库,用于检测和清除脏话。它支持自定义单词列表、安全列表、检测修饰词拼写中的脏话、Unicode 字符(也称为 leetspeak),甚至支持多语言脏话检测。

    首先您需要满足以下先决条件:

  • 您的机器上安装了 Python
  • Python 基础知识
  • GraphQL 基础知识
  • 安装 better_profanity 库

    要为我们的项目安装 better_profanity 库,请在终端中运行以下命令:

    pip install better_profanity

    在您的 Python 项目中,创建一个文件并添加以下代码片段:

    from better_profanity import profanity
    
    profanity.load_censor_words()
    
    
    def test_profanity(paragraph):
        print(profanity.censor(paragraph))

    如果将一个攻击性词语作为参数传递给函数,如下所示:

    test_profanity("Don't be fuck")

    您将获得以下结果:

    Don't be ****

    Python 有一个函数可以判断字符串是否包含脏话:

    profanity.contains_profanity() # True | # False

    Python 有一个函数,可以用自定义字符审查脏话:

    profanity.censor(word, '-')

    第二个参数将用于审查在第一个参数(单词)中发现的任何脏话。

    为我们的脏话过滤器构建 GraphQL API

    现在我们已经让脏话过滤器正常工作了,让我们为过滤器构建一个 GraphQL API 并对其进行测试。

    安装 Flask 和 GraphQL

    要在我们的应用程序中安装 Flask 和 GraphQL 库,请在您的终端上运行以下命令:

    pip install Flask Flask_GraphQL graphene

    接下来,我们将编写 API GraphQl 模式。为此,创建一个文件并添加以下代码:

    import graphene
    from better_profanity import profanity
    
    
    class Outcome(graphene.ObjectType):
        paragraph = graphene.String()
        is_profane = graphene.Boolean()
        censored_paragraph = graphene.String()
    
    
    class Query(graphene.ObjectType):
        detect_profanity = graphene.Field(Outcome, paragraph=graphene.String(
            required=True), character=graphene.String(default_value="*"))
    
        def resolve_detect_profanity(self, info, paragraph, character):
            is_profane = profanity.contains_profanity(paragraph)
            censored_paragraph = profanity.censor(paragraph, character)
            return Outcome(
                paragraph=paragraph,
                is_profane=is_profane,
                censored_paragraph=censored_paragraph
            )
    
    
    profanity.load_censor_words()
    schema = graphene.Schema(query=Query)

    接下来,让我们将脏话过滤器配置到具有可访问 URL 的服务器。为此,创建一个 Python 文件,并向其中添加以下代码:

    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)

    要运行我们的应用程序,请在终端中运行以下命令:

    python app.py

    如果您所有操作都正确,服务器应该开始运行,并且您的终端应该像下面附图中所示的终端:

    Server_running

    现在,您可以通过访问终端上显示的 URL(http://127.0.0.1:5000/)来测试您的 API。

    通过该 URL,您将看到 GraphiQL 界面,如下图所示:

    GraphiQL interface

    要测试 API,请在提供的 GraphQL 接口中执行以下查询:

    {
      detectProfanity(paragraph: "Don't be an asshole", character: "%"){
        paragraph
        isProfane
        censoredParagraph
      }
    }

    您将收到以下回复:

    {
      "data": {
        "detectProfanity": {
          "paragraph": "Don't be an asshole",
          "isProfane": true,
          "censoredParagraph": "Don't be an %%%%"
        }
      }
    }
    Executed Query

    结论

    为所有用户构建安全的社交网络是构建社交应用程序时需要考虑的重要因素。在本教程中,我们介绍了脏话的概念以及如何在应用程序中检测和过滤脏话。我们使用 Python 框架 Flask 和 GraphQL 来说明如何构建脏话过滤器 API。