package cn.edu.bjut.chapter2; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import opennlp.tools.postag.POSModel; import opennlp.tools.postag.POSTaggerME; public class PoSTaggerByOpenNLP { private static POSTaggerME tagger = null; private static final String MODEL_FILE = "resource/opennlp-en-ud-ewt-pos-1.0-1.9.3.bin"; private static void loadModel(String fname) { POSModel model = null; try { InputStream stream = new FileInputStream(fname); try { model = new POSModel(stream); } catch (IOException e) { e.printStackTrace(); } finally { if (stream != null) { try { stream.close(); } catch (IOException e) { e.printStackTrace(); } } } tagger = new POSTaggerME(model); } catch (FileNotFoundException e) { e.printStackTrace(); } } public static String[] tag(String[] tokens) { if (tagger == null) { loadModel(MODEL_FILE); } return tagger.tag(tokens); } public static void main(String[] args) { String tokens[] = new String[] { "Most", "large", "cities", "in", "the", "US", "had", "morning", "and", "afternoon", "newspapers", "." }; String tags[] = tag(tokens); for (int i = 0; i < tags.length; i++) { System.out.println(tokens[i] + "\t" + tags[i]); } } }