Skip to content

qingxiaoye/rasa_learn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  • 说明

  • 推荐文章

  • 主要的步骤

    • 安装rasa
      • pip --default-timeout=500 install -U rasa
      • pip instal jieba
      • pip install mitie
    • rasa init --no-prompt
      • Creates a new project with example training data, actions, and config files.
    • 启动rasa
      • rasa shell
  • 文件说明

    • actions code for your custom actions
    • configs
      • config.yml   configuration of your NLU and Core models  训练NLU和Core模型配置文件:

      • credentials.yml   details for connecting to other services

      • domain.yml

        • 说明 domain.yml文件相当于AI助手的大脑,记录了系统所有的信息。
        • 包含意图intents、实体entities插槽slots、动作actions、回复templates
          • intents、entities在NLU训练样本中定义
          • slots对应于entities类型,只是表现形式不同。
        • 文件组成
          • intents 意图
          • entities 实体
            • entities,即实体,类似于输入文本中的关键字,需要在NLU样本中进行标注,
            • 然后Bot进行实体识别,并将其填充到Slot槽中,便于后续进行相关的业务操作
          • session_config
            • 一次会话的超时时间和超时后进行下一次会话的行为
            • carry_over_slots_to_new_session
              • 每次会话的超时时间,
              • 当设置为0时,会一直等待,直到用户输入
              • 如果在X秒没有输入任何东西会话,,则开始一轮新的会话。
            • carry_over_slots_to_new_session
              • 为True将上一次会话的Slot值拷贝过来
              • 为False舍弃上一次会话Slot的值
          • slots 插槽
            • 相当于机器人的内存(memory),它们以键值对的形式存在,用于存储用户输入时消息时比较重要的信息, 而这些信息将为Action的执行提供关键数据。
            • Slots的定义位于domain.yaml文件中,它们通常与Entities相对应, 即Entities有哪些,Slots就有哪些,并且Slots存储的值就是NLU模型提取的Entities的值。
            • 定义
              • 在domain.yml中定义,有多种格式
            • set(填充值)
              • Slots Initial
                • 在domain.yml中,通过initial_value设置初始值:initial_value: "human"
              • stories.md
                • 在stories.md文件添加一个包含-slot{"slot_name":"slot_value"}的story
              • buttons
                • 快捷键
              • actions
                • ① return [SlotSet("account_type", data["account_type"])]
                • ② 在stories.md里面添加一个包含-slot{"slot_name":"slot_value"}的story
                • ③ 在domain.yml中定义一个slot
            • get(获取值)
              • domain.yaml下templates
                • 在text里面,可以通过{slotname}的形式获取槽值。
              • Custom Action
                • account_type = tracker.get_slot('account_type')
          • actions 动作
            • 当Rasa NLU识别到用户输入Message的意图后
            • Rasa Core对话管理模块就会对其作出回应,而完成这个回应的模块就是action。
            • Rasa Core支持三种action,即default actions、utter actions以及 custom actions。
              •  DefaultAction:Rasa Core默认的一组actions,我们无需定义它们,直接可以story和domain中使用。包括以下三种action:
                • action_listen:监听action,Rasa Core在会话过程中通常会自动调用该action;
                • action_restart:重置状态,比初始化Slots(插槽)的值等;
                • action_default_fallback:当Rasa Core得到的置信度低于设置的阈值时,默认执行该action;
              • UtterAction:以utter_为开头,仅仅用于向用户发送一条消息作为反馈的一类actions。
                • 定义UtterAction:在domain.yml文件中的actions:字段定义以utter_为开头的action即可, 而具体回复内容将被定义在templates:部分,这个我们下面有专门讲解。
              • custom actions
                • CustomAction,即自定义action
          • templates 回答模板
      • endpoints.yml   details for connecting to channels like fb messenger

    • data
      • nlu.md:NLU模型训练样本数据:
      • stories.md
        • 说明 stories里面设计了对话场景
          • ## story 标题(描述作用没有任何意义)
          • * 意图:在nlu.md定义
          • - 动作:在domain.yml中定义
    • models
      • .tar.gz your initial model
  • 其他一些说明

    • form
      • 执行一个action需要同时填充多个slot时,可以使用FormAction来实现
      • FormAction会遍历监管的所有slot,当发现相关的slot未被填充时,就会向用户主动发起询问,直到所有slot被填充完毕,才会执行接下来的业务逻辑。
      • 步骤:
        • ① stories
          • *request_weather(intent)
            • weather_form为(form action )
            • form{"name": "weather_form"} 激活form
            • form{"name": null} 使form无效
        • ② domain
          • intents下添加“request_weather”
          • form 下添加“weather_form”
        • ③ 配置FormPolicy
          • name: FallbackPolicy
            • fallback_action_name: 'action_default_fallback'
        • ④ Form Action实现
  • train model

    • 同时训练NLU和Core模型
    • rasa train --config ./configs/config.yml --domain ./configs/domain.yml --data data/
      • 指定文件--data ./data/nlu/nlu_slot.md ./data/stories/stories_slot.md
      • 注意 data\total_word_feature_extractor_zh.dat 放在指定的目录下
  • 启动rasa

    • rasa run --port 5005 -m
      • 其他参数(可以不加)

        --endpoints configs/endpoints.yml --credentials configs/credentials.yml --debug

rasa train --config ./configs/config.yml --domain ./configs/domain_slot.yml --data ./data/nlu/nlu_slot.md ./data/stories/stories_slot.md

  • rasa run --port 9900 --debug

  • rasa run actions --port 9901 --actions actions --debug

Releases

No releases published

Packages

No packages published

Languages