本文介绍了如何使用PHP SDK管理自定义文本库,以满足文本反垃圾检测场景的个性化需求。
功能描述
根据文本类型的不同,文本库分为关键词文本库和相似文本库;根据管控目的不同,文本库分为白名单、黑名单、疑似名单。关于参数的详细信息,请参见自定义文本库API文档。
您需要使用内容安全的API接入地址,调用本SDK接口。关于API接入地址的信息,请参见接入地址(Endpoint)。
前提条件
查询文本库列表
查询关键词文本库列表
<?php use AlibabaCloud\Client\AlibabaCloud; use AlibabaCloud\Client\Exception\ClientException; use AlibabaCloud\Client\Exception\ServerException; use AlibabaCloud\Green\Green; try { /** * 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret') ->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置 ->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置 ->regionId('cn-shanghai') ->asDefaultClient(); $response = Green::v20170823()->describeKeywordLib() ->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效 ->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,request超时设置,仅对当前请求有效 ->withServiceModule('open_api') ->request(); print_r($response); $allLibs = $response->KeywordLibList; $textAntispamKeywordLibs = array(); foreach ($allLibs as $keywordLib) { $libType = $keywordLib->LibType; $resourceType = $keywordLib->ResourceType; $source = $keywordLib->Source; # 查询自定义的关键词文本库。 if ("textKeyword" == $libType and "TEXT" == $resourceType and "MANUAL" == $source) { array_push($textAntispamKeywordLibs, $keywordLib); } # 查询回流的关键词文本库。 if ("textKeyword" == $libType and "TEXT" == $resourceType and "FEEDBACK" == $source) { array_push($textAntispamKeywordLibs, $keywordLib); } } print_r($textAntispamKeywordLibs); } catch (ClientException $exception) { echo $exception->getMessage() . PHP_EOL; } catch (ServerException $exception) { echo $exception->getMessage() . PHP_EOL; echo $exception->getErrorCode() . PHP_EOL; echo $exception->getRequestId() . PHP_EOL; echo $exception->getErrorMessage() . PHP_EOL; }
查询相似文本库列表(包含自定义和系统回流的相似文本库)
<?php use AlibabaCloud\Client\AlibabaCloud; use AlibabaCloud\Client\Exception\ClientException; use AlibabaCloud\Client\Exception\ServerException; use AlibabaCloud\Green\Green; try { /** * 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret') ->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置 ->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置 ->regionId('cn-shanghai') ->asDefaultClient(); $response = Green::v20170823()->describeKeywordLib() ->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效 ->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,request超时设置,仅对当前请求有效 ->withServiceModule('open_api') ->request(); print_r($response->toArray()); $allLibs = $response->KeywordLibList; $similarTextLibs = array(); foreach ($allLibs as $keywordLib) { $libType = $keywordLib->LibType; $resourceType = $keywordLib->ResourceType; $source = $keywordLib->Source; # 获取文本反垃圾自定义的关键词文本库。 if ('similarText' == $libType and 'TEXT' == $resourceType and 'MANUAL' == $source) { array_push($similarTextLibs, $keywordLib); } # 获取文本反垃圾回流的关键词文本库。 if ('similarText' == $libType and 'TEXT' == $resourceType and 'FEEDBACK' == $source) { array_push($similarTextLibs, $keywordLib); } } print_r($similarTextLibs); } catch (ClientException $exception) { echo $exception->getMessage() . PHP_EOL; } catch (ServerException $exception) { echo $exception->getMessage() . PHP_EOL; echo $exception->getErrorCode() . PHP_EOL; echo $exception->getRequestId() . PHP_EOL; echo $exception->getErrorMessage() . PHP_EOL; }
创建文本库
创建关键词文本库
<?php use AlibabaCloud\Client\AlibabaCloud; use AlibabaCloud\Client\Exception\ClientException; use AlibabaCloud\Client\Exception\ServerException; use AlibabaCloud\Green\Green; try { /** * 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret') ->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置 ->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置 ->regionId('cn-shanghai') ->asDefaultClient(); $response = Green::v20170823()->createKeywordLib() ->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效 ->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,request超时设置,仅对当前请求有效 ->withServiceModule('open_api') ->withName('自定义的关键词文本库') ->withResourceType('TEXT') ->withLibType('textKeyword') ->withCategory('BLACK') ->request(); print_r($response->toArray()); } catch (ClientException $exception) { echo $exception->getMessage() . PHP_EOL; } catch (ServerException $exception) { echo $exception->getMessage() . PHP_EOL; echo $exception->getErrorCode() . PHP_EOL; echo $exception->getRequestId() . PHP_EOL; echo $exception->getErrorMessage() . PHP_EOL; }
创建相似文本库
<?php use AlibabaCloud\Client\AlibabaCloud; use AlibabaCloud\Client\Exception\ClientException; use AlibabaCloud\Client\Exception\ServerException; use AlibabaCloud\Green\Green; try { /** * 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。 * 常见获取环境变量方式: * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret') ->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置 ->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置 ->regionId('cn-shanghai') ->asDefaultClient(); $response = Green::v20170823()->createKeywordLib() ->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效 ->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,request超时设置,仅对当前请求有效 ->withServiceModule('open_api') ->withName('测试相似文本库') ->withResourceType('TEXT') ->withLibType('similarText') ->withCategory('BLACK') ->request(); print_r($response->toArray()); } catch (ClientException $exception) { echo $exception->getMessage() . PHP_EOL; } catch (ServerException $exception) { echo $exception->getMessage() . PHP_EOL; echo $exception->getErrorCode() . PHP_EOL; echo $exception->getRequestId() . PHP_EOL; echo $exception->getErrorMessage() . PHP_EOL; }
修改文本库
更新文本库库名以及修改文本库所适用的业务场景(BizType)。
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Green\Green;
try {
/**
* 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
* 常见获取环境变量方式:
* 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret')
->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置
->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置
->regionId('cn-shanghai')
->asDefaultClient();
$response = Green::v20170823()->updateKeywordLib()
->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效
->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,request超时设置,仅对当前请求有效
->withId('文本库ID')
->withName('文本库修改名称')
->request();
print_r($response->toArray());
} catch (ClientException $exception) {
echo $exception->getMessage() . PHP_EOL;
} catch (ServerException $exception) {
echo $exception->getMessage() . PHP_EOL;
echo $exception->getErrorCode() . PHP_EOL;
echo $exception->getRequestId() . PHP_EOL;
echo $exception->getErrorMessage() . PHP_EOL;
}
删除文本库
重要
删除文本库也将删除文本库下的文本。系统回流的文本库不允许删除。
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Green\Green;
try {
/**
* 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
* 常见获取环境变量方式:
* 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret')
->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置
->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置
->regionId('cn-shanghai')
->asDefaultClient();
$response = Green::v20170823()->deleteKeywordLib()
->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效
->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,request超时设置,仅对当前请求有效
->withId('文本库ID')
->request();
print_r($response->toArray());
} catch (ClientException $exception) {
echo $exception->getMessage() . PHP_EOL;
} catch (ServerException $exception) {
echo $exception->getMessage() . PHP_EOL;
echo $exception->getErrorCode() . PHP_EOL;
echo $exception->getRequestId() . PHP_EOL;
echo $exception->getErrorMessage() . PHP_EOL;
}
查找文本
默认分页查询所有文本。如果设置了Keyword字段,将模糊查找包含该字段值的文本。
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Green\Green;
try {
/**
* 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
* 常见获取环境变量方式:
* 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret')
->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置
->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置
->regionId('cn-shanghai')
->asDefaultClient();
$response = Green::v20170823()->describeKeyword()
->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效
->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,request超时设置,仅对当前请求有效
->withKeywordLibId('文本库ID')
->request();
print_r($response->toArray());
} catch (ClientException $exception) {
echo $exception->getMessage() . PHP_EOL;
} catch (ServerException $exception) {
echo $exception->getMessage() . PHP_EOL;
echo $exception->getErrorCode() . PHP_EOL;
echo $exception->getRequestId() . PHP_EOL;
echo $exception->getErrorMessage() . PHP_EOL;
}
添加文本
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Green\Green;
try {
/**
* 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
* 常见获取环境变量方式:
* 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret')
->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置
->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置
->regionId('cn-shanghai')
->asDefaultClient();
$response = Green::v20170823()->createKeyword()
->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效
->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,request超时设置,仅对当前请求有效
->withKeywordLibId(0)
->withKeywords('[\'文本ID_1\',\'文本ID_2\']')// 单条文本长度20~10000个字符,一个文本库最多10000条文本。单次添加最多支持加10条文本。
->request();
print_r($response->toArray());
} catch (ClientException $exception) {
echo $exception->getMessage() . PHP_EOL;
} catch (ServerException $exception) {
echo $exception->getMessage() . PHP_EOL;
echo $exception->getErrorCode() . PHP_EOL;
echo $exception->getRequestId() . PHP_EOL;
echo $exception->getErrorMessage() . PHP_EOL;
}
删除文本
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Green\Green;
try {
/**
* 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
* 常见获取环境变量方式:
* 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
* 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret')
->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置
->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置
->regionId('cn-shanghai')
->asDefaultClient();
$response = Green::v20170823()->deleteKeyword()
->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效
->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,request超时设置,仅对当前请求有效
->withKeywordLibId('文本库ID')
->withIds('[\'文本ID_1\',\'文本ID_2\']')
->request();
print_r($response->toArray());
} catch (ClientException $exception) {
echo $exception->getMessage() . PHP_EOL;
} catch (ServerException $exception) {
echo $exception->getMessage() . PHP_EOL;
echo $exception->getErrorCode() . PHP_EOL;
echo $exception->getRequestId() . PHP_EOL;
echo $exception->getErrorMessage() . PHP_EOL;
}
文档内容是否对您有帮助?