将rasa-core地图实体映射到其他实体

时间:2019-05-06 12:12:13

标签: rasa-core

我正在构建一个简单的食品订购机器人。在这种情况下,我有一个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”:[“鸡肉汉堡”,“薯条”,“冷饮” ”]}

在动作us​​er_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

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是提取数量和食品作为一个实体:

我想吃[一个鸡肉汉堡](quantity_food_item),[薯条](quantity_food_item)和[两种汽水](quantity_food_item)

然后在动作中区分它们。

相关问题