本文介紹了如何使用Java SDK管理自訂文本庫,以滿足文本反垃圾檢測情境的個人化需求。
功能描述
根據文本類型的不同,文本庫分為關鍵詞文本庫和相似文本庫;根據管控目的不同,文本庫分為白名單、黑名單、疑似名單。關於參數的詳細資料,請參見自訂文本庫API文檔。
您需要使用Alibaba Content Security Service的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();
}