本文介绍了如何使用Java SDK管理自定义文本库,以满足文本反垃圾检测场景的个性化需求。
功能描述
根据文本类型的不同,文本库分为关键词文本库和相似文本库;根据管控目的不同,文本库分为白名单、黑名单、疑似名单。关于参数的详细信息,请参见自定义文本库API文档。
您需要使用内容安全的API接入地址,调用本SDK接口。关于API接入地址的信息,请参见接入地址(Endpoint)。
前提条件
安装Java依赖。关于安装Java依赖的具体操作,请参见安装Java依赖。
说明请一定按照安装Java依赖页面中的版本安装,否则会导致调用失败。
如果使用本地文件或者二进制文件检测,请下载并在项目工程中引入Extension.Uploader工具类。
获取文本库列表
获取关键词文本库列表
DescribeKeywordLibRequest describeKeywordLibRequest = new DescribeKeywordLibRequest(); describeKeywordLibRequest.setServiceModule("open_api"); try { // 将返回所有文本库,包括文本反垃圾的关键词文本库、文本反垃圾的相似文本库、图片广告的关键词文本库、语音反垃圾的关键词文本库。 DescribeKeywordLibResponse describeKeywordLibResponse = client.getAcsResponse(describeKeywordLibRequest); System.out.println(JSON.toJSONString(describeKeywordLibResponse)); // 过滤出文本反垃圾场景配置的文本库。 List<DescribeKeywordLibResponse.KeywordLib> allLibs = describeKeywordLibResponse.getKeywordLibList(); List<DescribeKeywordLibResponse.KeywordLib> textAntispamKeywordLibs = new ArrayList<DescribeKeywordLibResponse.KeywordLib>(); for (DescribeKeywordLibResponse.KeywordLib keywordLib : allLibs) { String LibType = keywordLib.getLibType(); String resourceType = keywordLib.getResourceType(); String source = keywordLib.getSource(); // 获取文本反垃圾自定义的关键词文本库。 if ("textKeyword".equals(LibType) && "TEXT".equals(resourceType) && "MANUAL".equals(source)) { textAntispamKeywordLibs.add(keywordLib); } // 获取文本反垃圾回流的关键词文本库。 if ("textKeyword".equals(LibType) && "TEXT".equals(resourceType) && "FEEDBACK".equals(source)) { textAntispamKeywordLibs.add(keywordLib); } } System.out.println(JSON.toJSONString(textAntispamKeywordLibs)); } catch (ClientException e) { e.printStackTrace(); }
获取相似文本库列表(包含自定义和系统回流的相似文本库)
DescribeKeywordLibRequest describeKeywordLibRequest = new DescribeKeywordLibRequest(); describeKeywordLibRequest.setServiceModule("open_api"); try { // 将返回所有文本库,包括文本反垃圾的关键词文本库、文本反垃圾的相似文本库、图片广告的关键词文本库、语音反垃圾的关键词文本库。 DescribeKeywordLibResponse describeKeywordLibResponse = client.getAcsResponse(describeKeywordLibRequest); System.out.println(JSON.toJSONString(describeKeywordLibResponse)); // 过滤出相似文本库。 List<DescribeKeywordLibResponse.KeywordLib> allLibs = describeKeywordLibResponse.getKeywordLibList(); List<DescribeKeywordLibResponse.KeywordLib> similarTextLibs = new ArrayList<DescribeKeywordLibResponse.KeywordLib>(); for (DescribeKeywordLibResponse.KeywordLib keywordLib : allLibs) { String LibType = keywordLib.getLibType(); String resourceType = keywordLib.getResourceType(); String source = keywordLib.getSource(); // 获取文本反垃圾自定义的相似文本库。 if("similarText".equals(LibType) && "TEXT".equals(resourceType) && "MANUAL".equals(source)) { similarTextLibs.add(keywordLib); } // 获取文本反垃圾回流的相似文本库。 if("similarText".equals(LibType) && "TEXT".equals(resourceType) && "FEEDBACK".equals(source)) { similarTextLibs.add(keywordLib); } } System.out.println(JSON.toJSONString(similarTextLibs)); } catch (ClientException e) { e.printStackTrace(); }
创建文本库
创建关键词文本库
CreateKeywordLibRequest createKeywordLibRequest = new CreateKeywordLibRequest(); createKeywordLibRequest.setServiceModule("open_api"); createKeywordLibRequest.setName("测试关键词文本库"); // 设置为文本反垃圾场景使用。 createKeywordLibRequest.setResourceType("TEXT"); // 设置类型为关键词。 createKeywordLibRequest.setLibType("textKeyword"); // 设置创建黑名单库。 createKeywordLibRequest.setCategory("BLACK"); try { CreateKeywordLibResponse describeKeywordLibResponse = client.getAcsResponse(createKeywordLibRequest); // 关键词文本库ID。无异常则表示创建成功。 String libId = describeKeywordLibResponse.getId(); } catch (ClientException e) { e.printStackTrace(); }
创建相似文本库
CreateKeywordLibRequest createKeywordLibRequest = new CreateKeywordLibRequest(); createKeywordLibRequest.setServiceModule("open_api"); createKeywordLibRequest.setName("测试相似文本库"); // 设置为文本反垃圾场景使用。 createKeywordLibRequest.setResourceType("TEXT"); // 设置类型为相似文本。 createKeywordLibRequest.setLibType("similarText"); // 相似文本库支持创建黑名单库、白名单、疑似名单。 createKeywordLibRequest.setCategory("BLACK"); try { CreateKeywordLibResponse describeKeywordLibResponse = client.getAcsResponse(createKeywordLibRequest); // 相似文本库ID。无异常则表示创建成功。 String libId = describeKeywordLibResponse.getId(); } catch (ClientException e) { e.printStackTrace(); }
修改文本库
更新文本库库名以及修改文本库所使用的检测场景。
UpdateKeywordLibRequest updateKeywordLibRequest = new UpdateKeywordLibRequest();
// 设置待操作的文本库ID。
updateKeywordLibRequest.setId(0);
// 设置新的文本库名称。
updateKeywordLibRequest.setName("修改后的名称");
// 设置新的BizType。
updateKeywordLibRequest.setBizTypes(JSON.toJSONString(Arrays.asList("新的BizType_1", "新的BizType_2")));
try {
UpdateKeywordLibResponse updateKeywordLibResponse = client.getAcsResponse(updateKeywordLibRequest);
// 请求ID。无异常则表示修改成功。
String requestId = updateKeywordLibResponse.getRequestId();
} catch (ClientException e) {
e.printStackTrace();
}
删除文本库
重要
删除文本库也将删除文本库下的文本。系统回流的文本库不允许删除。
DeleteKeywordLibRequest deleteKeywordLibRequest = new DeleteKeywordLibRequest();
// 设置待删除的文本库ID。
deleteKeywordLibRequest.setId(3353);
try {
DeleteKeywordLibResponse deleteKeywordLibResponse = client.getAcsResponse(deleteKeywordLibRequest);
// 请求ID。无异常则表示删除成功。
String requestId = deleteKeywordLibResponse.getRequestId();
} catch (ClientException e) {
e.printStackTrace();
}
查找文本
默认分页获取所有文本。如果设置了Keyword字段,将模糊查找包含该字段值的文本。
DescribeKeywordRequest describeKeywordRequest = new DescribeKeywordRequest();
// 设置待查询的文本库ID。
describeKeywordRequest.setKeywordLibId(0);
describeKeywordRequest.setPageSize(10);
describeKeywordRequest.setCurrentPage(1);
// 可选,用于模糊查。
describeKeywordRequest.setKeyword("查询文本");
try {
DescribeKeywordResponse describeKeywordResponse = client.getAcsResponse(describeKeywordRequest);
// 总数。
Integer totalCount = describeKeywordResponse.getTotalCount();
// 当前页。
Integer currentPage = describeKeywordResponse.getCurrentPage();
// 分页大小。
Integer pageSize = describeKeywordResponse.getPageSize();
for (DescribeKeywordResponse.Keyword keywordItem : describeKeywordResponse.getKeywordList()) {
// 关键词主键ID。
Integer id = keywordItem.getId();
// 创建时间。
String createTime = keywordItem.getCreateTime();
// 关键词的匹配命中次数。
Integer hitCount = keywordItem.getHitCount();
// 关键词。
String keyword = keywordItem.getKeyword();
}
} catch (ClientException e) {
e.printStackTrace();
}
添加文本
CreateKeywordRequest createKeywordRequest = new CreateKeywordRequest();
// 设置待操作的文本库ID。
createKeywordRequest.setKeywordLibId(0L);
// 待添加的文本。
createKeywordRequest.setKeywords(JSON.toJSONString(Arrays.asList("关键词_1", "关键词_2")));
try {
CreateKeywordResponse createKeywordResponse = client.getAcsResponse(createKeywordRequest);
// 已成功添加的关键词数量。
Integer successCount = createKeywordResponse.getSuccessCount();
// 无效的关键词列表,即未添加成功的关键词。
List<String> invalidKeywordList = createKeywordResponse.getInvalidKeywordList();
} catch (ClientException e) {
e.printStackTrace();
}
删除文本
DeleteKeywordRequest deleteKeywordRequest = new DeleteKeywordRequest();
// 设置待操作的文本库ID。
deleteKeywordRequest.setKeywordLibId(String.valueOf("文本库ID"));
// 待删除的文本。
deleteKeywordRequest.setIds(JSON.toJSONString(Arrays.asList(1, 2)));
try {
DeleteKeywordResponse deleteKeywordResponse = client.getAcsResponse(deleteKeywordRequest);
// 请求ID。无异常则表示删除成功。
String requestId = deleteKeywordResponse.getRequestId();
} catch (ClientException e) {
e.printStackTrace();
}