我有一个程序,定期接收包含多行内容的文件,我逐行处理。为了处理这些行,我开发了一些文本规范化器来转换它们。例如,一种规范化可能是去除停用词、语法纠正、删除网址等。
针对给定文件使用的规范化器必须动态决定,以便我可以更改它们的数量并改变其顺序。对于某些文件,我只需要去除停用词,但其他文件需要更多的规范化器,并且在某些情况下我必须两次应用其中一个规范化器。
我最初组织代码的想法是应用“责任链”模式。在这种情况下,我将拥有如下内容:
如图所示,在顺序中使用了三个规范化器,然后再次使用第一个规范化器。这仅是一个示例。在其他情况下,我可能会有7个不重复的规范化器,而在另一种情况下,第二个规范化器将在第三个规范化器之前执行。因此,主要思想是拥有多个规范化器,并定义一个链路,其中我可以重复。
我对这种方法的问题在于,链中的所有成员始终被执行(无拒绝条件),而且我必须处理成千上万行数据,所以我不想花费大量时间迭代链。
因此,我的问题是,如何实现我所需的功能,使我有机会添加新的规范化器而无需重写代码,并保持高速的链迭代速度?
如果您需要更多信息,请告诉我,我将编辑问题。
针对给定文件使用的规范化器必须动态决定,以便我可以更改它们的数量并改变其顺序。对于某些文件,我只需要去除停用词,但其他文件需要更多的规范化器,并且在某些情况下我必须两次应用其中一个规范化器。
我最初组织代码的想法是应用“责任链”模式。在这种情况下,我将拥有如下内容:
如图所示,在顺序中使用了三个规范化器,然后再次使用第一个规范化器。这仅是一个示例。在其他情况下,我可能会有7个不重复的规范化器,而在另一种情况下,第二个规范化器将在第三个规范化器之前执行。因此,主要思想是拥有多个规范化器,并定义一个链路,其中我可以重复。
我对这种方法的问题在于,链中的所有成员始终被执行(无拒绝条件),而且我必须处理成千上万行数据,所以我不想花费大量时间迭代链。
因此,我的问题是,如何实现我所需的功能,使我有机会添加新的规范化器而无需重写代码,并保持高速的链迭代速度?
如果您需要更多信息,请告诉我,我将编辑问题。