本文是对著名对话机器人开源框架Rasa NLU classifier架构的解析。Rasa是一套开源机器学习框架,用于构建基于上下文的AI小助手和聊天机器人。Rasa有两个主要模块:Rasa NLU 用于对用户消息内容的语义理解;Rasa Core 用于对话管理(Dialogue management)。本文主要针对Rasa NLU classifier 做总体上的说明。
本文更多关注算法,主要内容如下:
- Rasa NLU Classifier架构
- 主流技术支持情况
Rasa NLU Classifier架构
285
主流技术支持情况
主流技术 | 是否支持 | 支持模块 | 说明 |
---|---|---|---|
Huggingface Transformer | 部分 | DIETClassifier | 见2.1.3.2 |
Wide&Deep | 是 | DIETClassifier | 稀疏和稠密特征融合 |
transformer | 是 | DIETClassifier | transformer层数可配置 |
DNN | 是 | DIETClassifier | DNN层数固定不可配置 |
SVM | 是 | SKLearnClassifier | 支持网络搜索优化配置 |
其他传统机器学习模型 | 是 | SKLearnClassifier | SKLearn支持的所有模型 |
Mitie Linear SVM | 是 | MitieClassifier | 使用自有的稀疏线性核 |
字符串匹配 | 是 | KeywordClassifier | 不是关键词而是样例句完全匹配 |
CNN | 否 | 无 | DIET只支持在预训练模型后添加transformer层,现有rasa无法搭建诸如textCNN, bert+bilsm+crf这类经典模型 |
单双向RNN ( LSTM, GRU ) | 否 | 无 | |
GCN | 否 | 无 | 图卷积神经网络 |
问题:pipeline中可以叠加使用多个classifier吗(除fallback)?如果被KeywordClassifier模块命中,可不可以直接跳过其他 classifier)
回答:单个pipeline中classifier可以叠加,例如KeywordIntentClassifier可以添加在主classifier后,这样Keyword的结果将覆盖classifier结果。参考资料