gpt4 book ai didi

Java模式: engineering data flows for data mining tasks

转载 作者:行者123 更新时间:2023-12-02 00:34:52 26 4
gpt4 key购买 nike

我是一名数据挖掘者,因此,我花了很多时间以各种方式转换原始数据,以便通过预测模型进行消费。例如,读取某种格式的文件、标记化、语法化并投影为某种数字表示形式。多年来,我开发了一套丰富的方法来完成我能想到的大多数数据处理任务,但是除了最基本的方式之外,我没有一种很好的方法来配置这些组件 - 通常我所做的是很多对源代码中依赖于特定任务的特定方法的调用。我现在正在尝试将我的库重构为更好的东西,但我不太确定这是什么。

我当前的想法是,有一个函数对象列表,每个函数对象定义一些方法(例如,操作(...)),按顺序调用,每个方法要么通过引用处理某些数据流的内容,要么消耗前一个函数对象的输出。这很接近我想要的,但是由于输入和输出的数据类型会有所不同,因此使用泛型变得非常困难。要使用上面的示例,我想通过这个处理数据的“管道”传递一些内容,例如:

input: string filename
filename -> collection of strings
collection<string> -> (stemming, stopword removal) -> collection of strings
collection<string> -> (tokenize) -> collection of string arrays
collection<string[]> -> (gram-ify) -> augment individual token strings with n-grams -> collection of string arrays
collection<string[]> -> projection into numeric vectors -> collection< double[] >

这是一个简单的示例,但想象一下我有 100 个这样的组件,并且我想将它们添加到某些数据流中。这满足了我易于配置的要求 - 我可以轻松构建一个管道工厂来读取一些 yaml 文件并构建它。然而,组件的设计模式却困扰了我一段时间?合适的接口(interface)是什么样的?似乎在这里做事情的唯一简单方法是传递对象,本质上是消除对象(或者传递一些将对象作为成员变量的上下文对象),然后检查输入的兼容性,抛出运行时异常。这两种选择似乎都同样糟糕。然而,我觉得我已经接近一个非常好的和灵活的系统了。你们能帮我把它推过栅栏吗?

最佳答案

apache 基金会有一个名为 pipelines 的项目 https://commons.apache.org/sandbox/pipeline/ 。也许它会有用。我认为那里有更多基于管道的项目。浏览该网站可能会很有用。

关于Java模式: engineering data flows for data mining tasks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8074199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com