如何关闭Stanford CoreNLP Redwood日志记录?
如何关闭Stanford CoreNLP消息(见post末尾)? 我首先尝试在log4j.properties中设置log4j.category.edu.stanford=OFF
,但这没有帮助,所以我发现它显然使用了一个名为“Redwood”的非标准日志框架。 根据http://nlp.stanford.edu/nlp/javadoc/javanlp/
有一个文档,但它受密码保护。 我尝试过RedwoodConfiguration.empty().apply();
但这也无济于事。
记录消息:
Adding annotator tokenize Adding annotator ssplit Adding annotator pos Loading default properties from tagger edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger Reading POS tagger model from edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger ... done [1,2 sec].
PS: Redwood.hideAllChannels();
也行不通。 然而,以下内容会抑制我自己的日志记录声明(但不是来自StanfordCoreNLP的声明):
RedwoodConfiguration.empty().apply(); Redwood.log("test redwood");
解决方案好的,StevenC是对的,毕竟它不是记录语句,但是默认的初始化消息被写入stderr,我没想到看到Stanford拥有它自己的日志框架然后不使用它:-)
无论如何,他的提示让我发现了这个解决方案:
// shut off the annoying intialization messages RedwoodConfiguration.empty().captureStderr().apply(); nlp = new StanfordCoreNLP(myproperties); // enable stderr again RedwoodConfiguration.current().clear().apply();
您还可以在Redwood项目中的GitHub上找到Redwood Tutorial PDF。
url在此页面: https : //github.com/gangeli/redwood/blob/master/doc/tutorial.pdf
(显然,我不能告诉你文件是否相同,’因为我不知道用户名/密码:-))
更进一步,我将Tutorial PDF链接到幻灯片放映。 如果你想要属性文件的文档,我能找到的最好的是RedwoodConfiguration.parse
方法的javadocs。 事实上,其他类javadoc可能是你会发现的最好的文档…没有阅读源代码。
警告……有迹象表明GitHub上独立的Redwood代码可能与NLP代码库中的版本不同。
StanfordNLP使用Redwood
作为日志记录的日志框架。 您必须在初始化StanfordNLP管道之前禁用它。
import edu.stanford.nlp.util.logging.RedwoodConfiguration; RedwoodConfiguration.current().clear().apply(); StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
这个对我有用。 在运行程序时,它不会在每一行显示冗长的INFO消息。
希望能帮助到你!
这可以通过将空白输出流设置为系统错误流来解决。
请在类似的主题https://stackoverflow.com/a/48743963/1303210中查看我的答案