stanfordnlp/CoreNLP · info

SUTime currently does not support Chinese. Ignore property…

Error message

SUTime currently does not support Chinese. Ignore property ner.useSUTime.

What it means

ChineseNumberSequenceClassifier's constructor warns that SUTime (temporal expression extraction) has no Chinese version. If the ner.useSUTime property is true, it cannot be honored: timexExtractor is set to null and temporal tagging is silently skipped for Chinese text.

Solutions

  1. Set ner.useSUTime=false in the Properties used to build the Chinese NER pipeline.
  2. If temporal tagging of Chinese is required, use a separate Chinese time-expression tool or your own extractor.
  3. Strip English-derived SUTime properties when copying config across languages.

Example fix

// before
props.setProperty("ner.useSUTime", "true");
// after
props.setProperty("ner.useSUTime", "false"); // SUTime unsupported for Chinese
Defensive patterns

Strategy: validation

Validate before calling

if ("zh".equals(lang) && Boolean.parseBoolean(props.getProperty("ner.useSUTime", "false"))) {
  props.setProperty("ner.useSUTime", "false");
}

Prevention

When it happens

Trigger: Constructing ChineseNumberSequenceClassifier (directly or via a Chinese NER pipeline) with useSUTime=true, e.g. properties containing ner.useSUTime=true while loading the Chinese NER model.

Common situations: Reusing an English NER Properties template (which enables SUTime) for the Chinese model; pipeline defaults where useSUTime wasn't disabled for Chinese.

Related errors


AI-assisted analysis of stanfordnlp/CoreNLP@1b7edd19c4 (2026-09-10). Data as JSON: /api/errors/86d207d6d236b5d7. Report an issue: GitHub.

Appendix: source

Thrown at src/edu/stanford/nlp/ie/regexp/ChineseNumberSequenceClassifier.java:63

  public static final String USE_SUTIME_PROPERTY_BASE = "useSUTime";
  public static final String SUTIME_PROPERTY = "sutime";

  private final TimeExpressionExtractor timexExtractor;

  public ChineseNumberSequenceClassifier() {
    this(new Properties(), USE_SUTIME_DEFAULT, new Properties());
  }

  public ChineseNumberSequenceClassifier(boolean useSUTime) {
    this(new Properties(), useSUTime, new Properties());
  }

  public ChineseNumberSequenceClassifier(Properties props, boolean useSUTime, Properties sutimeProps) {
    super(props);
    this.useSUTime = useSUTime;
    if(this.useSUTime) {
      // TODO: Need a Chinese version of SUTime
      log.warn("SUTime currently does not support Chinese. Ignore property ner.useSUTime.");
    }
    this.timexExtractor = null;
  }

  // All the tags we need
  public static final String NUMBER_TAG = "NUMBER";
  public static final String DATE_TAG = "DATE";
  public static final String TIME_TAG = "TIME";
  public static final String MONEY_TAG = "MONEY";
  public static final String ORDINAL_TAG = "ORDINAL";
  public static final String PERCENT_TAG = "PERCENT";

  // Patterns we need
  public static final Pattern CURRENCY_WORD_PATTERN =
      Pattern.compile("元|刀|(?:美|欧|澳|加|日|韩)元|英?镑|法郎|卢比|卢布|马克|先令|克朗|泰?铢|(?:越南)?盾|美分|便士|块钱|毛钱|角钱");
  // In theory 块 钱 should be separated by segmenter, but just in case segmenter fails
  // TODO(yuhao): Need to add support for 块 钱, 毛 钱, 角 钱, 角, 五 块 二
  public static final Pattern PERCENT_WORD_PATTERN1 = Pattern.compile("(?:百分之|千分之).+");

View on GitHub (pinned to 1b7edd19c4)