使用 Perspective API 改善对话

Avatar of Daniel James
Daniel James

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费积分!

我最近偶然发现了 一篇文章,作者是 Rory Cellan-Jones,文章介绍了来自 Jigsaw 的一项新技术,Jigsaw 是谷歌的一个开发团队,专注于通过技术使人们在网上更安全。当时,他们刚刚发布了他们称之为 Perspective API 的第一个 Alpha 版本。它是一个机器学习工具,旨在对一段文本(即评论)进行评分,并为您提供一个 *毒性分数*,该分数代表文本的毒性程度。

该系统通过观察数千次在线对话的审核方式来学习,然后通过评估新评论的“毒性”程度以及类似语言是否导致其他人离开对话来对新评论进行评分。它的作用是试图改善辩论质量,确保人们不会因为加入辩论而却步。

由于该项目仍处于起步阶段,它所能做的不止于此。不过,我们仍然可以使用它!

从 API 开始

要开始使用 API,您需要从他们的网站上 请求 API 访问权限。我设法在几天内获得了访问权限。如果您有兴趣自己尝试,请注意您可能需要等待一段时间,直到他们发邮件回复您。收到邮件告知您已获得访问权限后,您需要登录 Google 开发者控制台并获取您的 API 密钥。使用您想要的安全性级别创建您的凭据,然后您就可以开始了!

现在,您需要转到 GitHub 上的 文档,了解更多有关该项目的信息并了解它的实际工作原理。该文档包含大量有关当前可用的功能以及最终要实现的目标的信息。请记住:API 的主要目的是提供评论毒性程度的评分,因此要使用该信息做任何额外的事情都需要一些工作。

使用 cURL 获取分数

让我们使用 PHP 的 cURL 命令来发出请求并获取分数。如果您不熟悉 cURL,请不要惊慌;掌握它相对简单。如果您想在 WordPress 中尝试它,则更简单,因为您可以使用原生 WordPress 辅助函数。让我们从标准 PHP 方法开始。

在浏览此过程时,最好打开 PHP 文档 以供参考。为了理解 cURL 的基本原理,我们将介绍可能需要使用的几个核心选项。

$params = array(
  'comment' => array(
    'text' => 'what a stupid question...',
    'languages' => array(
      'en'
    ),
    'requestedAttributes' => array(
      'TOXICITY' => ''
    )
  )
);

$params = json_encode($params);

$req = curl_init();
curl_setpot($req, 'CURLOPT_URL', 'https://commentanalyzer.googleapis.com/v1alpha1/comments:analyze');
curl_setpot($req, 'CURLOPT_POSTFIELDS', $params);
curl_setopt($req, CURLOPT_HTTPHEADER, array('Content-Type: application/json');
curl_exec($req);
curl_close($req);

以上七行只是在您想要向服务器发出 cURL 请求时执行不同的操作。您需要初始化 cURL 请求,设置请求选项,执行请求,然后关闭连接。然后,您将以 JSON 数据的形式从服务器获取评论数据,这在很多方面都非常有用。

发送 Ajax 请求

由于您以 JSON 格式从 API 获取响应,因此您也可以向 API 发出 Ajax 请求。如果您不想深入研究 PHP 和使用 cURL 请求的方法,这很方便。以下是 Ajax 请求(使用 jQuery)的示例

$.ajax({

        data: {
                comment: {
                        text: "this is such a stupid idea!!"
                },
                languages: ["en"],
                requestedAttributes: {
                        TOXICITY: {}
                }
        },
        type: 'post',
        url: 'https://commentanalyzer.googleapis.com/v1alpha1/comments:analyze?key=YOUR-API-KEY',
        success: function(response) {

                console.log(response);

        }

});

我们获取回来的数据现在被记录到控制台中,以便我们进行调试。现在,我们可以将 JSON 数据解码为数组,并对其进行一些操作。请确保在 Ajax 请求的 URL 末尾包含您的 API 密钥,否则它将无法工作!如果没有它,您将收到有关身份验证无效的错误。此外,您不必止步于此。您还可以将上面的示例更进一步,并在获取数据后立即将分数记录到数据库中,或者以警报的形式向用户提供前端反馈。

WordPress 方法

如果您使用的是 WordPress(这与这里相关,因为 WordPress 有评论线程,您可能想要对其进行审核),并且您想要向 Perspective API 发出 cURL 请求,那么它就更简单了。以 Toxic Comments 插件 为例,您可以执行以下操作,这得益于 WordPress 丰富的内置函数。**如果您使用该插件,则无需执行以下任何操作**,但了解该插件在后台是如何实现我们想要的功能是值得的。

$request = wp_remote_post($arguments, $url);

这将为我们向外部资源发出一个 POST 请求,而无需做太多工作。您也可以使用其他函数,例如 `get` 请求,但现在我们不需要考虑这一点。然后,您需要使用另一个函数从服务器获取请求的数据。没错,**WordPress 有一个函数可以做到这一点**

$data = wp_remote_retrieve_body($request);

所以这很好,但我们如何实际使用 API 获取我们想要的数据呢?首先,如果您只想获得总体毒性分数,您需要使用以下 URL,它将要求 API 读取评论并对其进行评分。它还在末尾包含您的 API 密钥,您需要使用它来验证您的请求。请确保将其更改为您的密钥!

https://commentanalyzer.googleapis.com/v1alpha1/comments:analyze?key=YOUR-API-KEY

它看起来非常普通,如果您访问它,它会将您带到一个 404 页面。但如果您向它发出 cURL 请求,无论是通过您最喜欢的 CMS 还是通过简单的 PHP 脚本,您最终都会得到类似于此的数据

{
  "attributeScores": {
    "TOXICITY": {
      "summaryScore": {
        "value": 0.567890,
        "type": "PROBABILITY"
      }
    }
  },
  "languages": [
    "en"
  ]
}

您从 API 获取回来的分数将是一个十进制数。因此,如果评论的毒性分数为 50%,您实际从 API 获取回来的分数将是 `0.5`。然后,您可以使用此分数来操作评论的存储方式以及向最终用户展示的方式,例如将其标记为垃圾邮件或创建过滤器,让用户显示更少或更多毒性评论,就像 Google 在他们的示例中所做的那样。

还有一些其他有用的数据您可能也想了解。例如评论的上下文,它可以帮助您在不亲自阅读的情况下理解评论的意图。

最终,有了我们预计会收到的这种数据,就可以过滤掉具有特定意图的某些评论,并提供一个更友好的评论区域,避免喷子横行。随着 API 的不断发展,我们应该预计对我们发送给它的评论的分析会更加健壮,更加准确。

隐私和审查制度

这在当今是一个非常热门的话题。我可以想象有些人会对此表示反对,尤其是因为它涉及到**将您的数据发送给谷歌**,让谷歌的计算机对其进行分析和判断,这最终会对您的声音和使用它的能力产生影响。就我个人而言,我认为这种想法很棒,而且在实践中效果很好。但当您考虑它在热门新闻网站和社交媒体平台上的实施时,您可以看到隐私和审查制度可能是一个问题。

Perspective API 做出了巨大的努力,基于高度复杂的算法对评论进行评分,但似乎在维护更文明的在线社交空间的斗争中还有很长的路要走。

在此之前,请试用一下 API,让我知道您的想法!如果您不想从头开始编写代码,现在 Node 和 Python 中都有一些公共客户端库,所以试试吧!此外,请谨慎行事,因为 API 目前仍处于 Alpha 阶段,因此可能会出现问题。如果您感到懒惰,请查看 快速入门指南