POP API では、コンソールで設定することなく、クライアントアプリケーションからビジネス固有のホットワードボキャブラリーを作成、取得、更新、削除、および一覧表示できます。各ボキャブラリーは、ビジネス関連のホットワードのセットと、それらの重みを含みます。
API オペレーション
以下のオペレーションは、HTTPS POST リクエストと API バージョン 2018-11-20 を使用します。オペレーション固有のパラメータはリクエストボディに指定します。この例では、Alibaba Cloud SDK for Java の CommonRequest を使用して RPC リクエストに署名し、送信します。
|
オペレーション |
目的 |
|
|
ボキャブラリーを作成し、後続のオペレーションで使用する |
|
|
ID でボキャブラリーと単語の重みを取得します。 |
|
|
名前、説明、および単語の重みの完全なセットを更新します。 |
|
|
ID でボキャブラリーを削除します。 |
|
|
単語の重みを含めず、ページ単位でボキャブラリーを一覧表示します。 |
リージョンは ap-southeast-1、エンドポイントは nls-slp.ap-southeast-1.aliyuncs.com です。
制限事項
デフォルトでは、各アカウントは最大 10 個のビジネス固有のホットワードボキャブラリーを作成できます。
|
制約 |
最大値 |
|
ボキャブラリーあたりのホットワード数 |
128 |
|
中国語のみのホットワード |
中国語 10 文字 |
|
英語のみのホットワード |
英単語 5 語 |
|
中国語と英語が混在するホットワード |
中国語の文字と英字の合計 10 文字 |
ホットワードは UTF-8 エンコーディングを使用する必要があり、句読点や特殊文字を含めることはできません。各ホットワードの重みは、-6 から 5 までの整数である必要があります。
-
正の重みは、ホットワードが認識される可能性を高めます。負の重みは、その可能性を低下させます。
-
重みを -6 に設定すると、ホットワードの認識が可能な限り抑制されます。
-
一般的に使用される重みは 2 です。効果が不十分な場合は、重みを適切に増やしてください。重みを過度に高く設定すると、他の単語の認識精度が低下する可能性があります。
サンプルコード
この例では、ボキャブラリーを作成、取得、更新、一覧表示し、その後、作成したボキャブラリーのみを削除します。一覧表示オペレーションで返された他のボキャブラリーは削除しません。
依存関係の追加と認証情報の設定
この例では、aliyun-java-sdk-core 3.7.1 と fastjson 1.2.83 を使用します。SDK のセットアップについては、「使用開始」をご参照ください。汎用的なリクエストの使用法については、「汎用的な呼び出し」をご参照ください。
Alibaba Cloud SDK for Java のコアライブラリは、バージョン 3.5.0 以降である必要があります。バージョン 4.0.0 以降では、対応するサードパーティの依存関係も必要です。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>3.7.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
ALIYUN_AK_ID と ALIYUN_AK_SECRET には、それぞれ AccessKey ID と AccessKey Secret を設定します。コードはこれらの環境変数から認証情報を読み取るため、コマンドライン引数は不要です。
API の呼び出し
更新後、WordWeights には watermelon のみが含まれ、完全な置き換えが行われたことを示しています。この例では 1 つのボキャブラリーを作成するため、実行前にアカウントに利用可能なボキャブラリースロットが必要です。
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.http.ProtocolType;
import com.aliyuncs.profile.DefaultProfile;
import java.util.UUID;
public class AsrVocabPopApiDemo {
private static final String REGION_ID = "ap-southeast-1";
private static final String DOMAIN = "nls-slp.ap-southeast-1.aliyuncs.com";
private final IAcsClient client;
public AsrVocabPopApiDemo(String accessKeyId, String accessKeySecret) {
client = new DefaultAcsClient(DefaultProfile.getProfile(
REGION_ID, accessKeyId, accessKeySecret));
}
private CommonRequest request(String action) {
CommonRequest request = new CommonRequest();
request.setDomain(DOMAIN);
request.setProtocol(ProtocolType.HTTPS);
request.setVersion("2018-11-20");
request.setMethod(MethodType.POST);
request.setAction(action);
return request;
}
private JSONObject execute(CommonRequest request) {
CommonResponse response;
try {
response = client.getCommonResponse(request);
} catch (ClientException e) {
throw new IllegalStateException("Request failed: " + e.getErrCode());
}
JSONObject result = JSONObject.parseObject(response.getData());
if (response.getHttpStatus() != 200) {
throw new IllegalStateException("HTTP " + response.getHttpStatus()
+ ", Code=" + result.getString("Code")
+ ", Message=" + result.getString("Message")
+ ", RequestId=" + result.getString("RequestId"));
}
return result;
}
public String createAsrVocab(String name, String description, JSONObject words) {
CommonRequest request = request("CreateAsrVocab");
request.putBodyParameter("Name", name);
request.putBodyParameter("Description", description);
request.putBodyParameter("WordWeights", words.toJSONString());
return execute(request).getString("VocabId");
}
public JSONObject getAsrVocab(String vocabId) {
CommonRequest request = request("GetAsrVocab");
request.putBodyParameter("Id", vocabId);
return execute(request).getJSONObject("Vocab");
}
public void updateAsrVocab(String vocabId, String name,
String description, JSONObject words) {
CommonRequest request = request("UpdateAsrVocab");
request.putBodyParameter("Id", vocabId);
request.putBodyParameter("Name", name);
request.putBodyParameter("Description", description);
request.putBodyParameter("WordWeights", words.toJSONString());
execute(request);
}
public JSONObject listAsrVocab(int pageNumber, int pageSize) {
CommonRequest request = request("ListAsrVocab");
request.putBodyParameter("PageNumber", pageNumber);
request.putBodyParameter("PageSize", pageSize);
return execute(request).getJSONObject("Page");
}
public void deleteAsrVocab(String vocabId) {
CommonRequest request = request("DeleteAsrVocab");
request.putBodyParameter("Id", vocabId);
execute(request);
}
private static String requiredEnv(String name) {
String value = System.getenv(name);
if (value == null || value.trim().isEmpty()) {
throw new IllegalArgumentException("Set environment variable " + name);
}
return value;
}
public static void main(String[] args) {
AsrVocabPopApiDemo demo = new AsrVocabPopApiDemo(
requiredEnv("ALIYUN_AK_ID"), requiredEnv("ALIYUN_AK_SECRET"));
String name = "example_vocab_" + UUID.randomUUID().toString();
JSONObject words = new JSONObject();
words.put("apple", 3);
words.put("watermelon", 3);
String vocabId = demo.createAsrVocab(name, "Example vocabulary", words);
System.out.println("Created vocabulary: " + vocabId);
try {
System.out.println("Vocabulary: " + demo.getAsrVocab(vocabId));
JSONObject updatedWords = new JSONObject();
updatedWords.put("watermelon", 2);
demo.updateAsrVocab(vocabId, name, "Updated vocabulary", updatedWords);
System.out.println("Updated vocabulary: " + demo.getAsrVocab(vocabId));
JSONObject page = demo.listAsrVocab(1, 10);
System.out.println("Total vocabularies: " + page.getIntValue("TotalItems"));
} finally {
demo.deleteAsrVocab(vocabId);
System.out.println("Deleted example vocabulary: " + vocabId);
}
}
}
パラメーターリファレンス
語彙の作成
CreateAsrVocab を呼び出して語彙を作成します。
リクエストパラメーター
|
パラメーター |
タイプ |
必須 |
説明 |
|
|
String |
はい |
語彙の名前。 |
|
|
String |
はい |
文字列としてシリアル化された JSON オブジェクト。キーは String 型のホットワード、値は Int 型の重みです。例: |
|
|
String |
いいえ |
語彙の説明。 |
レスポンスパラメーター
リクエストが成功すると、HTTP 200 とレスポンスボディ内の JSON オブジェクトが返されます。
|
パラメーター |
タイプ |
説明 |
|
|
String |
リクエスト ID。 |
|
|
String |
語彙 ID。この ID は、語彙の取得、更新、または削除に使用します。 |
語彙の取得
GetAsrVocab を呼び出して語彙を取得します。
リクエストパラメーター
|
パラメーター |
タイプ |
必須 |
説明 |
|
|
String |
はい |
語彙の作成時に返された |
レスポンスパラメーター
|
パラメーター |
タイプ |
説明 |
|
|
String |
リクエスト ID。 |
|
|
Object |
語彙オブジェクト。次のフィールドを含みます: |
Vocab フィールド
|
フィールド |
タイプ |
説明 |
|
|
String |
語彙 ID。作成時に返された |
|
|
String |
語彙の名前。 |
|
|
String |
語彙の説明。 |
|
|
Int |
コンパイルされた語彙のサイズ。 |
|
|
String |
コンパイルされた語彙の MD5 値。 |
|
|
String |
作成時刻。 |
|
|
String |
最終更新時刻。 |
|
|
Map |
ホットワードとその重み。 |
語彙の更新
UpdateAsrVocab を呼び出して、名前、説明、単語の重みを更新します。 WordWeights は既存のすべてのホットワードと重みを置き換えます。追加はされません。保持するすべてのホットワードをリクエストに含める必要があります。
リクエストパラメーター
|
パラメーター |
タイプ |
必須 |
説明 |
|
|
String |
はい |
語彙 ID。 |
|
|
String |
はい |
更新後の語彙の名前。 |
|
|
String |
はい |
更新後のすべての単語の重み。語彙作成時と同じ形式です。 |
|
|
String |
いいえ |
更新後の語彙の説明。 |
レスポンスパラメーター
リクエストが成功すると、HTTP 200 が返されます。JSON レスポンス内の RequestId フィールド (String 型) にリクエスト ID が含まれます。
語彙の削除
DeleteAsrVocab を呼び出して語彙を削除します。
リクエストパラメーター
|
パラメーター |
タイプ |
必須 |
説明 |
|
|
String |
はい |
削除する語彙の ID。 |
レスポンスパラメーター
リクエストが成功すると、HTTP 200 が返されます。JSON レスポンス内の RequestId フィールド (String 型) にリクエスト ID が含まれます。
語彙の一覧表示
ListAsrVocab を呼び出して、ページごとに語彙を取得します。結果は更新時刻の降順でソートされます。レスポンス サイズを削減するため、ホットワードと重みは省略されます。
リクエストパラメーター
|
パラメーター |
タイプ |
必須 |
説明 |
|
|
Int |
いいえ |
ページ番号。デフォルトは 1 です。0 より大きい値を指定してください。 |
|
|
Int |
いいえ |
1 ページあたりの語彙数。デフォルトは 10 です。10~100 の範囲で指定してください。 |
レスポンスパラメーター
|
パラメーター |
タイプ |
説明 |
|
|
String |
リクエスト ID。 |
|
|
Object |
ページ分割された結果。次のフィールドを含みます: |
Page フィールド
|
フィールド |
タイプ |
説明 |
|
|
List<Vocab> |
語彙オブジェクトの配列。各オブジェクトには、語彙の取得で説明されている |
|
|
Int |
現在のページ番号。 |
|
|
Int |
1 ページあたりの語彙数。 |
|
|
Int |
端数ページを含む総ページ数。 |
|
|
Int |
語彙の総数。 |
エラーコード
リクエストが失敗した場合、HTTP ステータスは 200 ではありません。JSON レスポンスボディには Code、Message、RequestId が含まれます。エラーコードとメッセージを使用して、リクエストのトラブルシューティングを行ってください。
|
エラーコード |
説明と解決策 |
|
|
ボキャブラリーが存在しません。ID が正しいか、ボキャブラリーが削除されたかを確認してください。 |
|
|
パラメーターが無効です。 |
|
|
ボキャブラリー数が上限を超えています。デフォルトでは、各アカウントで作成できるボキャブラリーは最大 10 個です。 |
|
|
コンパイル失敗などのボキャブラリーエラーが発生しました。 |
|
|
必須の |
|
|
必須の |
|
ページネーションのエラーコード |
説明と解決策 |
|
|
ページ番号が無効です。 |
|
|
ページサイズが無効です。 |