热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

对话系统Rasa2数据文件说明

文章目录1、domain.yml领域1)intent意图和entity实体2)action动作3)slot词槽4)response回复5)session_config会话配置2、c


文章目录


    • 1、`domain.yml` 领域
      • 1) intent 意图 和 entity 实体
      • 2) action 动作
      • 3) slot 词槽
      • 4) response 回复
      • 5) session_config 会话配置

    • 2、`config.yml`
      • 1) pipeline 流水线
      • 2) policies 策略

    • 3、`endpoints.yml` 端点
    • 4、`data/nlu.yml` nlu 训练数据
    • 5、`data/stories.yml` 故事
    • 6、组件





常见rasa工程目录如下:

.
├── actions
│ ├── actions.py
│ ├── __init__.py
│ └── __pycache__
│ ├── actions.cpython-37.pyc
│ └── __init__.cpython-37.pyc
├── config.yml
├── credentials.yml
├── data
│ ├── nlu.yml
│ ├── rules.yml
│ └── stories.yml
├── domain.yml
├── endpoints.yml
├── models
│ └── 20230201-193003-allegro-golf.tar.gz
└── tests
└── test_stories.yml



1、domain.yml 领域

定义了对话机器人需要知道的所有信息,包括以下字段:


  • intent 意图 和 entity 实体,表示输入的范围;
  • slot 词槽 和 form 表单,给定了模型输出的范围;
  • action 动作;
  • response 回复,作为对话机器人回复的模板;可以认为是一种简单的动作,也可以认为是复杂动作的 NLG 步骤



  • 这些信息对模型的输入和输出 进行了明确的范围指定;
  • 意图和实体
  • 词槽和表单,相当于内部的变量,用于表征状态和存储记忆



1) intent 意图 和 entity 实体

告诉机器人可能要处理的意图和实体有哪些。



intents:
- greet
- goodbye
entities:
- object_type
- mention
- hotel



2) action 动作


  • 是对话管理模型的输出
  • 定义了机器人可以执行的动作
  • utter_ 开头



actions:
- action_query_knowledge_base



3) slot 词槽

定义了机器人在对话过程中需要跟踪记忆的信息



slots:
object_type:
type: text
influence_conversation: false
mappings:
- type: from_entity
entity: object_type
mention:
type: text
influence_conversation: false
mappings:
- type: from_entity
entity: mention
attribute:
type: text
influence_conversation: false
mappings:
- type: from_entity
entity: attribute



4) response 回复

定义了机器人回复的模板




responses:
utter_greet:
- text: "Hey!"
- text: "Hello! How can I help you?"
utter_goodbye:
- text: "Bye"
- text: "Goodbye. See you soon."



5) session_config 会话配置

session 会话,是指用户和机器人之间的一场对话。一个会话可以横跨很多轮对话。
Rasa 支持的会话配置有:


  • session_expiration_time,用户的最新消息多久后,会话被认为过期;
  • carry_over_slots_to_new_session,新的会话开始时,是否应该将上一个绘画的词槽延续到新的会话。

session_config:
session_expiration_time: 60 # value in minutes
carry_over_slots_to_new_session: true





2、config.yml

配置文件一般有三个主要的键:


  • recipe,表示配置文件所用的格式,当前只支持 default.v1
  • language,要处理的语言
  • pipeline,流水线组件列表



1) pipeline 流水线



示例:

pipeline:
- name: "WhitespaceTokenizer"
- name: "CountVectorsFeaturizer" # 组件名
analyzer: "char_wb" # 配置项
min_ngram: 1
max_ngram: 4
- name: "DIETClassifier"
epochs: 100
- name: SpacyNLP
model: "en_core_web_md"
- name: SpacyEntityExtractor
dimensions: ["PERSON"]


推荐的中文流水线配置

recipe: default.v1
language: zh
pipeline:
- name: "JiebaTokenizer"
- name: LanguageModelFeaturizer
model_name: "bert"
model_weight: "bert-base-chinese"
- name: "DIETClassifier"



2) policies 策略

策略负责学习故事,从而预测动作。



示例:

policies:
- name: TEDPolicy
max_history: 5
epochs: 1
- name: MemoizationPolicy
- name: RulePolicy



3、endpoints.yml 端点

定义了 rasa core 和其他服务进行连接的而配置信息。
目前支持的端点有:


  • event broker
  • tracker store
  • lock store
  • action server
  • NLU 服务器
  • NLG 服务器
  • model storage



4、data/nlu.yml nlu 训练数据

data/nlu.yml 中 key为 nlu 的列表是训练数据。
列表中每个元素是一个字典,依靠字典中不同特殊含义的 key 来区分不同字典的功能。key 包括如下几种:


  • intent,意图字段
  • synonym, 同义词字段
    存储同义词信息,examples 中的同义词会被替换为 synonym 的值;
  • lookup,查找表字段
    用来存储查找表,如特征词表。
  • regex, 正则表达式字段
    存储正则表达式



  • 其中,除 intent 必须有外,其他三个可选;


数据示例:

version: "3.1"
nlu:
- intent: bot_challenge
examples: |
- are you a bot?
- are you a human?
- am I talking to a bot?


- lookup: hotel
examples: |
- Hilton
- City Hotel
- ...




  • entity,实体
  • slot,词槽
  • action,动作
  • form,表单
  • response,回复





5、data/stories.yml 故事

rasa 通过学习故事来学习对话管理知识。故事是一种在较高语义层次上记录对话过程的方式。不仅需要记录用户的语义表达,还需要记录系统内部正确的状态变化。
观察文件内容,每个故事都是 stories列表中的一个元素。

stories:
- story: happy path
steps:
- intent: greet
- action: utter_greet
- intent: mood_great
- action: utter_happy
- story: sad path 1
steps:
- intent: greet
- action: utter_greet
- intent: mood_unhappy



6、组件

DAG: Directed Acyclic Graph,有向无环图;
Rasa NLU 是一个基于DAG的通用框架,DAG 由组件(component)相互连接构成。



常用组件


  • 语言模型组件,加载预训练的词向量模型
    如:spaCyNLP, MittieNLP
  • 分词组件
    如:JiebaTokenizer, MittieTokenizer, spaCyTokenizer
  • 特征提取组件
    如:MittieFeaturizer, spaCyFeaturizer, ConveRTFeaturizer, LanguageModelFeaturizer, RegexFeaturizer, ConutVectorsFeaturizer, LexiconSyntacticFeaturizer
  • NER 组件
    如:CRFEntityExtractor, spaCyEntityExtractor, DucklingHTTPExtractor, MittieEntityExtractor, EntitySynonymMapper, DIETClassifier, RegexEntityExtractor
  • 意图分类组件,也称为意图识别组件
    如:MittieIntentClassifier, SklearnIntentClassifier, KeywordIntentClassifier, DietClassifier, FallbackClassifier,
  • 结构化输出组件
  • 实体和意图联合提取组件
    如:rasa 提供的 DIETClassifier
  • 回复选择器 ResponseSelector


组件特性


  • 顺序很重要
  • 可以互相替换
  • 有些组件之间互斥
  • 有些组件可以同时使用


伊织 2023-02-04(六)







推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • OCR:用字符识别方法将形状翻译成计算机文字的过程Matlab:商业数学软件;CUDA:CUDA™是一种由NVIDIA推 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • pc电脑如何投屏到电视?DLNA主要步骤通过DLNA连接,使用WindowsMediaPlayer的流媒体播放举例:电脑和电视机都是连接的 ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
author-avatar
崔显莉京_716
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有