2013-05-21 19 views
0

我有一個包含註釋的數千個文檔的語料庫(保存在JSerial Datastore中)。現在我需要把它分成3個小的,隨機挑選。 GATE最簡單的方法是什麼?如何將一個龐大的語料庫隨機分爲3個?

一塊運行代碼或詳細指南將是最受歡迎的!

+0

這是一個語料庫在串行數據存儲? –

+0

@伊恩是的。 – Matt

回答

1

我會爲此使用Groovy控制檯(加載「Groovy」插件,然後從「工具」菜單啓動控制檯)。

下面的代碼假定

  • 你已經打開
  • 已裝入源語料庫GATE開發數據存儲,它的名字叫
  • 你已經創建了三個「fullCorpus」(或然許多你需要)其他空的語料庫並將它們保存(空)到相同的數據存儲區。這些將獲得分區
  • 你有沒有其他的語料庫在GATE開發商除了這四個
  • 開放你有沒有打開的文檔

然後你可以運行在Groovy的控制檯如下:

def rnd = new Random() 

def fullCorpus = corpora.find { it.name == 'fullCorpus' } 
def parts = corpora.findAll {it.name != 'fullCorpus' } 

fullCorpus.each { doc -> 
    def targetCorpus = parts[rnd.nextInt(parts.size())] 
    targetCorpus.add(doc) 
    targetCorpus.unloadDocument(doc) 
} 

return null 

這種方式的工作原理是遍歷文檔並隨機選擇一個語料庫,以便添加到每個文檔。目標子語料庫應該大致(但不一定完全)大小相同。

腳本不保存最終的子語料庫,所以如果它弄糟了,您可以關閉它們,然後從原始數據存儲中重新打開它們(空),修復並重新運行腳本。一旦您對最終結果感到滿意,在左側樹中依次右鍵單擊每個子語料庫,並「保存到其數據存儲區」將其全部寫入磁盤。

+0

非常感謝你Ian,這是Perfekt! – Matt

相關問題