Transformer课程 业务对话机器人Rasa 3.x Contextual Conversations

Transformer课程 业务对话机器人Rasa 3.x Contextual Conversations

Transformer课程 业务对话机器人Rasa 3.x Contextual Conversations

Rasa 官网

Learn more about Rasa:
Rasa documentation:
Join the Rasa Community:
Twitter:
Facebook:
Linkedin:
Youtube :

www.zeeklog.com  - Transformer课程 业务对话机器人Rasa 3.x Contextual Conversations

Contextual Conversations

考虑上下文通常是提供良好用户体验的关键。本页是创建上下文对话模式的指南。

在上下文对话中,对话中前一步之外的内容会影响下一步应该发生的事情。例如,如果用户询问“有多少?”,仅仅从信息中还不清楚用户在问什么。在助手说“你有邮件”的情况下,回答可能是“你的邮箱里有五封信”。在关于未付账单的对话中,回答可能是“你有三张逾期账单”。助手需要知道上一个操作才能选择下一个操作。

要创建上下文感知会话助手,您需要定义会话历史如何影响下一个响应。

例如,如果用户询问示例音乐会机器人如何开始,机器人会根据他们是否喜欢音乐做出不同的响应:

与喜欢音乐的用户的对话:

www.zeeklog.com  - Transformer课程 业务对话机器人Rasa 3.x Contextual Conversations


与不喜欢音乐的用户的对话:

www.zeeklog.com  - Transformer课程 业务对话机器人Rasa 3.x Contextual Conversations

Step-by-step Guide on Creating Contextual Conversation Patterns

1. Defining Slots

插槽是助理的内存。插槽存储您的助手稍后需要参考的信息片段,可以根据插槽设置slot_was_set事件引导对话流程。有不同类型的插槽,每个插槽都以自己的方式影响会话流。

在音乐会机器人示例中,likes_music槽是一个布尔槽。如果为true,则bot发送一条介绍消息。如果为false,则bot发送另一条消息。在域中定义插槽及其类型:
domain.yml

slots:
  likes_music:
    type: bool
    mappings:
    - type: custom

2. Creating Stories

故事是对话应该如何进行的例子。在上面的示例中,音乐会机器人对喜欢音乐的用户和不喜欢音乐的用户的响应不同,因为这两个故事:
stories.yml

stories:
  - story: User likes music
    steps:
    - intent: how_to_get_started
    - action: utter_get_started
    - intent: affirm
    - action: action_set_music_preference
    - slot_was_set:
      - likes_music: True
    - action: utter_awesome

  - story: User doesn't like music
    steps:
    - intent: how_to_get_started
    - action: utter_get_started
    - intent: deny
    - action: action_set_music_preference
    - slot_was_set:
      - likes_music: False
    - action: utter_goodbye

这些故事根据用户的意图(肯定或否定)而有所不同。根据用户的意图,自定义操作会设置一个槽,进一步引导对话。

3. Configuring the TEDPolicy

除了添加故事来解释上下文之外,机器学习策略还可以帮助您的模型概括为看不见的对话路径。重要的是要理解,使用机器学习策略并不意味着放弃对助手的控制。如果基于规则的策略能够进行预测,则该预测将始终具有更高的策略优先级,并将预测下一个操作。

TED策略用于处理意外的用户行为。例如,在下面的对话中(摘自Rasa X上的对话):

stories:
- story: Story from conversation with a2baab6c83054bfaa8d598459c659d2a on November 28th 2019
  steps:
  - checkpoint: STORY_START
  - intent: greet
  - action: action_greet_user
  - slot_was_set:
    - shown_privacy: true
  - intent: ask_whoisit
  - action: action_chitchat
  - intent: ask_whatspossible
  - action: action_chitchat
  - intent: telljoke
  - action: action_chitchat
  - intent: how_to_get_started
    entities:
    - product: x
  - slot_was_set:
    - product: x
  - action: utter_explain_x
  - action: utter_also_explain_nlucore
  - intent: affirm
  - action: utter_explain_nlu
  - action: utter_explain_core
  - action: utter_direct_to_step2

在这里,我们可以看到用户首先完成了一些聊天任务,然后最终询问他们如何开始使用Rasa X。TED策略正确地预测了Rasa X应该向用户解释,然后还引导他们开始使用,而不需要先询问所有符合条件的问题。

由于机器学习策略已经推广到这种情况,您应该将此故事添加到您的训练数据中,以不断改进您的机器人,并帮助模型在将来更好地推广。RASAX是一个工具,可以帮助您改进您的机器人,使其更加上下文化。

Setting max_history

通常,只有一定数量的上下文与您的助手相关。max_history是Rasa对话管理策略的超参数,用于控制模型在对话中查看多少步骤以决定下一步要采取的操作。

在下面的故事中,用户连续三次请求帮助。前两次,机器人发送相同的信息,但第三次,它将它们交给人工客服
stories.yml

stories:
  - story: user persists in asking for help
    steps:
    - intent: help
    - action: utter_help
    - intent: help
    - action: utter_help
    - intent: help
    - action: action_human_handoff

为了让模型了解这种模式,它至少需要知道前面的四个步骤,即四个的最大历史信息max_history。如果max_history为3,则模型将没有足够的上下文来查看用户已经发送了两个帮助请求,并且永远不会预测人工切换操作。

