3 import java.io.IOException;
4 import java.util.ArrayList;
6 import java.util.logging.Logger;
8 import edu.stanford.nlp.ie.crf.CRFClassifier;
9 import edu.stanford.nlp.ling.CoreAnnotations.AnswerAnnotation;
10 import edu.stanford.nlp.ling.CoreLabel;
12 /** https://stanfordnlp.github.io/CoreNLP/api.html */
14 private static final String CLASS_NAME = NER.class.getName();
15 private static final Logger LOG = Logger.getLogger(CLASS_NAME);
17 public static String[] classify(String str) throws ClassCastException, ClassNotFoundException, IOException {
18 CRFClassifier<CoreLabel> classifier;
19 List<List<CoreLabel>> out;
21 List<String> entities;
22 final String FUNCTION_NAME = "classify";
24 LOG.entering(CLASS_NAME, FUNCTION_NAME, str);
26 classifier = CRFClassifier.getDefaultClassifier();
27 out = classifier.classify(str);
29 entities = new ArrayList<>();
30 for (List<CoreLabel> labels: out)
31 for (CoreLabel l: labels) {
32 cat = l.getString(AnswerAnnotation.class);
34 if (!cat.equals("O") && !entities.contains(w))
38 LOG.exiting(CLASS_NAME, FUNCTION_NAME, entities);
40 return entities.toArray(new String[0]);
43 public static void main(String[] args) throws Exception {
44 classify("I live in Washington.");