{"record":{"id":"8f33c3895ebbc940","repo":"stanfordnlp/CoreNLP","slug":"these-features-are-no-longer-supported-the-paths","errorCode":null,"errorMessage":"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.","messagePattern":"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\\.","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"src/edu/stanford/nlp/tagger/maxent/ExtractorFramesRare.java","lineNumber":302,"sourceCode":"        String wsc = Extractor.getParenthesizedArg(arg, 3);\n        if (wsc == null) {\n          wsc = \"chris2\";\n        }\n        for (int i = lWindow; i <= rWindow; i++) {\n          extrs.add(new ExtractorWordShapeConjunction(lWindow, rWindow, wsc));\n        }\n      } else if (arg.startsWith(\"unicodeshapes(\")) {\n        int lWindow = Extractor.getParenthesizedNum(arg, 1);\n        int rWindow = Extractor.getParenthesizedNum(arg, 2);\n        for (int i = lWindow; i <= rWindow; i++) {\n          extrs.add(new ExtractorWordShapeClassifier(i, \"chris4\"));\n        }\n      } else if (arg.startsWith(\"unicodeshapeconjunction(\")) {\n        int lWindow = Extractor.getParenthesizedNum(arg, 1);\n        int rWindow = Extractor.getParenthesizedNum(arg, 2);\n        extrs.add(new ExtractorWordShapeConjunction(lWindow, rWindow, \"chris4\"));\n      } else if (arg.startsWith(\"chinesedictionaryfeatures(\")) {\n        throw new RuntimeException(\"These features are no longer supported.\" +\n                                   \"  The paths and data files associated \" +\n                                   \"with this material are out of date, and \" +\n                                   \"the classes used are not thread-safe.  \" +\n                                   \"Those problems would need to be fixed \" +\n                                   \"to use this feature.\");\n        //String path = Extractor.getParenthesizedArg(arg, 1);\n        //// Default nlp location for these features is: /u/nlp/data/pos-tagger/dictionary\n        //int lWindow = Extractor.getParenthesizedNum(arg, 2);\n        //int rWindow = Extractor.getParenthesizedNum(arg, 3);\n        //// First set up the dictionary prefix for the Chinese dictionaries\n        //ASBCDict.setPathPrefix(path);\n        //for (int i = lWindow; i <= rWindow; i++) {\n        //  extrs.addAll(Arrays.asList(ctbPreFeatures(i)));\n        //  extrs.addAll(Arrays.asList(ctbSufFeatures(i)));\n        //  extrs.addAll(Arrays.asList(ctbUnkDictFeatures(i)));\n        //  extrs.addAll(Arrays.asList(asbcUnkFeatures(i)));\n        //}\n      // No longer add prefix suffix features, now that you can more flexibly add them separately.","sourceCodeStart":284,"sourceCodeEnd":320,"githubUrl":"https://github.com/stanfordnlp/CoreNLP/blob/1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a/src/edu/stanford/nlp/tagger/maxent/ExtractorFramesRare.java#L284-L320","documentation":"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.","triggerScenarios":"Including 'chinesedictionaryfeatures(...)' in the tagger's rare extractors config string; using an old training properties file from before the feature was removed.","commonSituations":"Reusing legacy POS tagger training props from old CTB experiments; following an outdated tutorial or paper appendix that lists the feature.","solutions":["Remove the chinesedictionaryfeatures(...) entry from your extractors/rareExtractors configuration","Replace the feature with ExtractorCtb or equivalent currently supported Chinese features if available in your version","Check the current version's ExtractorFramesRare.java for the supported feature list and pick supported alternatives","Pin an old Stanford POS tagger version only if the feature is absolutely required (not recommended: paths are stale)"],"exampleFix":"// before\nString rareExtractors = \"...,chinesedictionaryfeatures(/path/ctb),...\"; // throws\n// after\nString rareExtractors = \"...,unicodeshapeconjunction(-1,1),...\"; // supported feature","handlingStrategy":"validation","validationCode":"if (spec.startsWith(\"chinesedictionaryfeatures(\")) {\n  throw new IllegalArgumentException(\"chinesedictionaryfeatures is removed in this tagger version; use supported Chinese features instead\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  ExtractorFramesRare.getExtractorFramesRare(spec);\n} catch (RuntimeException e) {\n  if (e.getMessage() != null && e.getMessage().startsWith(\"These features are no longer supported.\")) {\n    // strip the feature from the config and continue without it\n  } else { throw e; }\n}","preventionTips":["Remove chinesedictionaryfeatures from legacy training properties files","Review the current ExtractorFramesRare source for the supported feature list","Do not carry forward extractors from abandoned code paths when upgrading","Document removed features for your team when pinning library versions"],"tags":["java","pos-tagger","deprecated","removed-feature"],"backgroundTag":"deprecated-api-usage","analyzedSha":"1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a","analyzedAt":"2026-09-10T02:24:07.274Z","contentChangedAt":"2026-09-10T02:24:07.274Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}