我正在构建一个简单的食品订购机器人。在这种情况下,我有一个take_order意图,其中将提取两个实体的food_item和数量,这两个实体在插槽中都具有列表类型,例如,如果出现这样的用户消息:
我想要[一个](数量)[鸡肉汉堡](food_item)和[两个](一个数量)[薯条](food_item)
此示例的广告位为:slot {“ quantity”:[“一个”,“两个”],“ food_item”:[“ chicken burger”,“ fries”]}
在user_take_order动作中,我将每个商品的数量乘以其价格,并将总账单提供给用户。
但是我有一个问题,在一个复杂的情况下,当用户不为food_item提供数量时,我会假设默认数量为1,但是当用户订购三件商品而没有仅提供食品数量时会出现问题。第二项,例如:
我想吃[一种](数量)[鸡肉汉堡](food_item),[薯条](food_item)和[两种](数量)[汽水](food_item)
在此示例中,未提供任何数量的炸薯条和填满的食物:slot {“数量”:[“一个”,“两个”],“ food_item”:[“鸡肉汉堡”,“薯条”,“冷饮” ”]}
在动作user_take_order中,我想这样做:
1 x price_of_chicken_burger
1 x price_of_fries
2 x price_of_cold_drink
但是问题在于,在数量插槽中,我只有数量的鸡肉汉堡和冷饮,并且我不知道用户没有提及薯条的数量(我想将薯条的数量设置为1”默认情况”)
我为广告位数量和food_item选择了错误的类型吗?
slots:
food_item:
type: list
quantity:
type: list
答案 0 :(得分:0)
一种可能的解决方案是提取数量和食品作为一个实体:
我想吃[一个鸡肉汉堡](quantity_food_item),[薯条](quantity_food_item)和[两种汽水](quantity_food_item)
然后在动作中区分它们。