我有一个包含数千个带有注释的文档的语料库(保存在 JSerial Datastore 中)。现在我需要将它分成 3 个较小的,随机挑选。GATE 中最简单的方法是什么?
欢迎提供一段运行代码或详细指南!
我有一个包含数千个带有注释的文档的语料库(保存在 JSerial Datastore 中)。现在我需要将它分成 3 个较小的,随机挑选。GATE 中最简单的方法是什么?
欢迎提供一段运行代码或详细指南!
我会为此使用 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
其工作方式是遍历文档并为要添加到的每个文档随机选择一个语料库。目标子语料库最终应该大致(但不一定完全)大小相同。
该脚本不会保存最终的子语料库,因此如果它搞砸了,您可以关闭它们,然后从原始数据存储中重新打开它们(空),修复并重新运行脚本。一旦您对最终结果感到满意,请依次右键单击左侧树中的每个子语料库并“保存到其数据存储区”以将其全部写入磁盘。