是否可以加速使用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。這比使用默認選區分析器快得多。 –