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

时间:2018-08-18 17:52:58

标签: nlp stanford-nlp

我的自由文本文件大小适中(〜1.5 GB),我希望使用OpenIE提取三元组,但目前存在一些问题。

我使用以下命令调用它:

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

第一个问题是,这占用了很多的内存。即使使用-mx50g允许50GB,我也会遇到Java内存问题。

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

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

1 个答案:

答案 0 :(得分:0)

首先,在什么定义下1.5G的“大小适中”!?

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

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

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

    的文件
    file1
    file2
    file3
    

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

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