创建常用表达和词典的建议

常用表达和词典能覆盖到的日常表达范围直接决定了技能的可用性。常用表达和词典覆盖的日常表达越多,技能就越能体察更大范围用户的意图,从而服务更多的用户。

建立一套具有代表性的词典和常用表达是一个非常重要且长期的过程。在开发和测试阶段,你可以试着用各种不同的表达去调用每一个意图。有条件的话,还可以通过各种途径获取其他人的常用表达。你需要不断地更新常用表达,确保尽可能全面地包含用户的各种表达。

本文提供了一些建议,来帮助你更好地开发一套自己的常用表达和词典。

常用表达建议

在现实生活中,我们的表达非常灵活多样,我们可以用非常多不同的表达方式去描述同一种意图。例如,在准备打车时,我们可以说:

  • 小度小度,帮我打车
  • 小度小度,打车
  • 小度小度,我要打车去友谊路
  • 小度小度,打车去友谊路
  • 小度小度,我要打车
  • 小度小度,我想打车
  • 小度小度,能不能帮我打车去友谊路
  • ......

在询问天气时,我们可以说:

  • 小度小度,我要查今天天气
  • 小度小度,我想查北京天气
  • 小度小度,告诉我上海今天的天气
  • 小度小度,天气
  • ......

同一种意图,不同的人有不同的表达。如果你预设的表达是一个完整的句子,应该更多地去思考,用户会用怎样的方式去表达这句话。比如在有的用户说“我要打车”的时候,其他用户也可能会说“我想打车”。用户还可能会更简洁地表达这句话,直接说“打车”。查询天气也是一样。

在常用表达中添加足够多不同的表达会提高DuerOS对语音识别的能力。在常用表达中尽可能多地覆盖你能想到的所有可能表达(即使有些表达用户的使用量不是很大)是很重要的。常用表达的数量越多越好,需要持续地补充和完善。

上述关于天气和打车的示例并非适用于DuerOS的所有技能,但它们可以代表现实生活中的大多数日常表达。

说明
对于一个技能的一个意图,常用表达最多不超过500行。
如果技能有多个意图,同一个常用表达只能用于一种意图。

词典建议

在对某个意图创建槽位时,如果没有合适的系统词典可以引用,可以自定义词典。 自定义词典时,要使词典的词条尽可能全面涵盖用户的可能表达。 比如,在高考考试科目这个词典中,词条只有“语文、数学、理综、文综、英语”,词条数量有限且表达形式单一。但在大多数的槽位中词语都是复杂且多变的。 那么,对于大多数槽位,如何创建一个覆盖性更高的词典呢?

  • 针对某个词条,输出尽可能多的同义词,比如北京,也会被叫做“帝都”、“首都”、“京城”等。
  • 如果词条不包含技能预期的所有值,提供具有代表性的一组自定义值,将最有可能出现的一组值包含进来。比如菜谱里面的调料,如果不能包含所有,可以将比较常用的“盐”、“酱油”、“醋”等包含进来。