本文介绍了如何使用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);
                System.out.println(JSON.toJSONString(describeKeywordLibResponse));
            } 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);
                System.out.println(JSON.toJSONString(describeKeywordLibResponse));
            } catch (ClientException e) {
                e.printStackTrace();
            }

修改文本库

更新文本库库名以及修改文本库所适用的bizType。

UpdateKeywordLibRequest updateKeywordLibRequest = new UpdateKeywordLibRequest();
        // 设置要操作的文本库ID。
        updateKeywordLibRequest.setId(2693);
        // 设置新的文本库名称。
        updateKeywordLibRequest.setName("测试修改名称");
        // 设置新的BizType。
        updateKeywordLibRequest.setBizTypes(JSON.toJSONString(Arrays.asList("comment", "title")));

        try {
            UpdateKeywordLibResponse updateKeywordLibResponse = client.getAcsResponse(updateKeywordLibRequest);
            System.out.println(JSON.toJSONString(updateKeywordLibResponse));
        } catch (ClientException e) {
            e.printStackTrace();
        }

删除文本库

注意 删除文本库也将删除文本库下的文本。系统回流的文本库不允许删除。
DeleteKeywordLibRequest deleteKeywordLibRequest = new DeleteKeywordLibRequest();
        // 设置要删除的文本库ID。
        deleteKeywordLibRequest.setId(3353);

        try {
            DeleteKeywordLibResponse deleteKeywordLibResponse = client.getAcsResponse(deleteKeywordLibRequest);
            System.out.println(JSON.toJSONString(deleteKeywordLibResponse));
        } catch (ClientException e) {
            e.printStackTrace();
        }

查找文本

默认分页获取所有文本。如果设置了Keyword字段,将模糊查找包含该字段值的文本。

DescribeKeywordRequest describeKeywordRequest = new DescribeKeywordRequest();
        // 要查询的文本库ID。
        describeKeywordRequest.setKeywordLibId(2693);
        describeKeywordRequest.setPageSize(10);
        describeKeywordRequest.setCurrentPage(1);
        // 可选,用于模糊查。
        describeKeywordRequest.setKeyword("你");
        try {
            DescribeKeywordResponse describeKeywordResponse = client.getAcsResponse(describeKeywordRequest);
            System.out.println(JSON.toJSONString(describeKeywordResponse));
        } catch (ClientException e) {
            e.printStackTrace();
        }

添加文本

CreateKeywordRequest createKeywordRequest = new CreateKeywordRequest();
        // 设置文本库ID。
        createKeywordRequest.setKeywordLibId(2693);
        // 要添加的文本。
        createKeywordRequest.setKeywords(JSON.toJSONString(Arrays.asList("你好吗", "棒棒哒")));

        try {
            CreateKeywordResponse createKeywordResponse = client.getAcsResponse(createKeywordRequest);
            System.out.println(JSON.toJSONString(createKeywordResponse));
        } catch (ClientException e) {
            e.printStackTrace();
        }

删除文本

DeleteKeywordRequest deleteKeywordRequest = new DeleteKeywordRequest();
        // 设置文本ID。
        deleteKeywordRequest.setKeywordLibId(String.valueOf(2693));
        // 要删除的文本ID。
        deleteKeywordRequest.setIds(JSON.toJSONString(Arrays.asList(1, 2)));

        try {
            DeleteKeywordResponse deleteKeywordResponse = client.getAcsResponse(deleteKeywordRequest);
            System.out.println(JSON.toJSONString(deleteKeywordResponse));
        } catch (ClientException e) {
            e.printStackTrace();
        }