当前位置:   article > 正文

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

rasa 构建faq问答


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

1.更新配置(config.yml)

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

policies:
# other policies
- name: RulePolicy
  • 1
  • 2
  • 3

接下来,在配置文件的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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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

pipeline:
# Other components
- name: ResponseSelector
  epochs: 100
  retrieval_intent: faq
- name: ResponseSelector
  epochs: 100
  retrieval_intent: chitchat
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

操作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.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

intents:
# other intents
- chitchat
  • 1
  • 2
  • 3

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.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

总结

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

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

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

参考

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

闽ICP备14008679号