stanfordnlp/CoreNLP · error · RuntimeException

These features are no longer supported. The paths and data…

Error message

These features are no longer supported.  The paths and data files associated with this material are out of date, and the classes used are not thread-safe.  Those problems would need to be fixed to use this feature.

What it means

The chinesedictionaryfeatures(...) extractor spec is explicitly disabled: the data paths it relied on are obsolete and the implementing classes were not thread-safe. Requesting it throws this RuntimeException unconditionally. It is a deliberate removal, not a configuration problem.

Solutions

  1. Remove the chinesedictionaryfeatures(...) entry from your extractors/rareExtractors configuration
  2. Replace the feature with ExtractorCtb or equivalent currently supported Chinese features if available in your version
  3. Check the current version's ExtractorFramesRare.java for the supported feature list and pick supported alternatives
  4. Pin an old Stanford POS tagger version only if the feature is absolutely required (not recommended: paths are stale)

Example fix

// before
String rareExtractors = "...,chinesedictionaryfeatures(/path/ctb),..."; // throws
// after
String rareExtractors = "...,unicodeshapeconjunction(-1,1),..."; // supported feature
Defensive patterns

Strategy: validation

Validate before calling

if (spec.startsWith("chinesedictionaryfeatures(")) {
  throw new IllegalArgumentException("chinesedictionaryfeatures is removed in this tagger version; use supported Chinese features instead");
}

Try / catch

try {
  ExtractorFramesRare.getExtractorFramesRare(spec);
} catch (RuntimeException e) {
  if (e.getMessage() != null && e.getMessage().startsWith("These features are no longer supported.")) {
    // strip the feature from the config and continue without it
  } else { throw e; }
}

Prevention

When it happens

Trigger: Including 'chinesedictionaryfeatures(...)' in the tagger's rare extractors config string; using an old training properties file from before the feature was removed.

Common situations: Reusing legacy POS tagger training props from old CTB experiments; following an outdated tutorial or paper appendix that lists the feature.

Understand the failure class

Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.

Related errors


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

Appendix: source

Thrown at src/edu/stanford/nlp/tagger/maxent/ExtractorFramesRare.java:302

        String wsc = Extractor.getParenthesizedArg(arg, 3);
        if (wsc == null) {
          wsc = "chris2";
        }
        for (int i = lWindow; i <= rWindow; i++) {
          extrs.add(new ExtractorWordShapeConjunction(lWindow, rWindow, wsc));
        }
      } else if (arg.startsWith("unicodeshapes(")) {
        int lWindow = Extractor.getParenthesizedNum(arg, 1);
        int rWindow = Extractor.getParenthesizedNum(arg, 2);
        for (int i = lWindow; i <= rWindow; i++) {
          extrs.add(new ExtractorWordShapeClassifier(i, "chris4"));
        }
      } else if (arg.startsWith("unicodeshapeconjunction(")) {
        int lWindow = Extractor.getParenthesizedNum(arg, 1);
        int rWindow = Extractor.getParenthesizedNum(arg, 2);
        extrs.add(new ExtractorWordShapeConjunction(lWindow, rWindow, "chris4"));
      } else if (arg.startsWith("chinesedictionaryfeatures(")) {
        throw new RuntimeException("These features are no longer supported." +
                                   "  The paths and data files associated " +
                                   "with this material are out of date, and " +
                                   "the classes used are not thread-safe.  " +
                                   "Those problems would need to be fixed " +
                                   "to use this feature.");
        //String path = Extractor.getParenthesizedArg(arg, 1);
        //// Default nlp location for these features is: /u/nlp/data/pos-tagger/dictionary
        //int lWindow = Extractor.getParenthesizedNum(arg, 2);
        //int rWindow = Extractor.getParenthesizedNum(arg, 3);
        //// First set up the dictionary prefix for the Chinese dictionaries
        //ASBCDict.setPathPrefix(path);
        //for (int i = lWindow; i <= rWindow; i++) {
        //  extrs.addAll(Arrays.asList(ctbPreFeatures(i)));
        //  extrs.addAll(Arrays.asList(ctbSufFeatures(i)));
        //  extrs.addAll(Arrays.asList(ctbUnkDictFeatures(i)));
        //  extrs.addAll(Arrays.asList(asbcUnkFeatures(i)));
        //}
      // No longer add prefix suffix features, now that you can more flexibly add them separately.

View on GitHub (pinned to 1b7edd19c4)