

Stanford NER is a Java implementation of a Named Entity Recognizer. Named Entity Recognition (NER) labels sequences of words in a text which are the names of things, such as person and company names, or gene and protein names.
We can use Stanford NER in two different ways. In this article, we will discuss both the techniques of how to use 3class(PERSON,LOCATION,ORGANIZATION) ner model with examples.
Example:1
The first technique is to load individual classifier, in our case 3 class model and load it. perform the following steps:
Step 1: Download Standford ner Standford ner zip file.
Step 2: Extract Stanford bundle, add stanford-ner jar file into your project classpath.
Step 3: write below code snippets
//path of classifier we want to load String classierPath = "D:\\classifiers\\english.all.3class.distsim.crf.ser.gz"; //content that we want to classify String fileContents = "barak Obama was born in 1961 in Honolulu, Hawaii, \n" + "in 1988 Obama enrolled in Harvard Law School."; //Load classifier , classifier should be load only one time AbstractSequenceClassifier classifier = CRFClassifier.getClassifierNoExceptions(classierPath); //classify the text List<List<CoreLabel>> out = classifier.classify(fileContents); //iterate the result and print it. for (List<CoreLabel> sentence : out) { for (CoreLabel word : sentence) { //unclassify label class is O , we will not print it here if(word.getString(CoreAnnotations.AnswerAnnotation.class).equals("O")) continue; System.out.println(word.word() + " = " + word.get(CoreAnnotations.AnswerAnnotation.class) ); } } }
Output:
Loading classifier from D:\classifiers\english.all.3class.distsim.crf.ser.gz ... done [9.6 sec]. barak = PERSON Obama = PERSON Honolulu = LOCATION Hawaii = LOCATION Obama = PERSON Harvard = ORGANIZATION Law = ORGANIZATION School = ORGANIZATION
Example:2
In this example, we will use the stanford core NLP library which contains all the features and model of NLP.
Add below maven dependency in your project
<dependency> <groupId>edu.stanford.nlp</groupId> <artifactId>stanford-corenlp</artifactId> <version>3.8.0</version> </dependency> <dependency> <groupId>edu.stanford.nlp</groupId> <artifactId>stanford-corenlp</artifactId> <version>3.8.0</version> <classifier>models</classifier> </dependency> <dependency> <groupId>edu.stanford.nlp</groupId> <artifactId>stanford-parser</artifactId> <version>3.8.0</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>14.0.1</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.1.2</version> </dependency>
Code snippet
// creates a StanfordCoreNLP object, with POS tagging, lemmatization, NER Properties props = new Properties(); props.put("annotators", "tokenize, ssplit, pos, lemma, ner"); //props.put("annotators", "tokenize, ssplit, pos, lemma, parse"); StanfordCoreNLP pipeline = new StanfordCoreNLP(props); String text = "barak Obama was born in 1961 in Honolulu, Hawaii, \n" + "In 1988 Obama enrolled in Harvard Law School."; // create an empty Annotation just with the given text Annotation document = new Annotation(text); // run all Annotators on this text pipeline.annotate(document); // these are all the sentences in this document // a CoreMap is essentially a Map that uses class objects as keys and has values with custom types List<CoreMap> sentences = document.get(CoreAnnotations.SentencesAnnotation.class); for(CoreMap sentence: sentences) { // traversing the words in the current sentence // a CoreLabel is a CoreMap with additional token-specific methods for (CoreLabel token: sentence.get(CoreAnnotations.TokensAnnotation.class)) { // this is the text of the token String word = token.get(CoreAnnotations.TextAnnotation.class); // this is the POS tag of the token String pos = token.get(CoreAnnotations.PartOfSpeechAnnotation.class); // this is the NER label of the token String ne = token.get(CoreAnnotations.NamedEntityTagAnnotation.class); System.out.println("word: " + word + " pos: " + pos + " ne:" + ne); } }
An output of Stanford NER live demo
Refer CRF-NER , NER Live Demo , NER annotators for more details.