本文介绍了如何使用.NET SDK管理自定义文本库,以满足文本反垃圾检测场景的个性化需求。

功能描述

根据文本类型的不同,文本库分为关键词文本库和相似文本文本库;根据管控目的不同,文本库分为白名单、黑名单、疑似名单。关于参数的详细信息,请参见自定义文本库API文档

您需要使用内容安全的API接入地址,调用本SDK接口。关于API接入地址的信息,请参见接入地址(Endpoint)

前提条件

已安装.NET依赖。关于安装.NET依赖的具体操作,请参见安装.NET依赖
说明 请一定按照安装.NET依赖页面中的版本安装,否则会导致调用失败。

查询文本库列表

  • 查询关键词文本库列表
    using System;
    using Newtonsoft.Json;
    using Aliyun.Acs.Core;
    using Aliyun.Acs.Core.Profile;
    using Aliyun.Acs.Green.Model.V20170823;
    using System.Collections.Generic;
    
    namespace csharp_sdk_sample
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 请替换成您的AccessKey ID、AccessKey Secret。
                IClientProfile profile = DefaultProfile.GetProfile(
                    "cn-shanghai",
                    "您的AccessKey ID",
                    "您的AccessKey Secret");
                DefaultAcsClient client = new DefaultAcsClient(profile);
    
                DescribeKeywordLibRequest request = new DescribeKeywordLibRequest();
                request.ServiceModule = "open_api";
                try
                {
                    DescribeKeywordLibResponse response = client.GetAcsResponse(request);
                    Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
                    // 过滤出文本反垃圾场景配置的文本库。
                    List<DescribeKeywordLibResponse.DescribeKeywordLib_KeywordLib> allLibs = response.KeywordLibList;
                    List<DescribeKeywordLibResponse.DescribeKeywordLib_KeywordLib> textAntispamKeywordLibs = new List<DescribeKeywordLibResponse.DescribeKeywordLib_KeywordLib>();
                    foreach (DescribeKeywordLibResponse.DescribeKeywordLib_KeywordLib keywordLib in allLibs)
                    {
                        string LibType = keywordLib.LibType;
                        string resourceType = keywordLib.ResourceType;
                        string source = keywordLib.Source;
                        // 获取文本反垃圾自定义的关键词文本库。
                        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);
                        }
                    }
                    Console.WriteLine(JsonConvert.SerializeObject(textAntispamKeywordLibs));
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Failed with error info: {0}", ex.Message);
                }
            }
        }
    }
  • 查询相似文本库列表(包含自定义和系统回流的相似文本库)
    using System;
    using Newtonsoft.Json;
    using Aliyun.Acs.Core;
    using Aliyun.Acs.Core.Profile;
    using Aliyun.Acs.Green.Model.V20170823;
    using System.Collections.Generic;
    
    namespace csharp_sdk_sample
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 请替换成您的AccessKey ID、AccessKey Secret。
                IClientProfile profile = DefaultProfile.GetProfile(
                    "cn-shanghai",
                    "您的AccessKey ID",
                    "您的AccessKey Secret");
                DefaultAcsClient client = new DefaultAcsClient(profile);
    
                DescribeKeywordLibRequest request = new DescribeKeywordLibRequest();
                request.ServiceModule = "open_api";
                try
                {
                    // 该方法将返回所有文本库,包括文本反垃圾的关键词文本库、文本反垃圾的相似文本文本库、图片广告的关键词文本库、语音反垃圾的关键词文本库。
                    DescribeKeywordLibResponse response = client.GetAcsResponse(request);
                    Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
    
                    // 过滤出相似文本文本库。
                    List<DescribeKeywordLibResponse.DescribeKeywordLib_KeywordLib> allLibs = response.KeywordLibList;
                    List<DescribeKeywordLibResponse.DescribeKeywordLib_KeywordLib> similarTextLibs = new List<DescribeKeywordLibResponse.DescribeKeywordLib_KeywordLib>();
                    foreach (DescribeKeywordLibResponse.DescribeKeywordLib_KeywordLib keywordLib in allLibs)
                    {
                        String LibType = keywordLib.LibType;
                        String resourceType = keywordLib.ResourceType;
                        String source = keywordLib.Source;
                        // 获取文本反垃圾自定义的相似文本文本库。
                        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);
                        }
                    }
    
                    Console.WriteLine(JsonConvert.SerializeObject(similarTextLibs));
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Failed with error info: {0}", ex.Message);
                }
            }
        }
    }

