当前位置:   article > 正文

rasa搭建多轮对话系统(一)_rasa多个回答

rasa多个回答


关于rasa的原理信息请参考 rasa指南也是本文参考内容主要来源,只是有些小问题做了改进,本文主要带初学者搭建系统入门,想在实际项目中使用,请关注后续内容。

来源:https://terrifyzhao.github.io/2018/09/17/Rasa使用指南01.html

rasa配置文件通俗理解

story文件定义了聊天流程模板,多轮对话按照模板进行对话,story中有意图和行为,意图决定了返回什么行为。
domain则是定义了意图有哪些,行为有哪些,行为的具体内容是什么。
story、domain、nlu文件之间的关系如下:
在这里插入图片描述有了slot之后呢?

在这里插入图片描述

安装rasa:

1、安装rasa_core

pip install rasa_core
  • 1

执行上面的命令这时可能会出现C++环境问题如下在这里插入图片描述
这里提供了C++的文件在windows中双击安装即可。
网盘地址:https://pan.baidu.com/s/1kQvBw1dg8qzF-e7DvH8TWw
提取码:ef5y

2、安装rasa_nlp

pip install rasa_nlu[tensorflow]
  • 1

配置文件

stories文件

首先配置stories文件,注意编码格式utf-8,在编辑内容保存的时候检查文件保存格式。文件名是stories.md,文件的具体内容如下:

## story_happy 
* greet
 - utter_greet 
* mood_happy
 - utter_happy 
## story_unhappy 
* greet2
 - utter_greet 
* mood_unhappy
 - utter_unhappy
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • ##表示story的标题
  • *表示意图
  • 表示行为

domain文件

接下来配置domain文件,文件名是domain.yml,注意编码格式utf-8,在编辑内容保存的时候检查文件保存格式。文件的具体内容如下:

intents:
  - greet
  - mood_happy
  - mood_unhappy

actions:
- utter_greet
- utter_happy
- utter_unhappy

templates:
  utter_greet:
  - text: "你好,你今天过的怎么样"

  utter_happy:
  - text: "那很棒棒哦"

  utter_unhappy:
  - text: "咋了,可以告诉我吗"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

domain.yml中的内容要与stories.md中的内容对应上

  • intents表示意图
  • actions表示行为
  • templates模板

注意文件的编码格式,不然会报错如下:
在这里插入图片描述

模型训练命令

以上的文件存放在同一目录下,在当前目录中执行下面的命令:

python -m rasa_core.train -d domain.yml -s stories.md -o models/dialogue
  • 1

-o表示模型存放的位置
训练过程:
在这里插入图片描述

开启对话服务:

执行下面的命令,开启对话服务:

python -m rasa_core.run -d models/dialogue
  • 1

输入内容就可以对话了。

添加Rasa NLU

nlu文件配置

配置nlu文件,文件名nlu.md,文件内容如下:

## intent:greet
- 你好
- 上午好
- 下午好
- 早上好
- 晚上好

## intent:mood_happy
- 很好
- 我很好

## intent:mood_unhappy
- 我很难受
- 我心情很差
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

配置nlu_config

配置nlu_config文件,文件名nlu_config.yml,文件内容如下:

language: zh
pipeline: tensorflow_embedding
  • 1
  • 2

NLU训练命令:

在同级目录下,执行下面的命令:

python -m rasa_nlu.train -c nlu_config.yml --data nlu.md -o models --fixed_model_name nlu --project current --verbose
  • 1

开启对话服务

同级目录下执行下列命令,开启对话

python -m rasa_core.run -d models/dialogue -u models/current/nlu
  • 1

添加slot

添加slot配置

在domain.yml中定义slot,内容如下:

entities:
  - city
slots:
  city:
    type: text

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

action配置:

rasa_core_sdk安装

action依赖rasa_core_sdk的,需要安装

pip install rasa_core_sdk
  • 1

endpoints

action是以服务的形式调用的。所以需要配置endpoints文件,文件名endpoints.yml,文件内容如下:

action_endpoint:
  url: "http://localhost:5055/webhook"
  • 1
  • 2

action代码

文件名自定义,这里定义的test.py,文件内容如下:

from rasa_core_sdk import Action
from rasa_core_sdk.events import SlotSet


class ActionAskWeather(Action):
    def name(self):
        return 'action_ask_weather'

    def run(self, dispatcher, tracker, domain):
        dispatcher.utter_message(f'您问的天气地点是哪里呢')
        return [SlotSet('city', '深圳')]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

其他配置

stories文件

stroies.md中添加关于天气的场景、意图、行为,内容如下:

## story_ask_weather
* ask_weather
  - action_ask_weather
* weather_city
  - utter_weather_good
  • 1
  • 2
  • 3
  • 4
  • 5

domain文件

配置domain.yml文件,在意图、实体、行为中都进行添加,具体内容如下:

intents:
  - greet
  - mood_happy
  - mood_unhappy
  - ask_weather
  - weather_city

entities:
  - city

slots:
  city:
    type: text

actions:
  - utter_greet
  - utter_happy
  - utter_unhappy
  - action_ask_weather
  - utter_weather_good


templates:
  utter_greet:
  - text: "你好,你今天过的怎么样"

  utter_happy:
  - text: "那很棒棒哦"

  utter_unhappy:
  - text: "咋了,可以告诉我吗"

  utter_weather_good:
    - text: "{city}天气很好呢"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

执行命令

1、rasa_core

python -m rasa_core.train -d domain.yml -s stories.md -o models/dialogue -c policy_config.yml
  • 1

2、rasa_nlu

python -m rasa_nlu.train -c nlu_config.yml --data nlu.md -o models --fixed_model_name nlu --project current --verbose
  • 1

3、action

python -m rasa_core_sdk.endpoint --actions test
  • 1

4、开启服务

python -m rasa_core.run -d models/dialogue -u models/current/nlu --endpoints endpoints.yml
  • 1

接下来可以进行对话测试了。
以上内容理解可以参考Rasa使用指南
项目中的代码可以参考:项目源码
如果你只是了解学习rasa,截至目前为止,就可以了。如果想在公司的项目中应用rasa,那需要继续关注后续内容。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/630331
推荐阅读
相关标签
  

闽ICP备14008679号