管理定制词
定制接口包含 POST /v1/customizations/{customization_id}/words
和 PUT /v1/customizations/{customization_id}/words/{word_name}
方法,用于添加或修改定制模型的词。 有关更多信息,请参阅向定制语言模型添加词。
该接口还包含以下方法,用于列出和删除定制语言模型的词。
定制词的字符编码
通常,您很可能会通过语料库来添加大多数定制词。 请确保您知道在语料库的文本文件中使用的字符编码。 服务会保留在文本文件中找到的编码。
在自定义语言模型中处理单个单词时,必须使用相同的编码。 使用 GET
、PUT
或 DELETE /v1/customizations/{customization_id}/words/{word_name}
方法来指定词时,必须对在 URL 中传递的 word_name
进行 URL 编码(如果词包含非 ASCII 字符)。
例如,下表显示了相同字母采用两种不同编码(ASCII 和 UTF-8)的情况。 虽然你可以将ASCII字符 URL 作为 z
传递,但必须将 UTF-8 字符作为 %EF%BD%9A
传递。
字母 | 编码 | 值 |
---|---|---|
z | ASCII | 0x7a (7a ) |
z | UTF-8 十六进制 | 0xEF 0xBD 0x9A (efbd9a ) |
从自定义语言模型中列出自定义单词
定制接口提供了两种方法,用于列出定制语言模型中的词:
GET /v1/customizations/{customization_id}/words
方法用于列出定制模型的词资源中词的相关信息。 此方法包含两个可选的查询参数:-
word_type
参数指定要列出哪些词:all
(缺省值)显示所有词。user
仅显示由用户添加或修改的定制词。corpora
仅显示从语料库中抽取的 OOV 词。grammars
仅显示从语法中抽取的 OOV 词。
对于基于下一代模型的定制模型, 仅
all
和user
适用。 这两个选项返回相同的结果。 来自语料库和语法的词不会添加到基于下一代模型的定制模型的词资源中。 -
sort
参数指示如何对词排序。 此参数接受两个自变量,用于指示如何对词排序:alphabetical
和count
。 可以在自变量前面添加可选的+
或-
,以指示结果是按升序还是降序排序。 缺省情况下,此方法会按字母顺序升序显示词。
-
GET /v1/customizations/{customization_id}/words/{word_name}
方法用于列出模型的词资源中单个指定词的相关信息。
除了用于标识词的 word
字段外,这两种方法都会返回有关每个词的以下信息:
-
一个
sounds_like
字段,显示单词多达五个发音。 如果在将词添加到定制模型时未提供类似声音的值,那么类似声音的发音的数组可以包含由服务自动生成的类似声音的值。 有关更多信息,请参阅- 对于基于上一代模型的自定义模型, 使用 sounds_like 字段。
- 对于基于下一代模型的自定义模型, 使用 sounds_like 字段。
-
display_as
字段,用于显示服务在转录中显示的定制词的拼写。 如果没有为词提供 display_as 值,那么此字段包含空字符串,在这种情况下,词会显示为其拼写形式。 有关更多信息,请参阅- 对于基于上一代模型的自定义模型,使用 display_as 字段。
- 对于基于下一代模型的自定义模型,使用 display_as 字段。
-
source
字段,用于指示将词添加到定制模型的词资源的方式。- 对于基于先前生成的模型的定制模型, 该字段包含服务从中抽取词的每个语料库和语法的名称。 如果是直接修改或添加的词,那么此字段包含字符串
user
。 - 对于基于下一代模型的定制模型,对于直接添加到定制模型的定制词, 此字段仅显示
user
。 来自语料库和语法的词不会添加到基于下一代模型的定制模型的词资源中。
- 对于基于先前生成的模型的定制模型, 该字段包含服务从中抽取词的每个语料库和语法的名称。 如果是直接修改或添加的词,那么此字段包含字符串
-
count
字段,用于指示在所有语料库和语法中找到该词的次数。- 对于基于上一代模型的定制模型, 例如,如果词在一个语料库中出现五次,在另一个语料库中出现七次,那么其计数为
12
。 如果在任何语料库或语法添加定制词之前将其添加到模型,那么计数将从1
开始。 如果先从语料库或语法添加该词,然后再进行修改,那么计数仅反映在语料库和语法中找到该词的次数。 - 对于基于大型语音模型和下一代模型的定制模型, 任何词的
count
字段始终为1
。
- 对于基于上一代模型的定制模型, 例如,如果词在一个语料库中出现五次,在另一个语料库中出现七次,那么其计数为
如果服务发现定制词的定义中有一个或多个问题,那么输出会包含 error
字段。 此字段提供了用于列出定义中每个有问题元素的数组,并提供了用于描述问题的消息。
例如,如果添加了具有无效 sounds_like
字段的定制词,这违反了其中一个读法添加规则,那么会发生错误。 如果定制模型的词资源包含带有错误的词,那么无法训练该模型。 必须更正或删除该词后,才能训练该模型。
列出所有定制词示例
以下示例列出了具有指定定制标识的定制模型中的所有词,而不管其类型是什么。 词按缺省排序顺序(字母顺序升序)显示。
IBM Cloud
curl -X GET -u "apikey:{apikey}" \
"{url}/v1/customizations/{customization_id}/words"
IBM Cloud Pak for Data IBM Software Hub
curl -X GET \
--header "Authorization: Bearer {token}" \
"{url}/v1/customizations/{customization_id}/words"
此模型的词资源包含四个词。 第一个词是用户直接添加的,但其 sounds_like
字段包含错误:此字段不能包含数字。 其他词由用户添加,或由用户和语料库添加,这指示这些词已添加到基于前代模型的定制模型中。
{
"words": [
{
"word": "75.00",
"sounds_like": ["75 dollars"],
"display_as": "75.00",
"count": 1,
"source": ["user"],
"error": [{"75 dollars": "Numbers are not allowed in sounds_like. You can try for example 'seventy five dollars'."}]
},
{
"word": "HHonors",
"sounds_like": [
"hilton honors",
"H. honors"
],
"display_as": "HHonors",
"count": 1,
"source": [
"corpus1",
"user"
]
},
{
"word": "IEEE",
"sounds_like": ["I. triple E."],
"display_as": "IEEE",
"count": 3,
"source": [
"corpus1",
"corpus2",
"user"
]
},
{
"word": "tomato",
"sounds_like": [
"tomatoh",
"tomayto"
],
"display_as": "tomato",
"count": 1,
"source": ["user"]
}
]
}
列出特定定制词示例
以下示例显示了有关指定模型的词资源中词 NCAA
的信息:
IBM Cloud
curl -X GET -u "apikey:{apikey}" \
"{url}/v1/customizations/{customization_id}/words/NCAA"
IBM Cloud Pak for Data IBM Software Hub
curl -X GET \
--header "Authorization: Bearer {token}" \
"{url}/v1/customizations/{customization_id}/words/NCAA"
用户初始添加了该词。 然后,服务在 corpus3
中找到该词两次。 这些词还添加到基于上一代模型的定制模型中。
{
"word": "NCAA",
"sounds_like": [
"N. C. A. A.",
"N. C. double A."
],
"display_as": "NCAA",
"count": 3,
"source": [
"corpus3",
"user"
]
}
从自定义语言模型中删除自定义单词
使用 DELETE /v1/customizations/{customization_id}/words/{word_name}
方法可从定制语言模型中删除词。
- 对于基于大型语音模型,上一代模型的定制模型, 使用此方法从包含错误数据的语料库中除去错误添加的词。 可以通过任何方法 (例如,从语料库,语法或直接) 除去添加到定制模型的词资源中的任何词。
- 对于基于下一代模型的定制模型, 只能删除直接添加到模型的词。 不会将语料库或语法中的词添加到模型中。
您无法从服务的基本词汇表中删除单词。 如果删除服务的基本词汇表中也存在的词,那么从定制模型中删除该词将仅删除该词的定制发音。 该词保留在基本词汇表中。
从定制模型中除去词不会影响该模型,直到使用 POST /v1/customizations/{customization_id}/train
方法来重新训练该模型为止。 如果模型先前曾基于该词进行过训练,那么模型会继续将该词应用于语音识别,即使从模型的词资源中删除了该词后也是如此。 您必须重新训练模型才能反映出此删除操作。
删除自定义单词示例
以下示例从具有指定定制标识的定制模型中删除词 IEEE
。
IBM Cloud
curl -X DELETE -u "apikey:{apikey}" \
"{url}/v1/customizations/{customization_id}/words/IEEE"
IBM Cloud Pak for Data IBM Software Hub
curl -X DELETE \
--header "Authorization: Bearer {token}" \
"{url}/v1/customizations/{customization_id}/words/IEEE"