作爲計算語言學的學生,我經常進行機器學習實驗,我必須從各種不同的資源(如原始或註釋文本語料庫或句法樹庫)中準備訓練數據。對於每個新任務和每個新實驗,我編寫程序(通常使用Python,有時使用Java)以提取我需要的特性和值,並將數據從一種格式轉換爲另一種格式。這通常會導致非常大量的非常大的文件和大量的小程序來處理它們以獲取某些機器學習框架的輸入(如Weka的arff文件)。準備培訓數據的一般框架?
一個需要組織得非常好的組織來處理這個問題,並小心謹慎,不要錯過任何重要的特性,異常情況或錯誤。很多良好的軟件設計原則(如設計模式或重構範式)對於這些任務來說都沒有太大的用處,因爲諸如安全性,可維護性或可持續性等事情並不重要 - 一旦程序成功處理數據,就不再需要它了。到目前爲止,我甚至停止了在我的Python代碼和程序中以簡單的程序方式使用類或函數的麻煩。下一個實驗將需要具有獨特特徵和不同格式的不同數據集,以便無論如何都需要從頭開始編寫它們的準備工作。我目前的經驗是,將項目時間的80-90%用於準備培訓數據的任務並不少見。時間和日子只是在考慮如何從一種數據格式轉換到另一種數據格式。有時候,這會變得非常令人沮喪。
那麼,你可能猜測我有點誇張,甚至有目的,但我很積極,你明白我想說什麼。我的問題實際上是這樣的:
是否有任何通用框架,體系結構和接近這些任務的最佳實踐?考慮到優化設計,我寫的多少代碼可以重複使用?
根據我畢業的經驗,我不認爲這是誇張的。 :P – ealdent 2010-01-15 13:19:14