Ajout d'une grammaire à un modèle de langue personnalisé
Avant de pouvoir utiliser une grammaire dans le cadre de la reconnaissance vocale, vous devez d'abord utiliser l'interface de personnalisation pour ajouter la grammaire à un modèle de langue personnalisé. Les étapes permettant d'ajouter une grammaire à un modèle de langue personnalisé ressemblent à celles utilisées pour ajouter des corpus et des mots personnalisés :
- Créez un modèle de langue personnalisé. Vous pouvez créer un modèle personnalisé ou utiliser un modèle existant.
- Ajoutez une grammaire au modèle de langue personnalisé. Le service valide la grammaire pour en vérifier l'exactitude.
- Validez les mots de la grammaire. Vous vérifiez l'exactitude des prononciations possibles (sounds-like) pour les mots OOV (Out-Of-Vocabulary) reconnus par la grammaire.
- Entraînez le modèle de langue personnalisé. Le service prépare le modèle personnalisé et la grammaire pour qu'ils soient utilisés dans la reconnaissance vocale.
- Vous pouvez à présent utiliser le modèle personnalisé et la grammaire dans les demandes de reconnaissance vocale. Pour plus d'informations, voir Utilisation d'une grammaire pour la reconnaissance vocale.
Ces étapes sont itératives. Vous pouvez ajouter des grammaires, ainsi que des corpus et des mots personnalisés à un modèle de langue personnalisé aussi souvent que nécessaire. Vous devez entraîner le modèle personnalisé sur les nouvelles ressources de données (grammaires, corpus ou mots personnalisés) que vous ajoutez. Lorsque vous l'utilisez pour la reconnaissance vocale, un modèle personnalisé répercute les données sur lesquelles il a été entraîné en dernier.
Pour plus d'informations sur les langues et les modèles qui prennent en charge les grammaires et leur niveau de prise en charge (généralement disponible ou bêta), voir Prise en charge de langue pour la personnalisation.
Création d'un modèle de langue personnalisé
Pour utiliser une grammaire avec la reconnaissance vocale, vous devez l'ajouter à un modèle de langue personnalisé. Vous pouvez utiliser un modèle de langue personnalisé existant ou créer un modèle de personnalisé en utilisant la méthode POST /v1/customizations.
Pour plus d'informations sur la création d'un modèle personnalisé, voir Création d'un modèle de langue personnalisé.
Un modèle de langue personnalisé peut contenir des corpus et des mots personnalisés, ainsi que des grammaires. Lors de la reconnaissance vocale, vous pouvez utiliser le modèle personnalisé avec ou sans grammaires. Cependant, lorsque vous utilisez une grammaire, le service reconnaît uniquement les mots issus de la grammaire spécifiée.
Ajout d'une grammaire au modèle de langue personnalisé
Vous utilisez la méthode POST /v1/customizations/{customization_id}/grammars/{grammar_name} pour ajouter un fichier de grammaire à un modèle personnalisé.
customization_id(chaîneobligatoire)- Indiquez l'ID de personnalisation du modèle personnalisé auquel la grammaire doit être ajoutée.
grammar_name(chaîneobligatoire)- Spécifiez un nom pour la grammaire. Utilisez un nom localisé qui correspond à la langue du modèle personnalisé et qui reflète le contenu de la grammaire.
- Indiquez un nom ne dépassant pas 128 caractères.
- N'utilisez pas de caractères devant être codés dans l'URL. Par exemple, n'utilisez pas les caractères suivants dans le nom : espaces, barres obliques, barres obliques inversées, signes deux-points, perluètes, guillemets, signes plus, signes égal, points d'interrogation, etc. (Le service n'empêche pas l'utilisation de ces caractères. Toutefois, comme ils doivent être codés dans l'URL lorsqu'ils sont utilisés, leur utilisation est fortement déconseillée.)
- N'utilisez pas le nom d'une grammaire ou d'un corpus ayant déjà été ajouté au modèle personnalisé.
- N'utilisez pas le nom
user, qui est réservé par le service pour désigner des mots personnalisés ajoutés ou modifiés par l'utilisateur. - N'utilisez pas le nom
base_lmoudefault_lm. Ces deux noms sont réservés pour une utilisation ultérieure par le service.
Content-Type(chaîneobligatoire)- Utilisez l'en-tête de la requête pour spécifier le format de la grammaire :
application/srgspour une grammaire au format ABNFapplication/srgs+xmlpour une grammaire au format XML
Passe le fichier texte de grammaire en tant que corps de la requête. L'exemple suivant ajoute le fichier de grammaire nommé confirm.abnf au modèle personnalisé avec l'ID spécifié. Dans l'exemple, le nom de la grammaire est confirm-abnf.
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/srgs" \
--data-binary @confirm.abnf \
"{url}/v1/customizations/{customization_id}/grammars/confirm-abnf"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/srgs" \
--data-binary @confirm.abnf \
"{url}/v1/customizations/{customization_id}/grammars/confirm-abnf"
La méthode accepte également le paramètre de requête facultatif allow_overwrite que vous pouvez inclure pour remplacer une grammaire existante du même nom. Utilisez ce paramètre si vous devez mettre à jour une grammaire après l'avoir
ajoutée à un modèle.
Cette méthode est asynchrone. Le service peut prendre quelques minutes pour analyser la grammaire, en fonction de la taille de la grammaire et de la charge en cours sur le service. Pour plus d'informations sur la vérification du statut d'une grammaire, voir Surveillance de la demande d'ajout d'une grammaire.
Vous pouvez ajouter n'importe quel nombre de grammaires à un modèle personnalisé en appelant la méthode une fois pour chaque fichier de grammaire. L'ajout d'une grammaire doit être complètement terminé avant d'en ajouter une autre.
Surveillance de la demande d'ajout de grammaire
Le service renvoie un code de réponse 201 si la grammaire est valide. Il traite ensuite le contenu de la grammaire de manière asynchrone et extrait automatiquement les mots nouveaux pouvant être reconnus par la grammaire. Vous ne pouvez pas soumettre des demandes d'ajout de ressources de données supplémentaires à un modèle personnalisé ou entraîner le modèle, tant que le service n'a pas terminé l'analyse de la grammaire pour la demande en cours.
Afin de déterminer le statut de l'analyse, utilisez la méthode GET /v1/customizations/{customization_id}/grammars/{grammar_name} pour interroger le statut de la grammaire. La méthode accepte l'ID du modèle personnalisé et le nom
de la grammaire. L'exemple suivant vérifie le statut de la grammaire nommée confirm-abnf.
IBM Cloud
curl -X GET -u "apikey:{apikey}" \
"{url}/v1/customizations/{customization_id}/grammars/confirm-abnf"
IBM Cloud Pak for Data IBM Software Hub
curl -X GET \
--header "Authorization: Bearer {token}" \
"{url}/v1/customizations/{customization_id}/grammars/confirm-abnf"
La réponse comprend le statut de la grammaire :
{
"name": "confirm-abnf",
"out_of_vocabulary_words": 0,
"status": "being_processed"
}
La zone status a l'une des valeurs suivantes :
analyzedindique que l'analyse de la grammaire par le service a abouti.being_processedindique que le service est encore en train d'analyser la grammaire.undeterminedindique que le service a rencontré une erreur lors du traitement de la grammaire.
Utilisez une boucle pour vérifier le statut de la grammaire toutes les 10 secondes jusqu'à ce qu'il passe à analyzed. Pour plus d'informations sur la vérification du statut d'une grammaire, voir Affichage de la liste des grammaires d'un modèle de langue personnalisé.
Traitement des échecs d'ajout de grammaire
Si l'analyse d'une grammaire échoue, le service définit le statut de cette grammaire avec la valeur undetermined et inclut une zone error avec une description de l'erreur contenant le statut de la grammaire. Vous
pouvez également utiliser la méthode GET /v1/customizations/{customization_id} utilisée pour vérifier le statut du modèle personnalisé. En cas d'échec de l'ajout d'une grammaire, la sortie comprend un message d'erreur de ce
type :
{
. . .
"error": "{\"code\":500, \"code_description\":\"Internal Server Error\",
\". . . Cannot compile grammar . . .\"},
. . .
}
Cette erreur n'a aucune incidence sur le statut du modèle personnalisé, mais la grammaire ne peut pas être utilisée avec le modèle. Vous pouvez traiter le problème en corrigeant le fichier de grammaire et en relançant la demande pour l'ajouter
au modèle personnalisé. Définissez le paramètre allow_overwrite avec la valeur true pour remplacer la version du fichier de grammaire ayant échoué.
Vous pouvez également supprimer la grammaire du modèle personnalisé pour l'instant, puis corriger et ajouter à nouveau le fichier de grammaire ultérieurement. Pour plus d'informations sur la suppression d'une grammaire, voir Suppression d'une grammaire d'un modèle de langue personnalisé.
Validation des mots de la grammaire
Lorsque vous ajoutez un fichier de grammaire à un modèle de langue personnalisé, le service analyse la grammaire pour déterminer si elle reconnaît des mots qui ne font pas déjà partie du vocabulaire de base du service. Ces mots sont désignés par OOV (Out-Of-Vocabulary). Le service ajoute les mots OOV à la ressource de mots du modèle personnalisé. Le but de la ressource de mots consiste à définir des mots que ne sont pas déjà présents dans le vocabulaire du service.
Des définitions dans la ressource de mots indiquent au service comment transcrire les mots OOV. Ces informations comprennent une zone sounds_like indiquant au service comment se prononce le mot, une zone display_as indiquant au service comment afficher le mot et une zone source indiquant comment le mot a été ajouté au modèle personnalisé. Pour plus d'informations sur la ressource de mots et les mots OOV, voir Ressource de mots.
Après avoir ajouté une grammaire à un modèle personnalisé, il est recommandé d'examiner les mots OOV dans la ressource de mots du modèle pour vérifier leur prononciation possible. Toutes les grammaires ne comportent pas forcément de mots OOV, mais en principe, il est bon de vérifier la ressource de mots. Pour vérifier les mots du modèle personnalisé après avoir ajouté une grammaire, utilisez les méthodes suivantes :
- Utilisez la méthode
GET /v1/customizations/{customization_id}/wordspour répertorier tous les mots d'un modèle personnalisé. Transmettez la valeurgrammarsavec le paramètreword_typede la méthode pour répertorier uniquement les mots ajoutés à partir de grammaires. - Utilisez la méthode
GET /v1/customizations/{customization_id}/words/{word_name}pour afficher un mot individuel d'un modèle.
Vérifiez que les prononciations possibles des mots sont exactes et correctes. Recherchez les erreurs typographiques et d'autres erreurs dans les mots eux-mêmes. Pour plus d'informations sur la validation et la correction des mots dans un modèle personnalisé, voir Validation d'une ressource de mots pour les modèles de génération antérieure.
Entraînement du modèle de langue personnalisé
La dernière étape avant de pouvoir utiliser une grammaire avec un modèle de langue personnalisé consiste à entraîner le modèle. Vous utilisez le même processus que pour l'entraînement d'un modèle personnalisé sur de nouveaux corpus ou de nouveaux mots personnalisés. L'entraînement du modèle compile la grammaire pour l'utiliser dans le cadre d'une reconnaissance vocale. Le service convertit la grammaire du format texte d'origine au format binaire utilisé pour la reconnaissance vocale. Vous ne pouvez pas utiliser la grammaire tant que vous n'avez pas entraîné le modèle.
Pour entraîner un modèle personnalisé, vous utilisez la méthode POST /v1/customizations/{customization_id}/train. Vous transmettez à la méthode, l'ID de personnalisation (customization_id) du modèle que vous voulez entraîner, comme
illustré dans l'exemple suivant.
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
"{url}/v1/customizations/{customization_id}/train"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
"{url}/v1/customizations/{customization_id}/train"
La méthode d'entraînement est asynchrone. L'entraînement dure en principe quelques secondes ou quelques minutes. Mais il peut prendre plus de temps selon la taille et la complexité de la grammaire et en fonction de la charge en cours sur le service. Pour plus d'informations sur la vérification du statut d'une opération d'entraînement, voir Surveillance de la demande d'entraînement.
Surveillance de la demande d'entraînement
Le service renvoie le code de réponse 200 si le processus d'entraînement a été initié avec succès. Le service ne peut accepter d'autres demandes d'entraînement ou de nouvelles demandes d'ajout de grammaires, de corpus ou de mots, tant que la demande d'entraînement en cours n'est pas terminée.
Afin de déterminer le statut d'une demande d'entraînement, utilisez la méthode GET /v1/customizations/{customization_id} pour interroger le statut du modèle. La méthode accepte l'ID de personnalisation du modèle et renvoie des
informations de ce type sur le modèle :
{
"customization_id": "74f4807e-b5ff-4866-824e-6bba1a84fe96",
"created": "2018-06-01T18:42:25.324Z",
"language": "en-US",
"dialect": "en-US",
"owner": "297cfd08-330a-22ba-93ce-1a73f454dd98",
"name": "Example model",
"description": "Example custom language model",
"base_model_name": "en-US_BroadbandModel",
"status": "training",
"progress": 0
}
La zone status a la valeur training tant que l'entraînement du modèle est en cours d'exécution. Utilisez une boucle pour vérifier le statut du modèle toutes les 10 secondes jusqu'à ce qu'il passe à available.
Pour plus d'informations sur la surveillance d'une demande d'entraînement et les autres valeurs de statut possibles, voir Surveillance de la demande d'entraînement du modèle.