【发布时间】:2011-01-05 04:17:13
【问题描述】:
作为计算语言学的学生,我经常进行机器学习实验,我必须从各种不同的资源(例如原始或带注释的文本语料库或句法树库)中准备训练数据。对于每一项新任务和每一项新实验,我都会编写程序(通常使用 Python,有时使用 Java)来提取我需要的特征和值,并将数据从一种格式转换为另一种格式。这通常会导致大量非常大的文件和大量处理它们的小程序,以获取某些机器学习框架的输入(例如 Weka 的 arff 文件)。
需要非常有条理地组织来处理这个问题,并且非常小心地进行编程,以免错过大量数据中的任何重要特性、异常或错误。许多好的软件设计原则,如设计模式或重构范式,对这些任务没有多大用处,因为安全性、可维护性或可持续性等事情并不重要——一旦程序成功处理了数据,就不再需要它了。到目前为止,我什至不再为在我的 Python 代码和程序中以简单的程序方式使用类或函数而烦恼。下一个实验将需要具有独特特征和不同格式的不同数据集,因此它们的准备工作可能不得不从头开始编程。到目前为止,我的经验是,将项目 80-90% 的时间花在准备训练数据的任务上并不罕见。只考虑如何从一种数据格式转换为另一种数据格式,就这样一天天过去了。有时,这会变得非常令人沮丧。
嗯,你可能猜到我有点夸张,甚至是故意的,但我很肯定你明白我想说什么。实际上,我的问题是这样的:
是否有任何通用框架、架构和最佳实践来处理这些任务?在优化设计的情况下,我可以期望我编写的代码有多少是可重用的?
【问题讨论】:
-
根据我在研究生院的经历,我认为这一点也不夸张。 :P
标签: machine-learning nlp code-reuse training-data