使用PHP来运行Amazon Comprehend

首先

我在个人开发的网页应用中,为实现基于机器学习的自然语言处理功能,将php连接到了亚马逊的Comprehend服务。由于遇到了一些困难,特此记录下具体的实现方法。

目标受众

    amazon comprehendを外部からweb apiのように使いたい人

结论

答案

现在可以使用PHP进行情感分析了。

<?php

require 'vendor/autoload.php';
use Aws\Comprehend\ComprehendClient;

$client = new ComprehendClient([
    'region' => 'ap-northeast-1',
    'version' => 'latest'
]);

$result = $client->detectSentiment([
    'LanguageCode' => 'ja', // REQUIRED
    'Text' => '私はとても楽しいです', // REQUIRED
]);

echo $result;

发挥能力

Model Data
----------
Data can be retrieved from the model object using the get() method of the
model (e.g., `$result->get($key)`) or "accessing the result like an
associative array (e.g. `$result['key']`). You can also execute JMESPath
expressions on the result data using the search() method.

{
    "Sentiment": "POSITIVE",
    "SentimentScore": {
        "Positive": 0.9998538494110107,
        "Negative": 3.527790249790996e-5,
        "Neutral": 8.529981278115883e-5,
        "Mixed": 2.560075699875597e-5
    },
    "@metadata": {
        "statusCode": 200,
        "effectiveUri": "https:\/\/comprehend.ap-northeast-1.amazonaws.com",
        "headers": {
            "x-amzn-requestid": "cc775bfc-0b24-42d5-babb-020975931ba2",
            "content-type": "application\/x-amz-json-1.1",
            "content-length": "165",
            "date": "Sat, 21 Oct 2023 09:50:58 GMT"
        },
        "transferStats": {
            "http": [
                []
            ]
        }
    }
}

操作步骤

1. 创建AWS账号

我们从链接中创建。顺便说一下,由于AWS官方提供的日语翻译有时很混乱,所以在这种情况下我认为用英语显示,并在谷歌翻译上翻译会更容易阅读一些。
然后,我们创建IAM用户。这是一个权限受限的用户,平时我们会使用这个用户。

2. IAM身份中心的设置

按照下面的步骤1到6进行操作。
IAM身份中心是AWS的认证功能,通过在此处设置的用户可以从外部访问,并获得使用AWS各种服务的权限。

3. 安装 AWS PHP SDK。

如果您正在使用composer,您可以使用以下命令进行安装。
composer require aws/aws-sdk-php
其他安装方法请参见此处的说明。

4. 认证信息的设置

需要通过php文件获取为使用2设置的用户访问所需的认证信息。由于访问密钥等认证信息泄漏会带来严重问题,因此不应将其直接写在文件中。相反,我们可以创建config文件或credentials文件,并将其写入其中。创建位置因环境而异,但在Linux中通常为~/.aws/config和~/.aws/credentials。

配置

[profile dev]
sso_session = my-sso
sso_account_id = {access_id}
sso_role_name = PowerUserAccess

[sso-session my-sso]
sso_region = {region}
sso_start_url = {start_url}
sso_registration_scopes = sso:account:access

证书,资格,资历

[default]
aws_access_key_id={access_key_id}
aws_secret_access_key={access_key}
aws認証情報確認方法.png

5. 確認操作

如果能够创建和执行一个名为example.php的文件,并且在结果输出正确的情况下,那么认证将成功。

结束

这次我使用了Amazon Comprehend进行自然语言处理,从一个PHP文件中进行操作。不过,Amazon Comprehend的使用次数过多会产生费用,所以在将其集成到公开的应用程序中时,请务必要注意。作为实现免费自然语言处理的方法,我也考虑了将Google Colaboratory用作API服务器,但是由于会定期中断会话,使用起来会非常麻烦,所以就放弃了。如果能添加定期启动会话的功能,应该是可行的。(虽然非常依赖技巧,但据说也有一种持续启动会话的方法)

参考文章

针对编程初学者的Qiita文章投稿模板