可以跟进: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)(一)的更多相关文章

  1. Rasa学习记录 01

    目录 Rasa的安装和简单的测试 什么是Rasa: 安装Rasa: 测试自带的数据 查看项目里的文件内容 举一反三(自己的第一个机器人) Rasa的安装和简单的测试 怪雨是新手,刚刚接触Rasa,以下 ...

  2. npm学习(九)之README.md文件

    包括文档(readme.md) npm建议您包含一个readme文件来记录您的包.自述文件必须有文件名readme.md.文件扩展名.md表示该文件是一个标记(markdown)文件.当有人发现您的包 ...

  3. mdadm 创建md 删除md步骤

    最近在使用mdadm创建和删除RAID设备.但是在创建和删除过程中会出现创建md0重启后变成md127,删除md127重启后又重新出现的状况.在网上搜索了一下,总结如下:   创建: 1.  mdad ...

  4. 学习笔记(10)- 智能会话框架rasa

    https://rasa.com/ 阿里用过这个,贝壳也在用这个. 优点: 有中文版本(https://github.com/crownpku/rasa_nlu_chi): 2018年发布,文档多,业 ...

  5. [转] GitHub上README.md教程

    点击阅读原文 最近对它的README.md文件颇为感兴趣.便写下这贴,帮助更多的还不会编写README文件的同学们. README文件后缀名为md.md是markdown的缩写,markdown是一种 ...

  6. GitHub上README.md教程

    最近对它的README.md文件颇为感兴趣.便写下这贴,帮助更多的还不会编写README文件的同学们. README文件后缀名为md.md是markdown的缩写,markdown是一种编辑博客的语言 ...

  7. 使用Botkit和Rasa NLU构建智能聊天机器人

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 我们每天都会听到关于有能力涉及旅游.社交.法律​​.支持.销售等领域的新型机器人推出的新闻.根据我最后一次查阅的数据,单单Facebook Me ...

  8. Gitbook 简介 使用总结 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. GitHub上README.md教程 详情介绍 (修改图片连接地址错误)

    最近对它的README.md文件颇为感兴趣.便写下这贴,帮助更多的还不会编写README文件的同学们. README文件后缀名为md.md是markdown的缩写,markdown是一种编辑博客的语言 ...

随机推荐

  1. 忘记mysql超户密码的解决方法

    本文章针对用yum安装的mariadb数据库,如果是tar包安装的mysql数据库,只是数据库命令的关闭启动方式不同而已. 方法一:[root@localhost ~]# killall -u mys ...

  2. 解决虚拟机克隆的linux系统ip无法正常使用问题

    当我们克隆centos虚拟机无法正常获取IP地址,重启网卡也提示Bringing up interface eth0:  Device eth0 does not seem to be present ...

  3. TCP协议中的三次握手和四次挥手(图解)(转)

    转自:http://blog.csdn.net/whuslei/article/details/6667471 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看 ...

  4. 小白的第一篇python博客

    学习python课程三天,先了解了计算机的历史及各种发展史,python的历史及部分语法,python主要学习内容有"hello world",int常量.str字符串,print ...

  5. Dubbox服务的消费方配置

    在src/main/resources下创建applicationContext-web.xml <?xml version="1.0" encoding="UTF ...

  6. 前端agl分页的写法

    <!-- 分页组件开始 --> <script src="../plugins/angularjs/pagination.js"></script&g ...

  7. JS对象的讲解

    1.对象属性的可枚举性和所有权:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Enumerability_and_ownership_ ...

  8. phpstorm使用说明

    1.phpstorm软件可以直接断点调试php代码.具体配置方法参考 http://blog.csdn.net/qq4551091/article/details/55258664 就可以了,不过只要 ...

  9. RN 0.6以后react-navigation 导航报错null is not an object (evaluating '_RNGestureHandlerModule.default.Direction')

    很久没用RN了之前用的时候还是很早的版本,现在有了很大的变化,感觉比之前成熟了很多重新看下.先整下导航 参考地址:https://reactnavigation.org/docs/en/getting ...

  10. “今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛 )--E. DoveCCL and Resistance

    题目描述:链接点此 这套题的github地址(里面包含了数据,题解,现场排名):点此 链接:https://www.nowcoder.com/acm/contest/104/D来源:牛客网 题目描述 ...