{"record":{"id":"2698f557686caf31","repo":"stanfordnlp/CoreNLP","slug":"missing-scorer-properties-were","errorCode":null,"errorMessage":"Missing scorer!  Properties were:\n","messagePattern":"Missing scorer!  Properties were:\n","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"src/edu/stanford/nlp/coref/hybrid/HybridCorefSystem.java","lineNumber":193,"sourceCode":"    docCnt = logOutput(wrapper, writerGold, writerBeforeCoref, writerAfterCoref, docCnt);\n    IOUtils.closeIgnoringExceptions(writerGold);\n    IOUtils.closeIgnoringExceptions(writerBeforeCoref);\n    IOUtils.closeIgnoringExceptions(writerAfterCoref);\n\n    if(HybridCorefProperties.checkTime(props)) {\n      System.err.printf(\"END-TO-END COREF Elapsed time: %.3f seconds\\n\", (((new Date()).getTime() - startTime.getTime()) / 1000F));\n//      System.err.printf(\"CORENLP PROCESS TIME TOTAL: %.3f seconds\\n\", cs.mentionExtractor.corenlpProcessTime);\n    }\n    if(HybridCorefProperties.checkMemory(props)) checkMemoryUsage();\n\n    // scoring\n    if (HybridCorefProperties.doScore(props)) {\n      String scorerPath = CorefProperties.getScorerPath(props);\n      String summary;\n      try {\n        summary = CorefScorer.getEvalSummary(scorerPath, goldOutput, beforeCorefOutput);\n      } catch (CorefScorer.ScorerMissingException e) {\n        throw new RuntimeException(\"Missing scorer!  Properties were:\\n\" + props);\n      }\n      CorefScorer.printScoreSummary(summary, logger, false);\n\n      summary = CorefScorer.getEvalSummary(scorerPath, goldOutput, afterCorefOutput);\n      CorefScorer.printScoreSummary(summary, logger, true);\n      CorefScorer.printFinalConllScore(summary, logger);\n    }\n  }\n\n  /**\n   *  Write output of coref system in conll format, and log.\n   */\n  private static int logOutput(MulticoreWrapper<Pair<Document, HybridCorefSystem>, StringBuilder[]> wrapper,\n                               PrintWriter writerGold,\n                               PrintWriter writerBeforeCoref,\n                               PrintWriter writerAfterCoref,\n                               int docCnt) {\n    while (wrapper.peek()) {","sourceCodeStart":175,"sourceCodeEnd":211,"githubUrl":"https://github.com/stanfordnlp/CoreNLP/blob/1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a/src/edu/stanford/nlp/coref/hybrid/HybridCorefSystem.java#L175-L211","documentation":"When scoring is enabled (HybridCorefProperties.doScore), runCoref calls CorefScorer.getEvalSummary, which launches the external CoNLL reference scorer script at the configured scorer path. If that script is missing (ScorerMissingException), the run rethrows as RuntimeException(\"Missing scorer! Properties were: ...\"), appending the full properties for diagnosis.","triggerScenarios":"Running hybrid coref with scoring on while the scorer path (CorefProperties.getScorerPath, e.g. coref.scorer / reference-corpus path to the v4 scorer script) does not exist on disk or the script's expected directory layout is absent.","commonSituations":"Forgetting to download/unpack the CoNLL-2012 scorer (corref scorer.pl / v4 scripts) before evaluating; pointing the scorer path at the wrong directory; moving the project without the scorer; running in a container without the script bundled.","solutions":["Download the official CoNLL-2012 coref scorer scripts and unpack them","Set the scorer path property to the directory containing the scorer script (e.g. coref.scorer=/path/to/conll-2012-scoring)","Verify the script is executable (chmod +x) and that its internal paths are intact","If you don't need evaluation, disable scoring (doScore=false) so the scorer is never invoked"],"exampleFix":"// before\nprops.setProperty(\"coref.scorer\", \"/missing/path/scorer\");\n// after\nprops.setProperty(\"coref.scorer\", \"/opt/conll-2012/v4/scripts/scorer/v4/coref/scorer.pl\");\n// and verify: new File(scorerPath).exists()","handlingStrategy":"validation","validationCode":"String scorerPath = CorefProperties.getScorerPath(props);\nif (HybridCorefProperties.doScore(props) && !new File(scorerPath).exists()) throw new IllegalStateException(\"Scorer not found at: \" + scorerPath);","typeGuard":null,"tryCatchPattern":"try { system.runCoref(doc); } catch (RuntimeException e) { if (e.getMessage().startsWith(\"Missing scorer\")) { log.error(\"Install CoNLL-2012 scorer and set coref.scorer path\", e); return; } throw e; }","preventionTips":["Download the CoNLL-2012 scorer scripts before enabling scoring","chmod +x the scorer scripts after unpacking","Verify scorer path in a setup/smoke test","Disable scoring in runs where metrics are not needed"],"tags":["java","evaluation","missing-script","scorer"],"backgroundTag":"file-not-found","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"}