このトピックでは、Content Moderation SDK for Java を使用してカスタムテキストライブラリを管理する方法について説明します。これは、テキストのスパム対策シナリオにおけるパーソナライズされた要件を満たすのに役立ちます。
説明
テキストの種類に基づいて、テキストライブラリは用語ライブラリとテキストパターンライブラリに分類されます。管理目的によって、テキストライブラリはホワイトリスト、ブラックリスト、レビューリストに分類されます。関連パラメータの詳細については、「DescribeKeywordLib」をご参照ください。
前提条件
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("テキストライブラリの新しい名前");
// テキストライブラリが適用される新しいモデレーションシナリオを指定します。
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();
}テキストエントリの検索
デフォルトでは、システムはテキストライブラリ内のすべてのテキストエントリをページごとに返します。キーワード パラメータを設定すると、システムはあいまいモードで指定された用語に一致するすべてのテキストエントリを検索します。
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();
}