0

我有一个包含数千个带有注释的文档的语料库(保存在 JSerial Datastore 中)。现在我需要将它分成 3 个较小的,随机挑选。GATE 中最简单的方法是什么?

欢迎提供一段运行代码或详细指南!

4

1 回答 1

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

其工作方式是遍历文档并为要添加到的每个文档随机选择一个语料库。目标子语料库最终应该大致(但不一定完全)大小相同。

该脚本不会保存最终的子语料库,因此如果它搞砸了,您可以关闭它们,然后从原始数据存储中重新打开它们(空),修复并重新运行脚本。一旦您对最终结果感到满意,请依次右键单击左侧树中的每个子语料库并“保存到其数据存储区”以将其全部写入磁盘。

于 2013-05-21T17:40:56.310 回答