すべてのプロダクト
Search
ドキュメントセンター

Intelligent Speech Interaction:POP API によるビジネス固有のホットワードの管理

最終更新日:Sep 11, 2026

POP API では、コンソールで設定することなく、クライアントアプリケーションからビジネス固有のホットワードボキャブラリーを作成、取得、更新、削除、および一覧表示できます。各ボキャブラリーは、ビジネス関連のホットワードのセットと、それらの重みを含みます。

API オペレーション

以下のオペレーションは、HTTPS POST リクエストと API バージョン 2018-11-20 を使用します。オペレーション固有のパラメータはリクエストボディに指定します。この例では、Alibaba Cloud SDK for Java の CommonRequest を使用して RPC リクエストに署名し、送信します。

オペレーション

目的

CreateAsrVocab

ボキャブラリーを作成し、後続のオペレーションで使用する VocabId を返します。

GetAsrVocab

ID でボキャブラリーと単語の重みを取得します。

UpdateAsrVocab

名前、説明、および単語の重みの完全なセットを更新します。

DeleteAsrVocab

ID でボキャブラリーを削除します。

ListAsrVocab

単語の重みを含めず、ページ単位でボキャブラリーを一覧表示します。

リージョンは 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 を呼び出して語彙を作成します。

リクエストパラメーター

パラメーター

タイプ

必須

説明

Name

String

はい

語彙の名前。

WordWeights

String

はい

文字列としてシリアル化された JSON オブジェクト。キーは String 型のホットワード、値は Int 型の重みです。例: {"apple":3,"watermelon":3}。

Description

String

いいえ

語彙の説明。

レスポンスパラメーター

リクエストが成功すると、HTTP 200 とレスポンスボディ内の JSON オブジェクトが返されます。

パラメーター

タイプ

説明

RequestId

String

リクエスト ID。

VocabId

String

語彙 ID。この ID は、語彙の取得、更新、または削除に使用します。

語彙の取得

GetAsrVocab を呼び出して語彙を取得します。

リクエストパラメーター

パラメーター

タイプ

必須

説明

Id

String

はい

語彙の作成時に返された VocabId。

レスポンスパラメーター

パラメーター

タイプ

説明

RequestId

String

リクエスト ID。

Vocab

Object

語彙オブジェクト。次のフィールドを含みます:

Vocab フィールド

フィールド

タイプ

説明

Id

String

語彙 ID。作成時に返された VocabId と同じです。

Name

String

語彙の名前。

Description

String

語彙の説明。

Size

Int

コンパイルされた語彙のサイズ。

Md5

String

コンパイルされた語彙の MD5 値。

CreateTime

String

作成時刻。

UpdateTime

String

最終更新時刻。

WordWeights

Map

ホットワードとその重み。

語彙の更新

UpdateAsrVocab を呼び出して、名前、説明、単語の重みを更新します。 WordWeights は既存のすべてのホットワードと重みを置き換えます。追加はされません。保持するすべてのホットワードをリクエストに含める必要があります。

リクエストパラメーター

パラメーター

タイプ

必須

説明

Id

String

はい

語彙 ID。

Name

String

はい

更新後の語彙の名前。

WordWeights

String

はい

更新後のすべての単語の重み。語彙作成時と同じ形式です。

Description

String

いいえ

更新後の語彙の説明。

レスポンスパラメーター

リクエストが成功すると、HTTP 200 が返されます。JSON レスポンス内の RequestId フィールド (String 型) にリクエスト ID が含まれます。

語彙の削除

DeleteAsrVocab を呼び出して語彙を削除します。

リクエストパラメーター

パラメーター

タイプ

必須

説明

Id

String

はい

削除する語彙の ID。

レスポンスパラメーター

リクエストが成功すると、HTTP 200 が返されます。JSON レスポンス内の RequestId フィールド (String 型) にリクエスト ID が含まれます。

語彙の一覧表示

ListAsrVocab を呼び出して、ページごとに語彙を取得します。結果は更新時刻の降順でソートされます。レスポンス サイズを削減するため、ホットワードと重みは省略されます。

リクエストパラメーター

パラメーター

タイプ

必須

説明

PageNumber

Int

いいえ

ページ番号。デフォルトは 1 です。0 より大きい値を指定してください。

PageSize

Int

いいえ

1 ページあたりの語彙数。デフォルトは 10 です。10~100 の範囲で指定してください。

レスポンスパラメーター

パラメーター

タイプ

説明

RequestId

String

リクエスト ID。

Page

Object

ページ分割された結果。次のフィールドを含みます:

Page フィールド

フィールド

タイプ

説明

Content

List<Vocab>

語彙オブジェクトの配列。各オブジェクトには、語彙の取得で説明されている Vocab フィールドが含まれますが、WordWeights は含まれません。

PageNumber

Int

現在のページ番号。

PageSize

Int

1 ページあたりの語彙数。

TotalPages

Int

端数ページを含む総ページ数。

TotalItems

Int

語彙の総数。

エラーコード

リクエストが失敗した場合、HTTP ステータスは 200 ではありません。JSON レスポンスボディには Code、Message、RequestId が含まれます。エラーコードとメッセージを使用して、リクエストのトラブルシューティングを行ってください。

エラーコード

説明と解決策

SLP.NOT_FOUND

ボキャブラリーが存在しません。ID が正しいか、ボキャブラリーが削除されたかを確認してください。

SLP.PARAMETER_ERROR

パラメーターが無効です。Message を使用して、ボキャブラリーのサイズ、ホットワードの長さ、重み、またはその他のパラメーターを確認してください。

SLP.EXCEED_LIMIT

ボキャブラリー数が上限を超えています。デフォルトでは、各アカウントで作成できるボキャブラリーは最大 10 個です。

SLP.ASR_VOCAB_ERROR

コンパイル失敗などのボキャブラリーエラーが発生しました。Message に基づいて送信した内容を確認してください。

MissingName

必須の Name パラメーターが指定されていません。

MissingWordWeights

必須の WordWeights パラメーターが指定されていません。

ページネーションのエラーコード

説明と解決策

SLP.PAGE_NUMBER_INVALID

ページ番号が無効です。PageNumber を 0 より大きい整数に設定してください。

SLP.PAGE_SIZE_INVALID

ページサイズが無効です。PageSize を 10~100 の整数に設定してください。