是否可以从命令行加速使用CoreNLP批量处理文档,以便模型只加载一次?我想从这个过程中删除任何不必要的重复步骤。
我有320,000个文本文件,我正在尝试使用CoreNLP处理它们。所需的结果是320,000个已完成的XML文件结果。
要从一个文本文件到一个XML文件,我从命令行使用CoreNLP jar文件:
java -cp "*" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -props config.properties
-file %%~f -outputDirectory MyOutput -outputExtension .xml -replaceExtension`
这会加载模型并完成各种机器学习魔术。我面临的问题是当我尝试循环目录中的每个文本时,我创建了一个我估计将在44天内完成的过程。在过去的7天里,我确实在我的桌面上有一个命令提示符循环,我还没有完成。我从批处理脚本运行的循环:
for %%f in (Data\*.txt) do (
java -cp "*" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -props config.properties
-file %%~f -outputDirectory Output -outputExtension .xml -replaceExtension
)
我正在使用config.properties中指定的这些注释器:
annotators = tokenize, ssplit, pos, lemma, ner, parse, dcoref, sentiment
答案 0 :(得分:3)
我对Stanford CoreNLP一无所知,所以我搜索了它(你没有包含任何链接),在this page我找到了这个描述(在“解析文件并将输出保存为XML”下面):
如果要处理文件列表,请使用以下命令行:
java -cp 斯坦福大学corenlp-VV.jar:斯坦福大学corenlp-VV-models.jar:xom.jar:乔达-time.jar:jollyday.jar:ejml-VV.jar -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP [-props你的配置文件] -filelist一个包含你的文件列表的文件
其中-filelist参数指向其内容列出所有内容的文件 要处理的文件(每行一个)。
因此,如果您将所有文本文件的列表存储在列表文件中,我猜您可以更快地处理文件:
dir /B *.txt > list.lst
...然后在单次执行Stanford CoreNLP时在-filelist list.lst
参数中传递该列表。