关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。
想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。
2年前关闭。
Improve this question
作为计算语言学的学生,我经常做机器学习实验,我必须从各种不同的资源(如原始或带注释的文本语料库或句法树库)中准备训练数据。对于每项新任务和每项新实验,我都会编写程序(通常使用 Python,有时使用 Java)来提取我需要的特征和值,并将数据从一种格式转换为另一种格式。这通常会导致大量非常大的文件和大量处理它们的小程序,以获取某些机器学习框架的输入(例如 Weka 的 arff 文件)。
一个人需要非常好的组织来处理这个问题,并非常小心地编程,不要错过大量数据中的任何重要的特性、异常或错误。许多优秀软件设计的原则,如设计模式或重构范式,对这些任务没有多大用处,因为安全性、可维护性或可持续性等事情并不重要——一旦程序成功处理了数据,人们就不再需要它了。到目前为止,我什至不再担心以简单的程序方式在我的 Python 代码和程序中使用类或函数。下一个实验将需要具有独特特征和不同格式的不同数据集,因此它们的准备工作可能必须从头开始编程。到目前为止,我的经验是,将项目 80-90% 的时间花在准备训练数据的任务上并不罕见。仅仅考虑如何从一种数据格式转换到另一种数据格式,时间和天就过去了。有时,这会变得非常令人沮丧。
好吧,你可能猜到我有点夸张,甚至是故意的,但我相信你明白我想说的话。我的问题实际上是这样的:
是否有任何通用框架、架构、最佳实践来处理这些任务?给定最佳设计,我编写的代码有多少可以重用?
最佳答案
我发现自己主要使用来自 GNU coreutils 和 flex 的 textutils 进行语料库准备,将事物链接到简单的脚本中,至少当我需要做的准备工作对于正则表达式和琐碎过滤等来说足够简单时。
仍然可以使事物可重用,一般规则也适用于此。如果您在编程时不考虑最佳实践等,而只是按程序进行编程,恕我直言,在开始一个新项目时,您必须从头开始做所有事情,这真的不足为奇。
尽管格式要求会有很大差异,但仍有许多常见任务,即。标签剥离,标签翻译,选择,制表,一些琐碎的数据收集,例如标记的数量,句子等。对这些以高可重用性为目的的任务进行编程将会得到返回,即使一开始需要更长的时间。
关于machine-learning - 准备训练数据的通用框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2066005/