繁体   English   中英

如何关闭Stanford CoreNLP Redwood日志记录?

[英]How to shutdown Stanford CoreNLP Redwood logging?

如何关闭Stanford CoreNLP消息(请参阅文章结尾)? 我首先尝试在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教程PDF。

网址在此页面中: 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消息。

希望能帮助到你!

可以通过将空白Output Stream设置为System error stream来解决。

请在类似的线程中查看我的答案https://stackoverflow.com/a/48743963/1303210

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM