Rasa的安装和简单的测试

怪雨是新手,刚刚接触Rasa,以下内容不一定正确。有错误的地方欢迎指出。

什么是Rasa:

​ 我的理解是一开源的机器学习框架用于AI助手和机器人。基于两个主要的模块

  • NLU:自然语言理解(Natural Language Understanding,简称NLU)技术
  • Core:核心 保存对话并决定下一步做什么

安装Rasa:

怪雨的系统:manjaro18+kde

安装前先更新同步数据库:sudo pacman -Syy

系统已经安装过以下内容的,可以跳过这一步(这一步也只是确保不会因为缺少什么而报错)

​ - 安装pip3sudo pacman -S python-pip

​ - 安装相关的依赖的python3的库pip install numpy pandas jieba sklearn

安装Rasa和Rasa-x 并初始化Rasa

pip install rasa-x --extra-index-url https://pypi.rasa.com/simple

rasa init

​ rasax就是Rasa 带界面的工具安装后终端运行rasax会自动弹出浏览器进入Rasax界面

测试自带的数据



现在就可以测试自带的简单数据了



不过对话要按照自己编写的stories来对话

输入/stop就能推出Rasa shell

输入Rasa shell就能再次进入对话!


查看项目里的文件内容

  1. 创建一个项目:

    rasa init --no-prompt 不加后面的--no-prompt的话会详细的问你需要设置什么

  2. 查看训练数据

    1. 可以通过cat data/nlu.md来查看 (以下是markdown的格式)
    ## intent:affirm
    - yes
    - indeed
    - of course
    - that sounds good
    - correct ## intent:deny
    - no
    - never
    - I don't think so
    - don't like that
    - no way
    - not really

    ​ ##后面是intents(意图) 就是以下的几条消息所要表达的意图

    ​ -后面跟的就是消息了

    ​ 意思就是把这一组消息都是这一意图

  3. 为你的模型配置

    你可以通过cat config.yml来查看配置文件

    # Configuration for Rasa NLU.
    # https://rasa.com/docs/rasa/nlu/components/
    language: en
    pipeline: supervised_embeddings # Configuration for Rasa Core.
    # https://rasa.com/docs/rasa/core/policies/
    policies:
    - name: MemoizationPolicy
    - name: KerasPolicy
    - name: MappingPolicy

    这些文件定义了你这个模型会使用的NLU和CORE组件

    NLUpipeline的选择:

    • 如果训练样例小于1000的 使用pipeline: "pretrained_embeddings_spacy"

    • 如果训练样例大于1000的 使用pipeline: "supervised_embeddings"

      以上两个是最重要的两个pipelines

  4. 编写自己的第一个Stories

    这个文档是教你的助手如何去回应消息的

    strories就是机器和用户的对话,core models通过真实的对话学习来训练自己。

    同样cat data/stories.md查看一下里面的内容(截取部分)

    ## happy path
    * greet
    - utter_greet
    * mood_great
    - utter_happy ## sad path 1
    * greet
    - utter_greet
    * mood_unhappy
    - utter_cheer_up
    - utter_did_that_help
    * affirm
    - utter_happy

    *greet * 后面的是用户发送的消息(语句的意图或是实体)

    - utter_greet - 后面是action (机器人需要执行的操作,可以是回一段消息或是自定义操作)

    ​ action中如果是回消息的话需要 回话必须要以utter_开头且与domain里面定义的一致

    ​ 如果是自定义操作虽然没有强制要求不过最好以action_开头

    action这里还大有内容,后面学习了更新到后面的文章

  5. 定义一个Domain

    [^]: 这里说域的话好像不太合适 保留英文Domain吧

    老样子查看cat domain.yml

    intents:
    - greet
    - goodbye
    - affirm
    - deny
    - mood_great
    - mood_unhappy
    templates:
    utter_greet:
    - text: Hey! How are you?
    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
    actions:
    - utter_greet
    - utter_cheer_up
    - utter_did_that_help
    - utter_happy
    - utter_goodbye
    intents 你期待用户说的话(意图)
    actions 机器人能做的和能说的
    templates 机器人回话模板
  6. 训练模型

    每次一的更新内容,我们都需要重新训练我们的模型

    执行下列代码

    rasa train
    echo "Finished training."
  7. 与机器人对话

    执行rasa shell


举一反三(自己的第一个机器人)

  1. 修改 data/nlu.md 中加入中文

    截取内容如下

    ## intent:affirm
    - yes
    - indeed
    - of course
    - that sounds good
    - correct
    - 是的
    - 当然
    - 正确
  2. 修改cat config.yml的内容

    language: en 改为 language: zh

  3. 修改domain.yml内容

    修改templates: utter 的text的文本内容

    templates:
    utter_greet:
    - text: 嗨!生活还好吗
    utter_cheer_up:
    - text: '希望这张图片能让你心情有所好转:'
    image: https://i.imgur.com/nGF1K8f.jpg
    utter_did_that_help:
    - text: 对你有帮助吗?
    utter_happy:
    - text: 加油!继续!
    utter_goodbye:
    - text: 再见
  4. 尝试训练

    rasa train

  5. 运行

    rasa shell

