本文介紹了如何使用.NET SDK管理自訂文本庫,以滿足文本反垃圾檢測情境的個人化需求。
功能描述
根據文本類型的不同,文本庫分為關鍵詞文本庫和相似文本文本庫;根據管控目的不同,文本庫分為白名單、黑名單、疑似名單。關於參數的詳細資料,請參見自訂文本庫API文檔。
您需要使用Alibaba Content Security Service的API接入地址,調用本SDK介面。關於API接入地址的資訊,請參見接入地址(Endpoint)。
前提條件
查詢文本庫列表
查詢關鍵詞文本庫列表
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) { /** * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ DefaultProfile profile = DefaultProfile.GetProfile( "cn-shanghai", "建議從環境變數中擷取RAM使用者AccessKey ID", "建議從環境變數中擷取RAM使用者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) { /** * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ DefaultProfile profile = DefaultProfile.GetProfile( "cn-shanghai", "建議從環境變數中擷取RAM使用者AccessKey ID", "建議從環境變數中擷取RAM使用者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) { /** * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ DefaultProfile profile = DefaultProfile.GetProfile( "cn-shanghai", "建議從環境變數中擷取RAM使用者AccessKey ID", "建議從環境變數中擷取RAM使用者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) { /** * 常見擷取環境變數方式: * 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"); * 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); */ DefaultProfile profile = DefaultProfile.GetProfile( "cn-shanghai", "建議從環境變數中擷取RAM使用者AccessKey ID", "建議從環境變數中擷取RAM使用者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)
{
/**
* 常見擷取環境變數方式:
* 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
* 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
DefaultProfile profile = DefaultProfile.GetProfile(
"cn-shanghai",
"建議從環境變數中擷取RAM使用者AccessKey ID",
"建議從環境變數中擷取RAM使用者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)
{
/**
* 常見擷取環境變數方式:
* 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
* 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
DefaultProfile profile = DefaultProfile.GetProfile(
"cn-shanghai",
"建議從環境變數中擷取RAM使用者AccessKey ID",
"建議從環境變數中擷取RAM使用者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)
{
/**
* 常見擷取環境變數方式:
* 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
* 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
DefaultProfile profile = DefaultProfile.GetProfile(
"cn-shanghai",
"建議從環境變數中擷取RAM使用者AccessKey ID",
"建議從環境變數中擷取RAM使用者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)
{
/**
* 常見擷取環境變數方式:
* 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
* 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
DefaultProfile profile = DefaultProfile.GetProfile(
"cn-shanghai",
"建議從環境變數中擷取RAM使用者AccessKey ID",
"建議從環境變數中擷取RAM使用者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)
{
/**
* 常見擷取環境變數方式:
* 擷取RAM使用者AccessKey ID:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
* 擷取RAM使用者AccessKey Secret:Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
*/
DefaultProfile profile = DefaultProfile.GetProfile(
"cn-shanghai",
"建議從環境變數中擷取RAM使用者AccessKey ID",
"建議從環境變數中擷取RAM使用者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);
}
}
}
}