创建文本库

  • 创建关键词文本库
    using System;
    using Aliyun.Acs.Core;
    using Aliyun.Acs.Core.Profile;
    using Aliyun.Acs.Green.Model.V20170823;
    
    namespace csharp_sdk_sample
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 请替换成您的AccessKey ID、AccessKey Secret。
                IClientProfile profile = DefaultProfile.GetProfile(
                    "cn-shanghai",
                    "您的AccessKey ID",
                    "您的AccessKey Secret");
                DefaultAcsClient client = new DefaultAcsClient(profile);
    
                CreateKeywordLibRequest createKeywordLibRequest = new CreateKeywordLibRequest();
                createKeywordLibRequest.ServiceModule = "open_api";
                createKeywordLibRequest.Name = "测试关键词文本库";
                // 设置为文本反垃圾场景使用。
                createKeywordLibRequest.ResourceType = "TEXT";
                // 设置类型为关键词。
                createKeywordLibRequest.LibType = "textKeyword";
                // 设置创建黑库。
                createKeywordLibRequest.Category = "BLACK";
                try
                {
                    CreateKeywordLibResponse describeKeywordLibResponse = client.GetAcsResponse(createKeywordLibRequest);
                    Console.WriteLine(System.Text.Encoding.Default.GetString(describeKeywordLibResponse.HttpResponse.Content));
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Failed with error info: {0}", ex.Message);
                }
            }
        }
    }
  • 创建相似文本库
    using System;
    using Aliyun.Acs.Core;
    using Aliyun.Acs.Core.Profile;
    using Aliyun.Acs.Green.Model.V20170823;
    
    namespace csharp_sdk_sample
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 请替换成您的AccessKey ID、AccessKey Secret。
                IClientProfile profile = DefaultProfile.GetProfile(
                    "cn-shanghai",
                    "您的AccessKey ID",
                    "您的AccessKey Secret");
                DefaultAcsClient client = new DefaultAcsClient(profile);
    
                CreateKeywordLibRequest createKeywordLibRequest = new CreateKeywordLibRequest();
                createKeywordLibRequest.ServiceModule = "open_api";
                createKeywordLibRequest.Name = "测试相似文本文本库";
                // 设置为文本反垃圾场景使用。
                createKeywordLibRequest.ResourceType = "TEXT";
                // 设置类型为相似文本。
                createKeywordLibRequest.LibType = "similarText";
                // 相似文本文本库支持创建黑名单库、白名单、疑似名单。
                createKeywordLibRequest.Category = "BLACK";
                try
                {
                    CreateKeywordLibResponse describeKeywordLibResponse = client.GetAcsResponse(createKeywordLibRequest);
                    Console.WriteLine(System.Text.Encoding.Default.GetString(describeKeywordLibResponse.HttpResponse.Content));
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Failed with error info: {0}", ex.Message);
                }
            }
        }
    }

修改文本库

更新文本库库名以及修改文本库所适用的业务场景(BizType)。

using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20170823;
using System.Collections.Generic;

namespace csharp_sdk_sample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 请替换成您的AccessKey ID、AccessKey Secret。
            IClientProfile profile = DefaultProfile.GetProfile(
                "cn-shanghai",
                "您的AccessKey ID",
                "您的AccessKey Secret");
            DefaultAcsClient client = new DefaultAcsClient(profile);

            UpdateKeywordLibRequest updateKeywordLibRequest = new UpdateKeywordLibRequest();
            // 设置要操作的文本库ID。
            updateKeywordLibRequest.Id = 文本库ID;
            // 设置新的文本库名称。
            updateKeywordLibRequest.Name = "测试修改名称";
            // 设置新的BizType。
            updateKeywordLibRequest.BizTypes = JsonConvert.SerializeObject(new List<string> { "comment", "title" });
            try
            {
                UpdateKeywordLibResponse updateKeywordLibResponse = client.GetAcsResponse(updateKeywordLibRequest);
                Console.WriteLine(System.Text.Encoding.Default.GetString(updateKeywordLibResponse.HttpResponse.Content));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
    }
}

