Pipeline模式为管道模式,也称为流水线模式。通过预先设定好的一系列的阶段来处理输入的数据,每个阶段的输出即是下一个阶段的输入。
具体内容是,整个算法流程是一个pipeline,流程中每个步骤都是一个独立的模块,用一个数据结构D存储所有数据,从初始模块流动到最后一个模块。每一对前后模块仅通过D做数据的关联,而没有其他的数据耦合。甚至可以把后面的模块做成一个服务,供前模块调用。
pipeline架构的优点有:
- 各个模块可以同时开发,互不干扰。
- 各个模块可以独立做评测和错误分析。
- 可以用效果好的新模块替换旧模块,进行系统升级。
- 可以把人工标注的答案替换某一个模块,然后看整个算法效果的提升,这种方法叫ceiling analysis。哪个模块被替换后效果提升多,就表示哪个模块潜力大。
示例:
- 大写转小写
- 去除字符串头部和尾部的回车字符
- 将字符串里的 - 字符替换成空格
#大写转小写
def lower(string_input):
return string_input.lower()
#去除空格
def remove_(string_input):
return string_input.replace("-", " ")
#去除回车字符
def strip(string_input):
return string_input.strip("\n")
fastcore这个库提供了更好的封装和支持,可以更方便的写出pipeline
from fastcore.transform import Pipeline
input_string = "IT-is-a-test\n"
pipe = Pipeline([lower, remove_, strip])
output = pipe(input_string)
print(output)