学习rasa :
可以作为无知小狗,如果想让小狗明白帮你拿苹果?你会怎么做?
- 应该先让它认识苹果
- 你发出“去拿苹果的指示”
- 小狗找到苹果,用嘴叼过来
- 这样训练几次,小狗就会了
并且以后当你发出“拿”的指示,及时不是苹果,你指出的东西,小狗就会拿过来
就是这样的经过不断的训练,就够变得聪明。
Rasa-nlu 就是训练 intent(意图):拿东西 entriy(实体):苹果
Rasa 需要训练数据:
实例:nlu.yml
nlu:
- intent: request_weather
examples: |
-你能告诉我后天广州的天气吗?
Config.yml
rasa nlu 支持不同的 Pipeline 更准确的识别意图和实体
language: “zh”
pipeline:
- name: “MitieNLP”
model: “data/total_word_feature_extractor_zh.dat” - name: “JiebaTokenizer”
- name: “MitieEntityExtractor”
- name: “EntitySynonymMapper”
- name: “RegexFeaturizer”
- name: “MitieFeaturizer”
- name: “SklearnIntentClassifier”
训练rasa-nlu 模型命令
Rasa train nlu
理解用户消息的消息,接下来就是行动
Rasa-core 就是对话管理,决定下一步做什么
意思就是我们让小狗用嘴叼,叫,还是咬 让他来做出选择
Rasa-core 也要训练,
stories可以理解为对话的场景流程,告诉机器我们的多轮场景是怎样的
stories.yml样本数据
stories:
-
story: happy path
steps:- intent: request_weather
- slot_was_set:
- requested_slot: date_time
- action: weather_form
-
story: happy path
steps:- intent: request_weather
- slot_was_set:
- requested_slot: address
- action: weather_form
domain.yml定义了对话机器人应知道的所有信息,相当于大脑框架,指定了
意图intents,
实体entities,
插槽slots ,
动作actions。
version: “2.0”
intents:
- greet
- request_weather
session_config:
carry_over_slots_to_new_session: true
session_expiration_time: 60
actions:
- utter_answer_affirm
- utter_answer_deny
- utter_answer_greet
- utter_answer_goodbye
- utter_answer_thanks
- utter_answer_whoareyou
forms:
- weather_form
slots:
date_time:
type: unfeaturized
address:
type: unfeaturized
entities:
- date_time
- address
responses:
utter_answer_affirm:
- text: “嗯嗯,好的!”
- text: “嗯嗯,很开心能够帮您解决问题~”
- text: “嗯嗯,还需要什么我能够帮助您的呢?”
confing.yml
policies:
- name: TEDPolicy
epochs: 500
max_history: 5 - name: FallbackPolicy
fallback_action_name: ‘action_default_fallback’ - name: MemoizationPolicy
max_history: 5 - name: FormPolicy
它的作用就是使用合适的策略(Policy)来预测一次对话后要执行的行为(Actions)。
训练的命令是 rasa train croe
当我们把 rasa nlu 和 rasa croe 都训练好了,可以测试
Rasa shell