Java 自然语言处理测井
首先,Java不是我常用的语言,所以我对它非常熟悉。我需要使用它为这个特定的项目,所以请耐心,如果我遗漏了任何相关信息,请要求它,我将很乐意提供它 我已经能够实现coreNLP,而且看起来它工作正常,但是产生了很多信息,如:Java 自然语言处理测井,java,logging,slf4j,stanford-nlp,Java,Logging,Slf4j,Stanford Nlp,首先,Java不是我常用的语言,所以我对它非常熟悉。我需要使用它为这个特定的项目,所以请耐心,如果我遗漏了任何相关信息,请要求它,我将很乐意提供它 我已经能够实现coreNLP,而且看起来它工作正常,但是产生了很多信息,如: ene 20, 2017 10:38:42 AM edu.stanford.nlp.process.PTBLexer next ADVERTENCIA: Untokenizable: 【 (U+3010, decimal: 12304) 经过一些研究(文档、google、
ene 20, 2017 10:38:42 AM edu.stanford.nlp.process.PTBLexer next
ADVERTENCIA: Untokenizable: 【 (U+3010, decimal: 12304)
经过一些研究(文档、google、这里的其他线程),我认为(对不起,我不知道如何确定)coreNLP正在我的类路径中找到slf4j api.jar
,并通过它进行日志记录
我可以使用JVM的哪些属性来设置要打印的消息的日志记录级别
另外,我可以在哪个
.properties
文件中设置它们?(我的项目的资源文件夹中已经有一个commons logging.properties
、一个simplelog.properties
和一个StanfordCoreNLP.properties
,用于设置其他包的属性)。如果我了解您的问题,您希望在程序执行时禁用所有StanfordNLP日志消息
您可以禁用日志消息Redwood
logging framework在斯坦福NLP中用作日志框架。首先,清除红木的默认配置(以显示日志消息),然后创建StanfordNLP管道
import edu.stanford.nlp.util.logging.RedwoodConfiguration;
RedwoodConfiguration.current().clear().apply();
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
希望能有所帮助。Om的答案很好,但还有两种可能有用的方法:
- 如果仅仅是来自标记器的这些警告让您感到恼火,您可以(在代码或StanfordCoreNLP.properties中)设置一个属性,使它们消失:
props.setProperty(“tokenize.options”,“unnotkenizable=nonecep”)代码>
- 如果slf4j在类路径上,那么默认情况下,我们自己的红杉记录器将确实通过slf4j进行日志记录。因此,您还可以使用slf4j设置日志记录级别
我创建了一个文件
src/simplelogger.properties
,行为org.slf4j.simplelogger.defaultLogLevel=warn
我可以通过将空白输出流设置为系统错误流来解决这个问题
System.setErr(new PrintStream(new BlankOutputStream())); // set blank error stream
// ... Add annotators ...
System.setErr(System.err); // Reset to default
随班是
public class BlankOutputStream extends OutputStream {
@Override
public void write(int b) throws IOException {
// Do nothing
}
}
Om的回答禁用所有日志记录。但是,如果仍希望记录错误,请使用:
RedwoodConfiguration.errorLevel().apply();
我还使用jdk日志记录而不是slf4j日志记录,以避免加载slfj依赖项,如下所示:
RedwoodConfiguration.javaUtilLogging().apply();
这两个选项可以一起使用,也可以按任何顺序使用。所需的进口是:
import edu.stanford.nlp.util.logging.RedwoodConfiguration;