stanfordnlp/CoreNLP · error · IllegalArgumentException

NER is not implemented for Arabic

Error message

NER is not implemented for Arabic

What it means

ArabicDocument.runNER() throws IllegalArgumentException because named entity recognition is not implemented for Arabic in the stanford.nlp.simple API. Calling Document.ner() on an Arabic document reaches this stub and fails deterministically.

Solutions

  1. Skip NER for ArabicDocument instances (instanceof check before calling).
  2. Use a language whose NER model is bundled (English, etc.).
  3. Use a third-party or custom-trained Arabic NER model via the full CoreNLP CRFClassifier pipeline.

Example fix

// before
doc.ner();
// after
if (!(doc instanceof ArabicDocument)) {
  doc.ner();
}
Defensive patterns

Strategy: type-guard

Validate before calling

if (doc instanceof edu.stanford.nlp.simple.ArabicDocument) skipNER = true;

Type guard

boolean supportsNER(Document doc) { return !(doc instanceof edu.stanford.nlp.simple.ArabicDocument); }

Try / catch

try {
  doc.ner();
} catch (IllegalArgumentException e) {
  if (e.getMessage() != null && e.getMessage().contains("not implemented")) {
    log.warn("NER unavailable for this language, skipping");
  } else throw e;
}

Prevention

When it happens

Trigger: Calling ner() on an ArabicDocument, or any pipeline step that lists NER as a prerequisite on Arabic text.

Common situations: Multilingual annotation loops applying the standard English annotation set (POS, NER, etc.) to Arabic documents.

Related errors


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

Appendix: source

Thrown at src/edu/stanford/nlp/simple/ArabicDocument.java:94

  protected Document runLemma(Properties props) {
    return mockLemma(props);
  }


  @Override
  protected Document runSentiment(Properties props) {
    throw new IllegalArgumentException("Sentiment analysis is not implemented for Arabic");
  }


  @Override
  protected Document runDepparse(Properties props) {
    throw new IllegalArgumentException("Dependency parsing is not implemented for Arabic");
  }

  @Override
  protected Document runNER(Properties props) {
    throw new IllegalArgumentException("NER is not implemented for Arabic");
  }


  @Override
  public Map<Integer, CorefChain> coref(Properties props) {
    throw new IllegalArgumentException("Coreference is not implemented for Arabic");
  }

}

View on GitHub (pinned to 1b7edd19c4)