如何关闭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中查看我的答案