• Rasa 使用ResponseSelector实现FAQ和闲聊


    learn from https://github.com/Chinese-NLP-book/rasa_chinese_book_code

    FAQ:常见问题解答

    1. 定义用户问题

    ResponseSelector 训练数据中的 意图 命名格式跟普通的意图 格式不一样:

    • ResponseSelector 需要采用 group/intent 格式(group称为 检索意图)
    • 普通意图 命名不能包含/字符

    示例

    nlu:
      - intent: faq/work_location
        examples: |
          - 校园招聘录取的应届生主要工作地点在哪里?
    
    • 1
    • 2
    • 3
    • 4

    2. 定义问题答案

    ResponseSelector 定义 responses 作为 intent 问题答案

    • 约定:intent 名字假设为 x/y, responses 名字为 utter_x/y
    responses:
      utter_faq/work_location:
        - text: 招聘信息中包含各职位的工作地点内容,请参考各职位内容的详细介绍。
    
    • 1
    • 2
    • 3

    3. 训练 Rasa

    • ResponseSelector 加入 pipeline
    pipeline:
      - name: xxx特征提取组件
      - name: xxx意图分类组件
      - name: "ResponseSelector"
    
    • 1
    • 2
    • 3
    • 4
    • 启用 RulePolicy,自动进行问题分类,返回对应答案
    policies:
      - name: MemoizationPolicy
      - name: TEDPolicy
      - name: RulePolicy
    
    • 1
    • 2
    • 3
    • 4
    • rules 设置问题分类映射到动作
    rules:
      - rule: respond to FAQs
        steps:
          - intent: faq
          - action: utter_faq
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4. FAQ机器人

    功能分类:业务无关(打招呼)、业务相关(招聘)

    tree

    .
    ├── code_snippets_used_in_book
    │   └── webclient.html
    ├── config.yml
    ├── credentials.yml
    ├── data
    │   ├── nlu.yml
    │   ├── responses.yml
    │   ├── rules.yml
    │   └── stories.yml
    ├── domain.yml
    ├── endpoints.yml
    ├── github-markdown.css
    ├── index.html
    ├── __init__.py
    ├── media
    │   └── demo.png
    ├── README.md
    ├── showdown.min.js
    └── webchat.js
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    nlu.yml

    version: "3.0"
    nlu:
      - intent: goodbye
        examples: |
          - 拜拜
          - 再见
          - 拜
          - 退出
          - 结束
      - intent: greet
        examples: |
          - 你好
          - 您好
          - hello
          - hi
          - 喂
          - 在么
      - intent: faq/notes
        examples: |
          - 应聘ACME校园招聘职位的注意事项?
      - intent: faq/work_location
        examples: |
          - 校园招聘录取的应届生主要工作地点在哪里?
      - intent: faq/max_job_request
        examples: |
          - 最多申请几个职位?
      - intent: faq/audit
        examples: |
          - 各阶段审核说明
      - intent: faq/write_exam_participate
        examples: |
          - 怎样参加笔试?
      - intent: faq/write_exam_location
        examples: |
          - 笔试考试地点如何安排?
      - intent: faq/write_exam_again
        examples: |
          - 笔试只安排一次吗?我笔试当天没有参加,是否还有再次笔试的机会?
      - intent: faq/write_exam_with-out-offer
        examples: |
          - 如果我没有收到笔试通知,但我很想进入ACME,能否直接进入考场参加考试?
      - intent: faq/interview_arrangement
        examples: |
          - 面试什么时候开始?会提前多少天通知面试安排?
      - intent: faq/interview_times
        examples: |
          - 一般会安排几次面试?
      - intent: faq/interview_from
        examples: |
          - 面试的形式是怎样的?是单独面试还是小组面试?
      - intent: faq/interview_clothing
        examples: |
          - 对面试的服装有什么具体的要求?
      - intent: faq/interview_paperwork
        examples: |
          - 面试时需要携带什么资料?
      - intent: faq/interview_result
        examples: |
          - 如何查询面试结果?
    
    
    • 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
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    responses.yml

    version: "3.0"
    responses:
      utter_faq/notes:
        - text: 1、登在校园招聘板块内的职位信息才适用于应届毕业生招聘,请所有的应届毕业生去校园招聘的版块寻找您感兴趣的职位。2、列出的每个职位的要求是该职位的最低要求,为了保证您应聘的成功率,希望您严格按照职位的要求考虑您的选择。3、提交成功后,在招聘结束前,您将不能修改或再次提交简历,因此,请于仔细确认填写信息后提交简历。
      utter_faq/work_location:
        - text: 招聘信息中包含各职位的工作地点内容,请参考各职位内容的详细介绍。
      utter_faq/max_job_request:
        - text: 对于校园招聘,最多申请2个职位。
      utter_faq/audit:
        - text: 1、简历审核:应聘者需要通过ACME网站,填写并提交个人简历,ACME的招聘专员将对收取的简历进行认真的审查和筛选。了解应聘者的情况,并筛选出符合职位要求的简历,同时确认简历记载内容是否属实。2、笔试审核:ACME技术类测试主要针对应聘者的专业技能进行检查和评价。3、面试审核:经过实施评价应聘者基本素质的第一阶段面试和评价专业知识的第二阶段面试,对应聘者是否符合ACME人才理念以及应聘者的工作能力做出客观的综合评价,从而决定是否录用该应聘者。
      utter_faq/write_exam_participate:
        - text: 通过简历审核的应聘者,我们将采用短信、e-mail、ACME公告栏以及电话通知的方式告知您
      utter_faq/write_exam_location:
        - text: 笔试地点将根据您在简历中填写的学校所在城市进行统筹安排
      utter_faq/write_exam_again:
        - text: 校园招聘的大规模的笔试仅安排一次,请收到笔试通知的同学认真对待笔试机会。
      utter_faq/write_exam_with-out-offer:
        - text: 由于我们是按照严格的招聘流程筛选出的笔试名单,所以非常抱歉,对于没有收到笔试通知的同学,就不能参加本次校园招聘的笔试。
      utter_faq/interview_arrangement:
        - text: 不同的职位面试进度安排不同,除特殊安排外,笔试结束一周左右会安排面试。
      utter_faq/interview_times:
        - text: 一般情况下,业务部门和人力资源部会同时或者分别安排一次面试。个别特殊职位需要2次及以上的面试。
      utter_faq/interview_from:
        - text: 面试一般以单独面试的形式进行,但根据各公司的面试安排,也会进行小组面试。
      utter_faq/interview_clothing:
        - text: 面试着装没有统一要求,但建议您尽量穿着较为正式的职业装参加。
      utter_faq/interview_paperwork:
        - text: 面试时,请您携带可以证明您身份的有效证件,有特殊要求的职位请携带好能证明您专业水平的证书原件以及复印件。
      utter_faq/interview_result:
        - text: 我们会通过邮件或电话的形式,通知您面试结果。
    
    
    • 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

    stories.yml

    version: "3.0"
    stories:
      - story: greet
        steps:
          - intent: greet
          - action: utter_greet
      - story: say goodbye
        steps:
          - intent: goodbye
          - action: utter_goodbye
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    rules.yml

    version: "3.0"
    rules:
      - rule: respond to FAQs
        steps:
          - intent: faq
          - action: utter_faq
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    domain.yml

    version: "3.0"
    
    session_config:
      session_expiration_time: 60
      carry_over_slots_to_new_session: true
    intents:
      - goodbye
      - greet
      - faq
    responses:
      utter_greet:
        - text: 你好,我是 Silly,我是一个基于 Rasa 的 FAQ 机器人
      utter_goodbye:
        - text: 再见!
      utter_default:
        - text: 系统不明白您说的话
    actions:
      - utter_goodbye
      - utter_greet
      - utter_default
      - respond_faq
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    config.yml

    recipe: default.v1
    language: "zh"
    
    pipeline:
      - name: JiebaTokenizer
      - name: LanguageModelFeaturizer
        model_name: "bert"
        model_weights: "bert-base-chinese"
      - name: "DIETClassifier"
        epochs: 100
        tensorboard_log_directory: ./log
        learning_rate: 0.001
      - name: "ResponseSelector"
    
    policies:
      - name: MemoizationPolicy
      - name: TEDPolicy
      - name: RulePolicy
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    endpoints.yml

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

    客户端/服务端

    html、 js 等文件

    测试

    • 训练 rasa train

    • 运行服务 rasa run --cors "*" --cors "*" 解决跨域问题

    • Chapter04> python -m http.server

    • 在浏览器里 打开 index.html
      在这里插入图片描述

  • 相关阅读:
    java计算机毕业设计小型健身俱乐部网站源码+系统+数据库+lw文档+mybatis+运行部署
    【Prometheus】监控Kubernetes
    腾讯开源混元DiT文生图模型,消费级单卡可推理
    原型模式(Clone)——创建型模式
    备战十一届大唐杯国赛预选赛
    JavaScript 68 JavaScript Browser BOM 68.1 JavaScript Window - 浏览器对象模型
    站长号平台新版友情链接交换上线
    三维变换与投影-计算机图形学
    Python数据分析案例04——超高维数据的降维(随机森林)、特征工程
    sql 11
  • 原文地址:https://blog.csdn.net/qq_21201267/article/details/128090874