Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自然语言处理测井_Java_Logging_Slf4j_Stanford Nlp - Fatal编程技术网

Java 自然语言处理测井

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、

首先,Java不是我常用的语言,所以我对它非常熟悉。我需要使用它为这个特定的项目,所以请耐心,如果我遗漏了任何相关信息,请要求它,我将很乐意提供它

我已经能够实现coreNLP,而且看起来它工作正常,但是产生了很多信息,如:

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;