是否可以加速使用CoreNLP从命令行批量处理文档,以便模型只加载一次?我想修改流程中不必要的重复步骤。Stanford 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
Yahtzee!现在速度如此之快 - 它的速度大约是每秒1个文件。这是一个很大的帮助 - 感谢您的贡献。 – ThisClark
是的,的确!加载系统使用的所有模型是一个缓慢的过程。如果您只需加载一次模型,然后处理大量文件,就会获得巨大收益。此外,如果您不需要选区分析或共同参与,则可以查看使用神经网络依赖关系解析器:http://nlp.stanford.edu/software/nndep.shtml。这比使用默认选区分析器快得多。 –