Rasa NLU:如何使用具有相同值的多个分类槽?

时间:2017-12-18 12:29:20

标签: nlp artificial-intelligence chatbot rasa-nlu

我刚刚开始使用Rasa NLU,我在理解具有相同值的分类槽的使用方面遇到了一些问题。我有3种不同类型的风险,每种风险都是一个带有值的分类广告位:lowmediumhigh

如果每个人的意图相同,那么机器人如何区分这三个风险并理解要填充哪个槽。 或者我是否需要为每个使用不同的意图?

现在我看到的是(我删除了不相关的日志):

How tired are you?
1: low (low)
2: medium (medium)
3: high (high)
medium
DEBUG:rasa_core.processor:Received user message 'medium' with intent '{'name': 'inform', 'confidence': 0.88372623999657118}' and entities  '[{'start': 0, 'end': 6, 'value': 'medium', 'entity': 'fatigue', 'extractor': 'ner_crf'}]'
DEBUG:rasa_core.processor:Current slot values: 
    fatigue: medium
    injury: None
    stress: None
How stressed are you?
1: low (low)
2: medium (medium)
3: high (high)
low
DEBUG:rasa_core.processor:Received user message 'low' with intent '{'name': 'inform', 'confidence': 0.88762049990079372}' and entities  '[{'start': 0, 'end': 3, 'value': 'low', 'entity': 'fatigue', 'extractor': 'ner_crf'}]'
DEBUG:rasa_core.processor:Current slot values: 
    fatigue: low
    injury: None
    stress: None

所有用户回复都具有意图inform。 一个例子是:

* _greet[]
 - utter_ask_fatigue
* _inform[fatigue=low]
 - utter_ask_injury
* _inform[injury=medium]
 - utter_ask_stress
* _inform[stress=low]
 - utter_on_it
 - action_reply

1 个答案:

答案 0 :(得分:2)

你可以用一个实体和四个插槽来做到这一点

实体可以定义为“info”类型,带有文本值(即低,中,高)。

四个插槽:第一个是“info”,它将由之前定义的已识别实体“info”自动填充。其他三个是“疲劳”,“压力”和“伤害”,可以通过诸如action_fill_fatigue,action_fill_stress和action_fill_injury等机器人动作来填充。

一个示例故事将清楚说明:

* _greet []
  - utter_ask_fatigue
* _inform [info = low]
  - action_fill_fatigue
  - utter_ask_injury
* _inform [信息=介质]
  - action_fill_injury
  - utter_ask_stress
* _inform [信息=低]
  - action_fill_stress
  - utter_on_it
  - action_reply