Rasa构建常见问题解答助手和闲聊助手的分步指南


要处理常见问题和闲聊,您需要一个基于规则的对话管理策略( RulePolicy)和一个简单的方法来返回问题的相应响应( ResponseSelector)。

1.更新配置(config.yml)

对于常见问题和闲聊,您总是希望助理在每次提出相同类型的问题时都以相同的方式回答。Rules允许你这么做。要使用规则,您需要将RulePolicy添加到配置文件中的policies中:

policies:
# other policies
- name: RulePolicy

接下来,在配置文件的NLU管道中包含ResponseSelectorResponseSelector需要Featureizerintent分类器才能工作,因此它应该位于管道中的这些组件之后,例如:

pipeline:
  - name: WhitespaceTokenizer
  - name: RegexFeaturizer
  - name: LexicalSyntacticFeaturizer
  - name: CountVectorsFeaturizer
  - name: CountVectorsFeaturizer
    analyzer: char_wb
    min_ngram: 1
    max_ngram: 4
  - name: DIETClassifier
    epochs: 100
  - name: EntitySynonymMapper
  - name: ResponseSelector
    epochs: 100

默认情况下,ResponseSelector将为所有检索意图构建单个检索模型。要分别检索常见问题解答和闲聊的响应,请使用多个响应选择器组件并指定retrieval_intent键:

pipeline:
# Other components
- name: ResponseSelector
  epochs: 100
  retrieval_intent: faq
- name: ResponseSelector
  epochs: 100
  retrieval_intent: chitchat

2.定义检索意图和响应选择器

举一个例子,你有20个不同的常见问题。尽管每个问题都表示为一个单独的意图,但所有FAQ意图在对话中的处理方式都是相同的。对于每个FAQ意图,助手将根据提出的问题检索正确的响应。
您可以使用单个操作(例如utter_faq)而不是编写20个规则,通过将所有常见问题分组到一个名为“faq”的检索意图下,用单个规则处理所有常见问题。
单个action使用ResponseSelector的输出为用户询问的特定FAQ返回正确的响应。

3.创建规则(rules.yml)

您只需要为每个检索意图编写一个规则。在该检索意图下分组的所有意图都将以相同的方式处理。操作名称以utter_开头,以检索意图的名称结尾。编写回复常见问题和闲聊的规则:

rules:
  - rule: respond to FAQs
    steps:
    - intent: faq
    - action: utter_faq
  - rule: respond to chitchat
    steps:
    - intent: chitchat
    - action: utter_chitchat

操作utter_faqutter_chitchat将使用ResponseSelector的预测来返回实际的响应消息。

4.更新NLU训练数据(nlu.yml)

ResponseSelector的NLU训练示例与常规训练示例相同,只是它们的名称必须引用它们分组在下面的检索意图:

nlu:
  - intent: chitchat/ask_name
    examples: |
      - What is your name?
      - May I know your name?
      - What do people call you?
      - Do you have a name for yourself?
  - intent: chitchat/ask_weather
    examples: |
      - What's the weather like today?
      - Does it look sunny outside today?
      - Oh, do you mind checking the weather for me please?
      - I like sunny days in Berlin.

请确保更新domain文件以包含添加的chitchat意图:

intents:
# other intents
- chitchat

5.定义响应(domain.yml)

ResponseSelector的响应遵循与检索意图相同的命名约定。除此之外,它们还具有正常bot响应的所有特征。对于上面列出的聊天意图,我们的回答可能如下所示:

responses:
  utter_chitchat/ask_name:
  - image: "https://i.imgur.com/zTvA58i.jpeg"
    text: Hello, my name is Retrieval Bot.
  - text: I am called Retrieval Bot!
  utter_chitchat/ask_weather:
  - text: Oh, it does look sunny right now in Berlin.
    image: "https://i.imgur.com/vwv7aHN.png"
  - text: I am not sure of the whole week but I can see the sun is out today.

总结

一旦你做了以下内容,你可以训练你的机器人,并尝试一下!

  • RulePolicy添加到策略中,并将ResponseSelector添加到config.yml中的管道中
  • 至少添加一个用于响应常见问题解答/闲聊的规则
  • 为您的常见问题/闲聊意图添加示例
  • 为您的常见问题/闲聊意向添加响应
  • 更新domain中的意图

现在,你的助手应该能够正确、一致地回答常见问题或闲聊,即使这些感叹词是在你的助手帮助用户完成另一项任务时发生的。

参考

  1. Conversation Patterns
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值