!7 lib 1008485 // stanford parser lib 1008486 // english model import edu.stanford.nlp.ling.CoreLabel; import edu.stanford.nlp.process.TokenizerFactory; import edu.stanford.nlp.parser.lexparser.LexicalizedParser; import edu.stanford.nlp.process.CoreLabelTokenFactory; import edu.stanford.nlp.process.PTBTokenizer; import edu.stanford.nlp.process.Tokenizer; import edu.stanford.nlp.trees.Tree; sS PCG_MODEL = "edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz"; static TokenizerFactory<CoreLabel> tokenizerFactory; static LexicalizedParser parser; static Tree parse(S str) { List<CoreLabel> tokens = tokenize(str); ret parser.apply(tokens); } static L<CoreLabel> tokenize(String str) { Tokenizer<CoreLabel> tokenizer = tokenizerFactory.getTokenizer( new StringReader(str)); ret tokenizer.tokenize(); } p { tokenizerFactory = PTBTokenizer.factory(new CoreLabelTokenFactory(), "invertible=true"); parser = LexicalizedParser.loadModel(PCG_MODEL); S str = "My dog also likes eating sausage."; Tree tree = parse(str); L<Tree> leaves = tree.getLeaves(); // Print words and Pos Tags for (Tree leaf : leaves) { Tree parent = leaf.parent(tree); print(" " + leaf.label().value() + " [" + parent.label().value() + "]"); } print(); printTree(tree); } svoid printTree(Tree tree) { printTree("", tree); } svoid printTree(S indent, Tree tree) { //if (l(indent) > 4) ret; print(indent + tree.label().value()); for (Tree child : tree.getChildrenAsList()) printTree(indent + " ", child); }