Rasa学习记录 01的更多相关文章

  1. "利用python进行数据分析"学习记录01

    "利用python进行数据分析"学习记录 --day01 08/02 与书相关的资料在 http://github.com/wesm/pydata-book pandas 的2名字 ...

  2. python源码剖析学习记录-01

    学习<Python源码剖析-深度探索动态语言核心技术>教程         Python总体架构,运行流程   File Group: 1.Core Modules 内部模块,例如:imp ...

  3. Python_OpenCV学习记录01安装

    Python照样快! 众所周知,虽然Python语法简洁,编写高效,但相比C/C++运行慢很多.然 而Python还有个重要的特性:它是一门胶水语言!Python可以很容易地扩展 C/C++.Open ...

  4. php数组学习记录01

    array_change_key_case array_change_key_case - 将数组中的所有键名修改为全大写或小写 <?php $input_array = array(" ...

  5. 01.基础架构:一条SQL查询语句是如何执行的?学习记录

    01.基础架构:一条SQL查询语句是如何执行的?学习记录http://naotu.baidu.com/file/1c8fb5a0f2497c3a2655fed89099cb96?token=ff25d ...

  6. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  7. 我的Spring学习记录(二)

    本篇就简单的说一下Bean的装配和AOP 本篇的项目是在上一篇我的Spring学习记录(一) 中项目的基础上进行开发的 1. 使用setter方法和构造方法装配Bean 1.1 前期准备 使用sett ...

  8. GIT初始学习记录

    目录 GIT学习记录 配置github与gitlib两个账号 基本操作 git init:初始化仓库 git status:查看仓库状态 git add :向缓存区中添加文件 git commit 保 ...

  9. JVM学习记录-线程安全与锁优化(二)

    前言 高效并发是程序员们写代码时一直所追求的,HotSpot虚拟机开发团队也为此付出了很多努力,为了在线程之间更高效地共享数据,以及解决竞争问题,HotSpot开发团队做出了各种锁的优化技术常见的有: ...

随机推荐

  1. 使用SlidingDrawer(滑动式抽屉)实现抽屉效果

    SlidingDrawer隐藏屏外的内容,并允许用户通过handle以显示隐藏内容.它可以垂直或水平滑动,它有俩个View组成,其一是可以拖动的handle,其二是隐藏内容的View.它里面的控件必须 ...

  2. vue中html、js、vue文件之间的简单引用与关系

    有关vue文件记录:index.html在html中运用组件 <body> <app></app> <!-- 此处app的组件为入口js main.js中定义 ...

  3. DEDECMS 漏洞汇总

    日期:2019-08-08 10:20:28 更新: 作者:Bay0net 介绍: 0x01.组合拳拿 shell 漏洞版本:v5.5 - v5.7 前台任意用户密码重置 首先注册一个账户,账户名为 ...

  4. 如何在终端使用后台运行模式启动一个Linux应用程序

    这是一个篇幅不长但是十分有用的教程,可以帮助你在终端启动一个Linux应用程序,并且使终端窗口不会丢失焦点. 我们有很多可以在Linux系统中打开一个终端窗口的方法,这取决于你的选择以及你的桌面环境. ...

  5. configmap使用-完整的configmap文档

    转发 https://www.jianshu.com/p/cf3e2218f283 转发 https://www.kubernetes.org.cn/3138.html 注意:configmap不用也 ...

  6. Java并发编程之程序运行堆栈分析

    Java程序运行的堆栈分析 1.JVM运行时数据区 JVM通过加载class文件的数据来执行程序.JVM在运行时会划分不同的区域以存放数据.如下图所示: 线程共享部分:所有线程都能访问这块内存的数据, ...

  7. gitlab 数据目录迁移

    一般情况下,采用gitlab作为版本管理工具,内网环境需要搭建gitlab服务器,安装好gitlab应用之后,就开始使用,但是随着时间的推移,发现gitlab的repository会越来越大.一般,从 ...

  8. 类属性与对象实现,init方法的作用,绑定方法,绑定方法与普通函数的区别,继承,抽象与继承,派生与覆盖

    今日内容: 1.类属性与对象属性 2.init方法的作用 3.绑定方法 4.绑定方法与普通函数的区别(非绑定方法) 5.继承 6.抽象与继承 7.派生与覆盖 1.类属性与对象属性 类中应该进存储所有对 ...

  9. Samba简单应用

    一.Samba 简介 1.介绍 Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用:Samba 即可以用于Windows和Linux之间的共享文件,也一样用于L ...

  10. Spring Bean 管理

    1 Spring 工厂类 2 XML 方式 1.1 Bean 实例化的三种方式 无参构造方法 静态工厂方法 实例工厂方法 3 XML方式属性注入 4 注解方式 5 注解方式属性注入