rasa学习(domain.yml、nlu.md、stories.md)(一)
可以跟进:rasa框架学习二(slots,entities,actions,component)
一、什么是rasa
Rasa是一个用于自动文本和基于语音的对话的开源机器学习框架。了解消息,保持对话以及连接到消息传递通道和API
Rasa分为Rasa core和 Rasa nlu两部分:
Rasa core用于指导会话流,而Rasa nlu用于理解和处理文本以提取信息(实体)
Rasa了解用户想说的内容(Rasa NLU - 实体和意图提取),然后根据上下文信息对其进行适当的操作谈话(Rasa Core)
官方推荐安装方式(安装rasa和easa X):
pip install rasa-x --extra-index-url https://pypi.rasa.com/simple
如果您不想使用Rasa X,请改为运行
pip install rasa
注意:
如果你想确保为你可能需要的任何组件安装了依赖项,并且你不介意附加的依赖项,你可以使用以下代码安装一切
pip install -r alt_requirements/requirements_full.txt
二、创建一个新项目
1. 创建rasa项目
rasa init --no-prompt
该命令创建Rasa项目所需的所有文件。
会创建以下文件:
__init__.py 一个帮助python找到你动作的空文件
actions.py 自定义操作的代码
config.yml '*' 配置NLU和Core型号
credentials.yml 连接其他服务的详细信息
data/nlu.md '*' 你的NLU训练数据
data/stories.md '*' 你的故事
domain.yml '*' 你助手的域名
endpoints.yml 连接到fb messenger等频道的详细信息
models/<timestamp>.tar.gz 你的初始模型
要检查是否已创建所有文件,请运行:
ls -l
2. 定义一个域
domain.yml文件
domain可以理解为机器的知识库,其中定义了意图,动作,以及对应动作所反馈的内容
intents 你期望用户说的东西。
entities 您想要从消息中提取的信息片段。
actions 你的机器人可以做和说的东西
slots 在会话期间跟踪的信息(例如用户年龄)
templates 你的机器人可以说的东西的模板字符串
intents:
- greet
- goodbye
- mood_affirm
- mood_deny
- mood_great
- mood_unhappy actions:
- utter_greet
- utter_cheer_up
- utter_did_that_help
- utter_happy
- utter_goodbye templates:
utter_greet:
- text: "Hey! How are you?"
buttons:
- title: "great"
payload: "great"
- title: "super sad"
payload: "super sad" utter_cheer_up:
- text: "Here is something to cheer you up:"
image: "https://i.imgur.com/nGF1K8f.jpg" utter_did_that_help:
- text: "Did that help you?" utter_happy:
- text: "Great carry on!" utter_goodbye:
- text: "Bye"
Rasa Core取intent,entities以及内部的对话状态,并且选择的所述一个actions应该下一个执行。如果该动作只是向用户说明,Rasa将在域中查找匹配模板(动作名称等于完全模板, utter_greet如上例所示),填写所有变量并进行响应。对于不仅仅发送消息的操作,您可以将它们定义为python类,并通过它们的模块路径在域中引用它们。
3. 定义一个解释器
解释器负责解析消息。目前我们的机器人已经可以通过输入意图来获取答案了,但是怎么让机器理解真正的语言呢,这个时候就需要用到NLU模块了,NLU的任务是解析消息,它能把自然语言解释成我们需要的结构化的数据
在Rasa NLU中,我们需要定义我们的机器人应该能够以Rasa NLU训练数据格式处理的用户消息。我们将使用Markdown格式来获取NLU训练数据。我们来创建一些意图示例data/nlu.md:
## intent:greet
- hey
- hello
- hi
- hello there
- good morning
- good evening
- moin
- hey there
- let's go
- hey dude
- goodmorning
- goodevening
- good afternoon ## intent:goodbye
- cu
- good by
- cee you later
- good night
- good afternoon
- bye
- goodbye
- have a nice day
- see you around
- bye bye
- see you later ## intent:mood_affirm
- yes
- indeed
- of course
- that sounds good
- correct ## intent:mood_deny
- no
- never
- I don't think so
- don't like that
- no way ## intent:mood_great
- perfect
- very good
- great
- amazing
- feeling like a king
- wonderful
- I am feeling very good
- I am great
- I am amazing
- I am going to save the world
- super
- extremely good
- so so perfect
- so good
- so perfect ## intent:mood_unhappy
- my day was horrible
- I am sad
- I don't feel very well
- I am disappointed
- super sad
- I'm so sad
- sad
- very sad
- unhappy
- not so good
- not very good
- extremly sad
- so saad
- so sad
我们现在可以使用我们的示例来训练NLU模型(确保首先 安装Rasa NLU 以及 spaCy)
4. 定义故事
到目前为止,我们已经有了一个NLU模型,一个定义我们的机器人可以采取的动作的域以及它应该处理的输入(意图和实体)。我们仍然错过了中心部分,故事告诉我们的机器人在对话的哪一点做什么。
一个故事是,对话系统训练数据样本。有两种不同的方式来创建故事(你可以混合它们):
- 手动创建故事,直接将它们写入文件
- 使用交互式学习创建故事。
我们将通过直接写入故事来创建故事stories.md。故事以##一个字符串作为标识符开始。用户操作以星号开头,机器人操作由以短划线开头的行指定。故事的结尾用换行符表示。
## happy path <!-- name of the story - just for debugging -->
* greet
- utter_greet
* mood_great <!-- user utterance, in format _intent[entities] -->
- utter_happy ## sad path 1 <!-- this is already the start of the next story -->
* greet
- utter_greet <!-- action of the bot to execute -->
* mood_unhappy
- utter_cheer_up
- utter_did_that_help
* mood_affirm
- utter_happy ## sad path 2
* greet
- utter_greet
* mood_unhappy
- utter_cheer_up
- utter_did_that_help
* mood_deny
- utter_goodbye ## say goodbye
* goodbye
- utter_goodbye
请注意,虽然直接用手写故事比使用交互式学习要快得多,但在使用插槽时需要特别小心,因为它们需要在故事中正确设置
5. 命令
rasa init 使用示例训练数据,操作和配置文件创建新项目。
rasa train 使用您的NLU数据和故事训练模型,
rasa interactive 启动交互式学习会话,通过聊天创建新的培训数据。
rasa shell 加载训练有素的模型,并让您在命令行上与助手交谈。
rasa run 使用训练有素的模型启动Rasa服务器。有关详细信息,请参阅运行服务器文档。
rasa run actions 使用Rasa SDK启动操作服务器。
rasa visualize 可视化故事。
rasa test 使用您的测试NLU数据和故事测试训练有素的Rasa模型。
rasa data split nlu 根据指定的百分比执行NLU数据的拆分。
rasa data convert nlu 在不同格式之间转换NLU训练数据。
rasa -h 显示所有可用命令。
举个实例吧
建一个新文件夹:rasa_study ,
进入文件夹:cd rasa_study
创建rasa项目:rasa init --no-prompt
项目目录:
1. 定义一个域(domain.yml)
intents:
- greet
- mood_happy
- mood_unhappy actions:
- utter_greet
- utter_happy
- utter_unhappy templates:
utter_greet:
- text: "你好,你今天过的怎么样啊" utter_happy:
- text: "那很棒棒哦" utter_unhappy:
- text: "咋了,可以告诉我吗"
2. 定义模型(nlu.md)
## intent:greet
- 你好
- 上午好
- 下午好
- 早上好
- 晚上好 ## intent:mood_happy
- 很好
- 我很好 ## intent:mood_unhappy
- 我很难受
- 我心情很差
因为用到了中文所以在config.yml里设置一下中文把en改成zh即可
3. 定义一个故事(stories.md)
*greet就是intent, - utter_greet是action
## story_happy
*greet
- utter_greet
* mood_happy
- utter_happy ## story_unhappy
* greet
- utter_greet
* mood_unhappy
- utter_unhapp
然后先要训练,在命令行里输入 rasa train,注意:对上面的三个文件进行修改后都要先进行训练,再进行对话,否则对话的内容是未修改前的内容
D:\myproject\rasa_study>rasa train
2019-06-05 16:28:19 INFO rasa.model - Data (stories) for Core model changed.
Training Core model...
Processed Story Blocks: 100%|███████████████████████████████████████████████████
训练完后,就可以对话了。在cmd输入 rasa shell 进行对话
我理解的对话流程图,不知道对不对
rasa学习(domain.yml、nlu.md、stories.md)(一)的更多相关文章
- Rasa学习记录 01
目录 Rasa的安装和简单的测试 什么是Rasa: 安装Rasa: 测试自带的数据 查看项目里的文件内容 举一反三(自己的第一个机器人) Rasa的安装和简单的测试 怪雨是新手,刚刚接触Rasa,以下 ...
- npm学习(九)之README.md文件
包括文档(readme.md) npm建议您包含一个readme文件来记录您的包.自述文件必须有文件名readme.md.文件扩展名.md表示该文件是一个标记(markdown)文件.当有人发现您的包 ...
- mdadm 创建md 删除md步骤
最近在使用mdadm创建和删除RAID设备.但是在创建和删除过程中会出现创建md0重启后变成md127,删除md127重启后又重新出现的状况.在网上搜索了一下,总结如下: 创建: 1. mdad ...
- 学习笔记(10)- 智能会话框架rasa
https://rasa.com/ 阿里用过这个,贝壳也在用这个. 优点: 有中文版本(https://github.com/crownpku/rasa_nlu_chi): 2018年发布,文档多,业 ...
- [转] GitHub上README.md教程
点击阅读原文 最近对它的README.md文件颇为感兴趣.便写下这贴,帮助更多的还不会编写README文件的同学们. README文件后缀名为md.md是markdown的缩写,markdown是一种 ...
- GitHub上README.md教程
最近对它的README.md文件颇为感兴趣.便写下这贴,帮助更多的还不会编写README文件的同学们. README文件后缀名为md.md是markdown的缩写,markdown是一种编辑博客的语言 ...
- 使用Botkit和Rasa NLU构建智能聊天机器人
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 我们每天都会听到关于有能力涉及旅游.社交.法律.支持.销售等领域的新型机器人推出的新闻.根据我最后一次查阅的数据,单单Facebook Me ...
- Gitbook 简介 使用总结 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- GitHub上README.md教程 详情介绍 (修改图片连接地址错误)
最近对它的README.md文件颇为感兴趣.便写下这贴,帮助更多的还不会编写README文件的同学们. README文件后缀名为md.md是markdown的缩写,markdown是一种编辑博客的语言 ...
随机推荐
- 关于KiCAD的一些插件
关于KiCAD的一些插件 https://gitee.com/KiCAD-CN/KiCad-CN-Forum/blob/master/KiCad_help_zh_CN.md#swapit-%E5%B7 ...
- linux调用本地镜像
首先先让系统显示出来 iso 已经挂载 然后#mkdir /mnt/cdrom #mount /dev/cdrom /mnt/cdrom #df -H 查看是否已经挂载上 #cd /etc/ ...
- springmvc Cacheable (RedisTemplate / StringRedisTemplate)
直接使用spring缓存请见:https://www.cnblogs.com/hanjun0612/p/11661340.html RedisTemplate和StringRedisTemplate配 ...
- Eclipse中发布Maven管理的Web项目时找不到类的问题根源和解决办法(转)
转自:http://blog.csdn.net/lvguanming/article/details/37812579?locationNum=12 写在前面的话 现在是越来越太原讨厌Eclipse这 ...
- (PASS)break 和 continue 的区别
1 break; while循环中,break是用于永久终止循环.即不执行本次循环中break后面的语句,直接跳出循环. 终止,跳出,结束循环(可以作用在任何地方).也常与switch分支结构合用 ...
- 解决Zookeeper报错:conf is not executed because it is not in the whitelist的解决办法
1.echo wchp | nc localhost 2181 ,通过路径列出服务器 watch 的详细信息,且它会输出一个与 session 相关的路径.但是出现下面的错误. [root@xg61 ...
- 【转】 MySQL主从(Master-Slave)复制
首先声明:此文是在失去U盘极度郁闷的时候写的,有些零散,估计也有错误.欢迎大家指出 MYSQL服务器复制配置 这是根据我之前看的MYSQL复制的文档然后自己亲自实验的过程.配置的功能比较简单. 环 ...
- phpstrom中Terminal窗口打开
Terminal窗口其实就是cmd窗口
- mvc 前台传入后台
转自:http://blog.csdn.net/huangyezi/article/details/45274553 一个很简单的分部视图,Model使用的是列表,再来看看调用该分部视图的action ...
- C++——decltype
, &cj=ci; decltype(ci) x=;//x的类型是const int decltype(cj) y=x;//y的类型是const int & decltype(cj) ...