通过将max_history 历史记录传递到配置文件中的策略设置,可以设置max_history ,例如:

config.yml

policies:
  - name: "TEDPolicy"
    max_history: 5

您需要确保将max_history设置得足够高,以便您的助手能够准确预测下一步要做什么。有关更多详细信息,请参阅Featureizer上的文档。

Summary

以下是您可以应用的概念摘要,以使您的助手能够进行上下文对话:

为上下文对话写故事

使用插槽存储上下文信息以供以后使用

根据bot所需的上下文量,为策略设置最大历史记录

使用TED策略对不可见的对话路径进行泛化

rasa 链接

Rasa系列博客:

Read more

B.3 社区与论坛——《跟老吕学Sass》

B.3 社区与论坛——《跟老吕学Sass》

B.3 社区与论坛 * B.3 社区与论坛 参与社区和论坛是学习新技能、解决技术问题和保持对最新技术趋势了解的绝佳方式。对于Sass开发者来说,以下是一些活跃的社区和论坛,你可以在这些平台上找到资源、提问、分享经验或帮助他人: B.3.1 Stack Overflow * 网址: * 特点: Stack Overflow是最大的编程问答社区,你可以在这里搜索或提问关于Sass的问题。它拥有庞大的用户基础,问题通常能快速得到回答。 B.3.2 Sass官方论坛 * 网址: * 特点: 这是Sass官方的论坛,你可以在这里找到关于Sass的最新动态、讨论和支持。它是由Sass开发者和用户组成的社区,是获取官方支持和信息的好地方。 B.3.3 GitHub * 网址: * 特点: Sass的GitHub仓库是项目开发和讨论的中心。你可以在这里查看源代码、提交bug报告、参与讨论或贡献代码。 B.3.4 Reddit

By Ne0inhk
附录C. 常见问题解答(FAQ)——《跟老吕学Sass》

附录C. 常见问题解答(FAQ)——《跟老吕学Sass》

附录C. 常见问题解答(FAQ) * 附录C. 常见问题解答(FAQ) 以下是一些关于Sass的常见问题及其答案,旨在帮助解决在使用Sass过程中可能遇到的一些疑惑。 Q: Sass和SCSS有什么区别? A: Sass有两大语法版本:SCSS(Sass Script)和缩进语法(Indented Sass)。SCSS语法与CSS非常相似,使用花括号和分号,易于从CSS过渡。缩进语法则使用缩进来表示嵌套,不需要花括号和分号,更简洁但学习曲线稍陡。 Q: 如何在项目中安装Sass? A: 你可以通过npm来安装Sass。在命令行中运行 npm install -g sass 即可全局安装Sass。安装后,你可以使用 sass 命令行工具来编译Sass文件。 Q: 如何将Sass变量传递给混合(Mixins)? A: 你可以通过在混合定义时添加参数来传递变量。例如: @mixin border-radius($radius) { border-radius: $radius; } .button

By Ne0inhk
附录D. 术语表——《跟老吕学Sass》

附录D. 术语表——《跟老吕学Sass》

附录D. 术语表 * 附录D. 术语表 以下是Sass及相关Web开发领域的一些关键术语及其定义: D1. 预处理器 (Preprocessor) * 一种工具,允许使用特定的语法扩展来编写CSS,然后在编译时将其转换为标准CSS代码。 D2. Sass (Syntactically Awesome Stylesheets) * 一种流行的CSS预处理器,增加了变量、嵌套、混合、函数等高级功能。 D3. SCSS (Sass Script) * Sass的语法之一,与CSS语法非常相似,易于从CSS过渡。 D4. Indented Sass * Sass的另一种语法,使用缩进来表示层级关系,而不是花括号和分号。 D5. 变量 (Variable) * 在Sass中,变量用于存储可重用的值,如颜色、字体或尺寸,以便于维护和修改。 D6. 嵌套 (Nesting) * Sass的特性,允许在一个选择器内部定义另一个选择器,以反映HTML结构并减少重复代码。 D7. 混合

By Ne0inhk
手把手教你用Python+可视化工具制作漂亮地图

手把手教你用Python+可视化工具制作漂亮地图

↑↑↑关注后"星标"简说Python 人人都可以简单入门Python、爬虫、数据分析 简说Python严选 来源:菜J学Python    作者:J哥 One old watch, like brief python 大家好,我是老表~ 今天和大家分享的内容是数据可视化相关的,利用kepler.gl进行地图可视化,学习了记得点赞、留言、转发,三连哦~ 这次呢,我想讲讲地图可视化的内容,以前我也写过用Python的内置库绘制地图,但总感觉不够美观。如何才能在短时间内制作漂亮的可视化地图呢,我觉得Python+可视化工具是不错的选择。 以下动态可视化地图就是J哥亲手绘制,展现了一段时间内广州市企事业单位在网上商城采购商品的分布及随时间的变化。 接下来,将手把手教你如何绘制这个动态图,您可在公众号后台回复「 kepler 」获取数据集进行测试。 数据准备 第一步,打开并预览一下数据集,共766条采购记录,包含采购时间、采购单位和采购金额3个字段。 1df = pd.

By Ne0inhk