首页 > 解决方案 > 使用 OpenIE 从命令行中提取三元组

问题描述

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

我使用以下命令调用它:

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

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

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

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

标签: nlpstanford-nlp

解决方案


那么,首先,1.5G“适中”的定义是什么!?

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

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

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

    file1
    file2
    file3
    

    将使用 OpenIE 提取注释 file1、file2 和 file3。

  3. -output您可以使用该选项将输出元组保存到文件中。您还可以使用 、 、 或 中的一种来指定您想要的-format格式。提供最多信息(但也是最占用空间)的格式是. 如果您想要跨越尽可能大的主题+对象的最小提取集,请使用.defaultolliereverbqa_srlreverbqa_srl


推荐阅读