python rasa聊天机器人教程二:添加意图和回复
1.rasa的几个yml文件介绍
nlu.yml
文件:该文件用于训练自然语言理解 (NLU) 模型。您可以在其中添加示例句子,标记意图和实体,用于训练 NLU 模型。例如,在文件中添加一条示例句子、标记对应的意图和实体,然后使用 rasa train nlu
命令训练 NLU 模型。
domain.yml
文件:该文件用于定义机器人的行为、回复模板、意图和实体。您可以在其中设置意图、实体和回复模板,并定义机器人的对话流程。例如,在 responses
部分定义回复模板,在 intents
部分定义意图,在 entities
部分定义实体。此文件是整个对话系统的核心配置文件。
rules.yml文件使用基于规则的方法来定义对话流程。它基于用户的意图和机器人的动作之间的显式规则。每条规则包含了一个触发意图和一个或多个机器人的动作。当用户的意图匹配到规则中定义的触发意图时,相应的机器人动作将被执行。例如,在rules.yml中,可以定义一个规则,当用户的意图是"询问时间"时,机器人回复当前的时间。
stories.yml文件使用故事(story)的方式来定义对话流程。它描述了一个完整的对话场景,包括用户的意图、机器人的动作以及它们之间的顺序和关系。每个故事由一系列的事件(用户意图或机器人动作)组成,并按照时间顺序排列。这样,Rasa在训练模型时可以学习不同故事中的对话流程,以便在实际对话中根据用户的输入进行适当的响应。例如,在stories.yml中,可以定义一个故事,用户先发送一个"打招呼"意图,然后机器人回复一个问候语,接着用户发送一个"询问天气"意图,机器人再回复一个天气信息。
2.添加一个意图对应的回复
2.1 nul.yml文件
在nlu.yml文件中,添加一个意图(intent)和相应的训练示例,用于识别用户的询问。例如:
- intent: ask_identity examples: | - 你是谁 - 请问你是谁 - 请告诉我你的身份
2.2 domain.yml文件:
在domain.yml文件的responses部分中,添加一个新的回复模板,用于回答用户关于身份的询问。例如:
responses: utter_identity: - text: 我是一个AI机器人。
别忘了在domain.yml的intents
要添加意图
intents: - ask_identity
2.3 rules.yml文件:
在rules.yml文件中,添加一条规则来触发对应的回复。该规则将匹配用户的询问身份的意图,并执行回复动作。例如:
rules: - rule: 回答身份问题 steps: - intent: ask_identity - action: utter_identity
3.中文支持
打开项目根目录下的 config.yml 配置文件,修改如下:
recipe: default.v1 language: zh pipeline: - name: JiebaTokenizer - name: LanguageModelFeaturizer model_name: "bert" model_weight: "bert-base-chinese" - name: "DIETClassifier"
language 需要由 en 修改为 zh,即中文。
4.训练
重新训练模型
rasa train
5.运行对话模型
训练完成后,可以使用以下命令来与您的聊天机器人进行交互
rasa shell
6.对话测试
Your input -> 你是谁 我是一个AI机器人。 Your input -> 请告诉我你的身份 我是一个AI机器人。 Your input -> 请问你是谁 我是一个AI机器人。 Your input -> 你是? 我是一个AI机器人。