使用 OpenIE 从命令行提取三元组



我有一个大小适中的自由文本文件(~1.5 GB(,我希望使用 OpenIE 提取三元组,但我目前遇到了一些问题。

我使用以下命令调用它:

java -mx2g  -cp "*" edu.stanford.nlp.naturalli.OpenIE ./my_file.txt

第一个问题是这会占用大量内存。即使我允许使用 50GB 使用-mx50g,我也会遇到 java 内存问题。

第二个问题是它似乎没有将输出写入文件,它只是将其转储到控制台。将结果放入文件的唯一方法是将输出重定向到文件中。

这是我第一次使用该软件包,所以我不确定我是否只是在做一些愚蠢的事情。此内存使用情况是否正确,如何将结果保存到文件中?

那么,首先,在什么定义下1.5G是"适度大小"!?

但更重要的是,我建议 (1( 将文件分解为较小的文档,然后 (2( 使用-filelist选项注释较小的文档。然后,您可以使用 (3( 使用-output选项将输出重定向到文件。更详细地说:

  1. 拆分文件的最简单方法是使用split命令之类的内容。如果你想保持句子或段落的边界,我建议通过 CoreNLP 的分词器运行文档并以这种方式拆分(将注释器设置为tokenize,ssplit(。这将比整个管道需要更少的空间,尽管对于 1.5GB 的文件来说可能仍然只有几十 GB。

  2. 如果您构建一个文件,列出
  3. 要注释的所有文件,每行一个,则可以通过-filelist选项将它们传递给OpenIE。例如,包含以下内容的文件:

    file1
    file2
    file3
    

    将使用 OpenIE 提取注释文件 1、文件 2 和文件3。

  4. 您可以使用-output选项将输出元组保存到文件中。您还可以使用-format指定所需的格式:defaultolliereverbqa_srl之一。提供最多信息的格式 - 但也是最占用空间的 - 是reverb。如果需要跨越尽可能大的主题+对象的最小提取集,请使用qa_srl

最新更新