2017-01-20 4 views
2

Прежде всего, Java не является моим обычным языком, поэтому я достаточно прост в этом. Мне нужно использовать его для этого конкретного проекта, поэтому, пожалуйста, будьте терпеливы, и если я опустил какую-либо релевантную информацию, пожалуйста, спросите об этом, я буду рад предоставить его.Mute Stanford coreNLP протоколирование

я смог реализовать 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 в папке ресурсов моего проекта, чтобы установить свойства для других пакетов).

ответ

0

Если я понимаю вашу проблему, вы хотите отключить все сообщения журнала StanfordNLP во время выполнения программы.

Вы можете отключить сообщение регистрации. Redwood фреймворк регистрации используется в качестве основы регистрации в Stanford NLP. Сначала очистите конфигурацию по умолчанию Redwood (чтобы отобразить сообщение журнала), затем создайте конвейер StanfordNLP.

import edu.stanford.nlp.util.logging.RedwoodConfiguration; 
RedwoodConfiguration.current().clear().apply(); 
StanfordCoreNLP pipeline = new StanfordCoreNLP(props); 

Надеюсь, это поможет.

1

ответ Ома хорошо, а два других, возможно, полезные подходы:

  • Если это просто эти предупреждения от Tokenizer, которые раздражают вас, вы можете (в коде или в StanfordCoreNLP.properties) установить свойство поэтому они исчезают: props.setProperty("tokenize.options", "untokenizable=NoneKeep");.
  • Если slf4j находится на пути к классу, то по умолчанию наш собственный рекордер Redwoods будет регистрироваться через slf4j. Таким образом, вы можете установить уровень ведения журнала с помощью slf4j.
0

В соответствии с предложением Кристофера Мэннинга, я следовал этой ссылке How to configure slf4j-simple

Я создал файл src/simplelogger.properties с линией org.slf4j.simpleLogger.defaultLogLevel=warn.

0

Я могу решить эту проблему, установив пустой поток потока в поток системных ошибок.

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 
    } 

} 
Смежные вопросы