0

注釈付きの何千ものドキュメントのコーパス (JSerial Datastore に保持) があります。次に、ランダムに選択して、それを 3 つの小さなものに分割する必要があります。GATEで最も簡単な方法は何ですか?

実行中のコードや詳細なガイドは大歓迎です!

4

1 に答える 1

1

これには Groovy コンソールを使用します (「Groovy」プラグインをロードし、[ツール] メニューからコンソールを起動します)。

次のコードは、

  • GATE 開発者でデータストアを開いている
  • ソースコーパスを読み込んでおり、その名前は「fullCorpus」です
  • 他の空のコーパスを 3 つ (または必要なだけ) 作成し、同じデータストアに (空で) 保存しました。これらはパーティションを受け取ります
  • これらの 4 つ以外に、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 に答える