定义了模型将用于根据用户输入进行预测的组件和策略。recipe: 当前配置文件所用的格式,rasa仅支持default.v1格式。
recipe: default.v1
language: en
pipeline:
# 将由 Suggested Config 功能选择
policies:
- name: MemoizationPolicy
- name: TEDPolicy
max_history: 5
epochs: 10
1. pipline组件
组件构成NLU pipline并按顺序将用户输入处理成结构化输出。包含语言模型、分词器、特征提取、实体识别、意图分类、结构化输出。
组件具有以下特征:
- 组件的顺序至关重要
- 组件是可以替换的
- 有些组件时互斥的
- 有些组件可以同时使用
a. 语言模型
加载预训练的词向量模型。
(1) MitieNLP
MITIE 库需要一个语言模型文件,必须在配置中指定。
pipeline:
- name: "MitieNLP"
# 加载语言模型
model: "data/total_word_feature_extractor.dat"
可以使用mitie预训练自己的词向量。参考: 用 Rasa NLUpedia 制造自己的中文NLU 系统
(2) spaCyNLP
初始化 spaCy 结构。每个 spaCy 组件都依赖于此,需要放在pipline的开头。
pipeline:
- name: "SpacyNLP"
# 加载语言模型
model: "en_core_web_md"
# 当检索单词向量时,这将决定单词的大小写是否相关。' False'则是忽略大小写。
case_sensitive: False
参考: 安装 SpaCy
b. 分词器
组件 | 依赖 | 备注 |
---|---|---|
JiebaTokenizer | Jieba | |
MitieTokenizer | Mitie | 支持中文分词 |
spaCyTokenizer | spaCy |
- 还可以自定义分词器
pipeline:
- name: "JiebaTokenizer"
dictionary_path: "path/to/custom/dictionary/dir"
# 检查是否拆分意图的标志
"intent_tokenization_flag": False
# 意图分割的符号
"intent_split_symbol": "_"
# 正则表达式检测token
"token_pattern": None
c. 特征提取
组件 | 类型 | 特点 |
---|---|---|
MitieFeaturizer | 密集特征 | |
SpacyFeaturizer | 密集特征 | |
ConveRTFeaturizer | 密集特征 | 仅在英语会话语料库上进行训练 |
LanguageModelFeaturizer | 密集特征 | |
RegexFeaturizer | 稀疏特征 | 会读取训练数据中的正则表达式配置 |
CountVectorsFeaturizer | 稀疏特征 | 使用词袋模型 |
LexicalSyntacticFeaturizer | 稀疏特征 | 提供词法和语法特征 |
(1) MitieFeaturizer
pipeline:
- name: "MitieFeaturizer"
# 池化操作。'mean'和'max'
"pooling": "mean"
(2) SpacyFeaturizer
pipeline:
-