前言
最近接到了一个任务,要做遗传方面的医疗诊断对话系统。经过前期的调研最终决定使用rasa_nlu和rasa_core这套框架。由于rasa版本更新频繁,使用中踩了不少坑,而且自定义了一些component,都在此记录下。最终我们项目的效果如下:
系统能够实现收集患者信息,给出诊断结果和诊断建议,诊断结果和诊断建议是构建的知识图谱。
本文将具体介绍对话系统实现过程中的难点和解决方案。
demo的代码路径在:rasa_chatbot_cn,欢迎大家star。
需要申明下,此demo并不是公司真实项目。
rasa_nlu训练数据的生成
对话系统的冷启动都会遇到这样的问题,没有数据。这里我们会自己构建一些数据,具体代码在:chatito_gen_nlu_data,是使用chatito来生成rasa_nlu意图识别需要的数据,如下:
具体的用法可以参照官网和上面的demo代码,其实原理很简单就是做了排列组合这个事。产生的json数据用于rasa_nlu的训练,这个数据需要反反复复的修改和完善,如果你有数据那更好就不需要做这一步了。在产生训练数据的时候需要确定的nlu的意图和实体类别,需要在domain.yml文件中配置intents和entities,电信项目中的intents和entities如下:
intents:
- greet
- confirm
- goodbye
- thanks
- inform
- request_management
- request_search
- deny
- unknown_intent
entities:
- item
- time
- phone_number
- price
- package
## Recommand