我的自由文本文件大小适中(〜1.5 GB),我希望使用OpenIE提取三元组,但目前存在一些问题。
我使用以下命令调用它:
java -mx2g -cp "*" edu.stanford.nlp.naturalli.OpenIE ./my_file.txt
第一个问题是,这占用了很多的内存。即使使用-mx50g
允许50GB,我也会遇到Java内存问题。
第二个问题是它似乎没有将输出写入文件,而是仅将其转储到控制台。将结果保存到文件中的唯一方法是将输出重定向到文件中。
这是我第一次使用该程序包,所以我不确定是否只是在做一些愚蠢的事情。此内存使用情况正确吗,如何将结果保存到文件中?
答案 0 :(得分:0)
首先,在什么定义下1.5G的“大小适中”!?
但更重要的是,我建议(1)将文件分解为较小的文档,然后(2)使用-filelist
选项对较小的文档进行注释。然后,您可以(3)使用-output
选项将输出重定向到文件。更详细地:
最简单的分割文件的方法是使用split
命令。如果您想保持句子或段落的边界,建议您通过CoreNLP的标记器运行文档并进行拆分(将注释器设置为tokenize,ssplit
)。这将需要比整个管道更少的空间,尽管对于1.5GB的文件可能仍需要几十GB的空间。
如果构建的文件列出了要注释的所有文件(每行一个),则可以通过-filelist
选项将它们传递给OpenIE。例如,内容为:
file1
file2
file3
将使用OpenIE提取注释file1,file2和file3。
您可以使用-output
选项将输出元组保存到文件中。您还可以使用-format
指定所需的格式:default
,ollie
,reverb
或qa_srl
中的一个。提供最多信息但也最占用空间的格式是reverb
。如果您希望提取的一组最小化内容尽可能跨大主题和对象,请使用qa_srl
。