Utilisez l'API POP pour créer, récupérer, mettre à jour, supprimer et lister les vocabulaires de mots clés spécifiques à votre activité depuis une application cliente, sans configuration dans la console. Chaque vocabulaire contient un ensemble de mots clés liés à votre activité ainsi que leurs pondérations.
Opérations d'API
Les opérations suivantes utilisent des requêtes HTTPS POST et la version d'API 2018-11-20. Placez les paramètres spécifiques à l'opération dans le corps de la requête. L'exemple utilise CommonRequest du SDK Alibaba Cloud pour Java afin de signer et d'envoyer des requêtes RPC.
|
Opération |
Objectif |
|
|
Crée un vocabulaire et renvoie un |
|
|
Récupère un vocabulaire et les pondérations de ses mots par ID. |
|
|
Met à jour le nom, la description et l'ensemble complet des pondérations de mots. |
|
|
Supprime un vocabulaire par ID. |
|
|
Liste les vocabulaires par page, sans les pondérations de mots. |
La région est ap-southeast-1 et le point de terminaison est nls-slp.ap-southeast-1.aliyuncs.com.
Limites
Par défaut, chaque compte peut créer jusqu'à 10 vocabulaires de mots clés spécifiques à son activité.
|
Contrainte |
Maximum |
|
Mots clés par vocabulaire |
128 |
|
Mot clé en chinois uniquement |
10 caractères chinois |
|
Mot clé en anglais uniquement |
5 mots anglais |
|
Mot clé mixte chinois et anglais |
10 caractères chinois et lettres anglaises au total |
Les mots clés doivent utiliser l'encodage UTF-8 et ne doivent pas contenir de ponctuation ni de caractères spéciaux. La pondération de chaque mot clé doit être un entier compris entre −6 et 5.
Une pondération positive augmente la probabilité de reconnaissance du mot clé. Une pondération négative la diminue.
Une pondération de −6 supprime autant que possible la reconnaissance du mot clé.
La pondération couramment utilisée est 2. Si l'effet est insuffisant, augmentez la pondération de manière appropriée. Des pondérations excessivement élevées peuvent réduire la précision de reconnaissance des autres mots.
Exemple de code
L'exemple crée, récupère, met à jour et liste les vocabulaires, puis supprime uniquement le vocabulaire qu'il a créé. Il ne supprime pas les autres vocabulaires renvoyés par l'opération de liste.
Ajouter des dépendances et configurer les identifiants
L'exemple utilise aliyun-java-sdk-core 3.7.1 et fastjson 1.2.83. Pour la configuration du SDK, consultez Prise en main. Pour l'utilisation générique des requêtes, consultez Appels génériques.
La bibliothèque principale du SDK Alibaba Cloud pour Java doit être en version 3.5.0 ou ultérieure. Les versions 4.0.0 et ultérieures nécessitent également leurs dépendances tierces correspondantes.
<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>
Définissez ALIYUN_AK_ID et ALIYUN_AK_SECRET respectivement avec l'AccessKey ID et l'AccessKey Secret. Le code lit les identifiants à partir de ces variables d'environnement ; aucun argument de ligne de commande n'est requis.
Appeler l'API
Après la mise à jour, WordWeights contient uniquement watermelon, ce qui démontre un remplacement complet. L'exemple crée un seul vocabulaire, donc le compte doit disposer d'un emplacement de vocabulaire disponible avant l'exécution.
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);
}
}
}
Référence des paramètres
Créer un vocabulaire
Appelez CreateAsrVocab pour créer un vocabulaire.
Paramètres de requête
|
Paramètre |
Type |
Obligatoire |
Description |
|
|
String |
Oui |
Le nom du vocabulaire. |
|
|
String |
Oui |
Un objet JSON sérialisé sous forme de chaîne. Chaque clé est un mot clé de type String, et chaque valeur est une pondération de type Int. Exemple : |
|
|
String |
Non |
La description du vocabulaire. |
Paramètres de réponse
Une requête réussie renvoie le code HTTP 200 avec un objet JSON dans le corps de la réponse.
|
Paramètre |
Type |
Description |
|
|
String |
L'ID de la requête. |
|
|
String |
L'ID du vocabulaire. Utilisez cet ID pour récupérer, mettre à jour ou supprimer le vocabulaire. |
Récupérer un vocabulaire
Appelez GetAsrVocab pour récupérer un vocabulaire.
Paramètres de requête
|
Paramètre |
Type |
Obligatoire |
Description |
|
|
String |
Oui |
Le |
Paramètres de réponse
|
Paramètre |
Type |
Description |
|
|
String |
L'ID de la requête. |
|
|
Object |
L'objet vocabulaire, avec les champs suivants. |
Champs Vocab
|
Champ |
Type |
Description |
|
|
String |
L'ID du vocabulaire, qui est identique au |
|
|
String |
Le nom du vocabulaire. |
|
|
String |
La description du vocabulaire. |
|
|
Int |
La taille du vocabulaire compilé. |
|
|
String |
La valeur MD5 du vocabulaire compilé. |
|
|
String |
L'heure de création. |
|
|
String |
L'heure de la dernière mise à jour. |
|
|
Map |
Les mots clés et leurs pondérations. |
Mettre à jour un vocabulaire
Appelez UpdateAsrVocab pour mettre à jour le nom, la description et les pondérations des mots. WordWeights remplace tous les mots clés et pondérations existants ; il ne les ajoute pas. Incluez dans la requête tous les mots clés que vous souhaitez conserver.
Paramètres de requête
|
Paramètre |
Type |
Obligatoire |
Description |
|
|
String |
Oui |
L'ID du vocabulaire. |
|
|
String |
Oui |
Le nom mis à jour du vocabulaire. |
|
|
String |
Oui |
L'ensemble complet des pondérations de mots mises à jour, au même format que lors de la création du vocabulaire. |
|
|
String |
Non |
La description mise à jour du vocabulaire. |
Paramètres de réponse
Une requête réussie renvoie le code HTTP 200. Le champ RequestId (String) dans la réponse JSON contient l'ID de la requête.
Supprimer un vocabulaire
Appelez DeleteAsrVocab pour supprimer un vocabulaire.
Paramètres de requête
|
Paramètre |
Type |
Obligatoire |
Description |
|
|
String |
Oui |
L'ID du vocabulaire à supprimer. |
Paramètres de réponse
Une requête réussie renvoie le code HTTP 200. Le champ RequestId (String) dans la réponse JSON contient l'ID de la requête.
Lister les vocabulaires
Appelez ListAsrVocab pour récupérer les vocabulaires par page. Les résultats sont triés par heure de mise à jour dans l'ordre décroissant. Les mots clés et les pondérations sont omis pour réduire la taille de la réponse.
Paramètres de requête
|
Paramètre |
Type |
Obligatoire |
Description |
|
|
Int |
Non |
Le numéro de page. Par défaut : 1. Doit être supérieur à 0. |
|
|
Int |
Non |
Le nombre de vocabulaires par page. Par défaut : 10. Définissez ce paramètre sur une valeur comprise entre 10 et 100. |
Paramètres de réponse
|
Paramètre |
Type |
Description |
|
|
String |
L'ID de la requête. |
|
|
Object |
Le résultat paginé, avec les champs suivants. |
Champs Page
|
Champ |
Type |
Description |
|
|
List<Vocab> |
Un tableau d'objets vocabulaire. Chaque objet possède les champs |
|
|
Int |
Le numéro de page actuel. |
|
|
Int |
Le nombre de vocabulaires par page. |
|
|
Int |
Le nombre total de pages, y compris la dernière page partielle le cas échéant. |
|
|
Int |
Le nombre total de vocabulaires. |
Codes d'erreur
Si une requête échoue, le statut HTTP n'est pas 200. Le corps de la réponse JSON contient Code, Message et RequestId. Utilisez le code d'erreur et le message pour résoudre les problèmes liés à la requête.
|
Code d'erreur |
Description et solution |
|
|
Le vocabulaire n'existe pas. Vérifiez si l'ID est correct ou si le vocabulaire a été supprimé. |
|
|
Un paramètre est invalide. Utilisez |
|
|
Le nombre de vocabulaires dépasse la limite. Par défaut, chaque compte peut créer jusqu'à 10 vocabulaires. |
|
|
Une erreur de vocabulaire s'est produite, telle qu'un échec de compilation. Vérifiez le contenu soumis en vous basant sur |
|
|
Le paramètre obligatoire |
|
|
Le paramètre obligatoire |
|
Code d'erreur de pagination |
Description et solution |
|
|
Le numéro de page est invalide. Définissez |
|
|
La taille de page est invalide. Définissez |