我有一個包含註釋的數千個文檔的語料庫(保存在JSerial Datastore中)。現在我需要把它分成3個小的,隨機挑選。 GATE最簡單的方法是什麼?如何將一個龐大的語料庫隨機分爲3個?
一塊運行代碼或詳細指南將是最受歡迎的!
我有一個包含註釋的數千個文檔的語料庫(保存在JSerial Datastore中)。現在我需要把它分成3個小的,隨機挑選。 GATE最簡單的方法是什麼?如何將一個龐大的語料庫隨機分爲3個?
一塊運行代碼或詳細指南將是最受歡迎的!
我會爲此使用Groovy控制檯(加載「Groovy」插件,然後從「工具」菜單啓動控制檯)。
下面的代碼假定
然後你可以運行在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
這種方式的工作原理是遍歷文檔並隨機選擇一個語料庫,以便添加到每個文檔。目標子語料庫應該大致(但不一定完全)大小相同。
腳本不保存最終的子語料庫,所以如果它弄糟了,您可以關閉它們,然後從原始數據存儲中重新打開它們(空),修復並重新運行腳本。一旦您對最終結果感到滿意,在左側樹中依次右鍵單擊每個子語料庫,並「保存到其數據存儲區」將其全部寫入磁盤。
非常感謝你Ian,這是Perfekt! – Matt
這是一個語料庫在串行數據存儲? –
@伊恩是的。 – Matt