删除文本库

注意 删除文本库也将删除文本库下的文本。系统回流的文本库不允许删除。
using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20170823;
using System.Collections.Generic;

namespace csharp_sdk_sample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 请替换成您的AccessKey ID、AccessKey Secret。
            IClientProfile profile = DefaultProfile.GetProfile(
                "cn-shanghai",
                "您的AccessKey ID",
                "您的AccessKey Secret");
            DefaultAcsClient client = new DefaultAcsClient(profile);

            DeleteKeywordLibRequest deleteKeywordLibRequest = new DeleteKeywordLibRequest();
            // 设置要删除的文本库ID。
            deleteKeywordLibRequest.Id = 文本库ID;

            try
            {
                DeleteKeywordLibResponse deleteKeywordLibResponse = client.GetAcsResponse(deleteKeywordLibRequest);
                Console.WriteLine(System.Text.Encoding.Default.GetString(deleteKeywordLibResponse.HttpResponse.Content));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
    }
}

查找文本

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

using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20170823;
using System.Collections.Generic;

namespace csharp_sdk_sample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 请替换成您的AccessKey ID、AccessKey Secret。
            IClientProfile profile = DefaultProfile.GetProfile(
                "cn-shanghai",
                "您的AccessKey ID",
                "您的AccessKey Secret");
            DefaultAcsClient client = new DefaultAcsClient(profile);

            DescribeKeywordRequest describeKeywordRequest = new DescribeKeywordRequest();
            // 要查询的文本库ID。
            describeKeywordRequest.KeywordLibId = 文本库ID;
            describeKeywordRequest.PageSize = 10;
            describeKeywordRequest.CurrentPage = 1;
            // 可选,用于模糊查。
            describeKeywordRequest.Keyword = "查询文本";

            try
            {
                DescribeKeywordResponse describeKeywordResponse = client.GetAcsResponse(describeKeywordRequest);
                Console.WriteLine(System.Text.Encoding.Default.GetString(describeKeywordResponse.HttpResponse.Content));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
    }
}

添加文本

using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20170823;
using System.Collections.Generic;

namespace csharp_sdk_sample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 请替换成您的AccessKey ID、AccessKey Secret。
            IClientProfile profile = DefaultProfile.GetProfile(
                "cn-shanghai",
                "您的AccessKey ID",
                "您的AccessKey Secret");
            DefaultAcsClient client = new DefaultAcsClient(profile);

            CreateKeywordRequest createKeywordRequest = new CreateKeywordRequest();
            // 设置文本库ID。
            createKeywordRequest.KeywordLibId = 文本库ID;
            // 要添加的文本。
            createKeywordRequest.Keywords = JsonConvert.SerializeObject(new List<string> { "文本_1", "文本_2" });
            try
            {
                CreateKeywordResponse createKeywordResponse = client.GetAcsResponse(createKeywordRequest);
                Console.WriteLine(System.Text.Encoding.Default.GetString(createKeywordResponse.HttpResponse.Content));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
    }
}

删除文本

using System;
using Newtonsoft.Json;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Green.Model.V20170823;
using System.Collections.Generic;

namespace csharp_sdk_sample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 请替换成您的AccessKey ID、AccessKey Secret。
            IClientProfile profile = DefaultProfile.GetProfile(
                "cn-shanghai",
                "您的AccessKey ID",
                "您的AccessKey Secret");
            DefaultAcsClient client = new DefaultAcsClient(profile);

            DeleteKeywordRequest deleteKeywordRequest = new DeleteKeywordRequest();
            // 设置文本库ID。
            deleteKeywordRequest.KeywordLibId = "文本库ID";
            // 要删除的文本ID。
            deleteKeywordRequest.Ids = JsonConvert.SerializeObject(new List<int> { 文本ID_1, 文本ID_2 });

            try
            {
                DeleteKeywordResponse deleteKeywordResponse = client.GetAcsResponse(deleteKeywordRequest);
                Console.WriteLine(System.Text.Encoding.Default.GetString(deleteKeywordResponse.HttpResponse.Content));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
    }
}