可以将哪些样本添加到自定义广告位以使其接受任何字词或短语?
答案 0 :(得分:2)
<强>更新强>
这个解决方案已经过时,引入了短语插槽,例如。 AMAZON.SearchQuery
。
短语插槽旨在提高语音识别的准确性 技能,你不能包括大多数可能的值 创建交互模型时插槽。可用的第一个插槽 此类别是AMAZON.SearchQuery旨在提供改进 能够从用户那里收集通用语音。
问题
在周末努力开发城市词典技能以提高我的Alexa技能时,我遇到了一个我认为很多技能开发人员可能会遇到的问题。
<强> TL; DR 强>
即,您如何在自定义插槽上训练Alexa,以便能够获得您给予的任何价值?
首次尝试
起初我在自定义插槽样本中添加了大约5个单词,如bae,boo,发送它。但是我很快发现这个技能只适用于那5个单词而且我没有调用我的lambda函数来获取该列表之外的单词。
然后我用
from nltk.corpus import words
import json, random
words_list = random.shuffle(words.words()[:1000])
words_list = [word.lower() for word in words_list]
words_list = list(set(words_list))
values = []
for word in words_list:
value = {}
value['id'] = None
value['name'] = {}
value['name']['value'] = word
value['name']['synonyms'] = []
values.append(value)
print(json.dumps(values))
上面的代码使用nltk,您可以使用pip install nltk
安装,根据您在代码编辑器下可以找到的架构生成1000个单词,它会生成其中的一千个;
{
"id": null,
"name": {
"value": "amblygeusia",
"synonyms": []
}
}
我在值下复制并粘贴了这些,你可以在Skills Builder页面的Code Editor下找到整个文件。
"languageModel": {
"types": [
{
"name": "phrase", //my custom slot's name
"values": [...] //pasted the thousand words generated here
...
在Skills Builder界面中保存和构建之后。这只允许我的技能捕获单字槽值。我尝试以相同的方式生成10000个单词,并将它们添加为自定义插槽的样本,但是没有识别出两个单词和三个单词短语,并且该技能无法获得短语的定义;
发货
解决方案;
对我有用并且效果很好的是生成两个单词样本。尽管所有的例子都是两个措辞,但是技能能够识别单个单词值甚至三个单词值。
以下是使用nltk;
执行此操作的代码from nltk.corpus import words
import json, random
words_list = random.shuffle(words.words()[:1000])
words_list = [word.lower() for word in words_list]
words_list = list(set(words_list))
word_pairs = []
for word in words_list:
pair = ' '.join(random.sample(words_list, 2))
word_pairs.append(pair)
word_pairs = list(set(word_pairs))
for pair in word_pairs:
value = {}
value['id'] = None
value['name'] = {}
value['name']['value'] = pair
value['name']['synonyms'] = []
values.append(value)
print(json.dumps(values))
我把它放在一个名为custom_slot_value_geneator.py
的文件中并用;
python3 custom_slot_value_geneator.py | xclip -selection c
这会生成值并将它们复制到剪贴板。
然后我将它们复制到代码编辑器中的值下,替换旧值
"languageModel": {
"types": [
{
"name": "phrase", //my custom slot's name
"values": [...] //pasted the thousand two word pairss generated here
...
保存&amp;建立。
就是这样!您的技能将能够识别您的自定义插槽的任何单词或短语,无论它是否在您生成的示例中!