2.4.2 配置流水线
Rasa NLU的配置文件使用的是YAML格式。下面是Rasa NLU配置的文件的样例。
大体上Rasa NLU的配置文件可以分为3个主要的键:recipe、language和pipeline。
recipe用于表示当前配置文件所用的格式。当前Rasa只支持一种格式,那就是default.v1。
language用于指定Rasa NLU将要处理的语言。Rasa作为一款通用的对话机器人框架,本身是语言无关(language agnostic)的,任何语言都能使用。但是组件本身很可能是语言相关的,某些组件只支持特定的语言,如分词器,特定的分词器只支持一种或多种语言,无法支持所有可能的语言。举例来说,Jieba分词器就不能正确地处理日文的分词。另外,一些组件对于不同的语言有不同的模型数据包,如spaCy。Rasa提供了language配置选项,方便组件对当前训练数据的语言进行判断。如果当前语言是不支持的语言,则可以通过抛出异常的方式通知开发者,让开发者更换其他语言的组件。如果组件支持该语言,但模型对于每种语言有不同的模型数据包,则可以在运行时利用language选项,加载相应的模型数据包。例如,在使用spaCy的时候,会默认载入和language同名的语言模型。其配置形式为language:<lang_code>,其中<lang_code>是ISO 639-1规范下的语言代码,英语的语言编码为en,中文的语言编码为zh。如果省略该字段,则默认为en。
pipeline是配置文件的核心,由列表构成(表现在YAML中就是以“-”开头的),列表的每一个元素都是一个字典(表现在YAML中类似于name:xxx),这些字典直接对应流水线组件。每个组件由字典的name键来指定,出现在字典中的其他键都是对这个组件的配置,运行时将传递给各个组件。
在上例中,共有6个组件。其中CountVectorsFeaturizer组件出现了2次(Rasa允许多个组件同时出现在一个流水线中),第2次出现的组件拥有3个配置项:analyzer:char_wb、min_ngram:1和max_ngram:4。