{"record":{"id":"0b0d5d3f8aec21a4","repo":"stanfordnlp/CoreNLP","slug":"expected-parsers-with-dvmodel-embedded","errorCode":null,"errorMessage":"Expected parsers with DVModel embedded","messagePattern":"Expected parsers with DVModel embedded","errorType":"exception","errorClass":"java.lang.IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/edu/stanford/nlp/parser/dvparser/CombineDVModels.java","lineNumber":75,"sourceCode":"          throw new IllegalArgumentException(\"Found an argument -baseModels with no actual models named\");\n        }\n      } else {\n        unusedArgs.add(args[argIndex++]);\n      }\n    }\n\n    String[] newArgs = unusedArgs.toArray(new String[unusedArgs.size()]);\n    LexicalizedParser underlyingParser = null;\n    Options options = null;\n    LexicalizedParser combinedParser = null;\n    if (baseModelPaths != null) {\n      List<DVModel> dvparsers = new ArrayList<>();\n      for (String baseModelPath : baseModelPaths) {\n        log.info(\"Loading serialized DVParser from \" + baseModelPath);\n        LexicalizedParser dvparser = LexicalizedParser.loadModel(baseModelPath);\n        Reranker reranker = dvparser.reranker;\n        if (!(reranker instanceof DVModelReranker)) {\n          throw new IllegalArgumentException(\"Expected parsers with DVModel embedded\");\n        }\n        dvparsers.add(((DVModelReranker) reranker).getModel());\n        if (underlyingParser == null) {\n          underlyingParser = dvparser;\n          options = underlyingParser.getOp();\n          // TODO: other parser's options?\n          options.setOptions(newArgs);\n        }\n        log.info(\"... done\");\n      }\n      combinedParser = LexicalizedParser.copyLexicalizedParser(underlyingParser);\n      CombinedDVModelReranker reranker = new CombinedDVModelReranker(options, dvparsers);\n      combinedParser.reranker = reranker;\n      combinedParser.saveParserToSerialized(modelPath);\n    } else {\n      throw new IllegalArgumentException(\"Need to specify -model to load an already prepared CombinedParser\");\n    }\n","sourceCodeStart":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/stanfordnlp/CoreNLP/blob/1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a/src/edu/stanford/nlp/parser/dvparser/CombineDVModels.java#L57-L93","documentation":"CombineDVModels expects each base model loaded via LexicalizedParser.loadModel to carry an embedded DVModel reranker; when parser.reranker is not a DVModelReranker it throws IllegalArgumentException. Plain (non-neural) parsers or parsers saved with a different reranker cannot contribute a DVModel to the combination.","triggerScenarios":"Passing a serialized LexicalizedParser trained without a DV model (or a plain parser model like an English PCFG model file) to -baseModels, so the loaded parser's reranker field is null or a different Reranker implementation.","commonSituations":"Mixing vanilla parser models with DV-trained models in the -baseModels list; pointing at a model file from an older/different pipeline; confusing the underlying parser model with a DVParser model.","solutions":["Only pass serialized parsers that were trained with DVParser (DVModel embedded) to -baseModels","Re-train the base models with dvparser options so a DVModelReranker is embedded","Verify each model path loads as a DVParser before combining"],"exampleFix":"// before\n-baseModels englishPCFG.ser.gz dvparser.ser.gz\n// after\n-baseModels dvparser1.ser.gz dvparser2.ser.gz","handlingStrategy":"type-guard","validationCode":"LexicalizedParser p = LexicalizedParser.loadModel(path);\nif (!(p.reranker instanceof DVModelReranker)) {\n    throw new IllegalArgumentException(path + \" is not a DVParser model\");\n}","typeGuard":"boolean hasDvModel(LexicalizedParser p) {\n    return p != null && p.reranker instanceof DVModelReranker;\n}","tryCatchPattern":"try {\n    CombineDVModels.main(args);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"DVModel embedded\")) {\n        System.err.println(\"All -baseModels must be parsers trained with DVParser\");\n    }\n}","preventionTips":["Only feed DVParser-trained serialized models to -baseModels","Probe each model with loadModel + reranker type-check in a dry run","Keep vanilla parser models out of neural-combination pipelines"],"tags":["type-mismatch","model-loading","stanford-corenlp"],"backgroundTag":"type-mismatch","analyzedSha":"1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a","analyzedAt":"2026-09-10T02:24:07.274Z","contentChangedAt":"2026-09-10T02:24:07.274Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}