package edu.stanford.nlp.parser.nndep.demo;
import java.util.Properties;
import edu.stanford.nlp.io.IOUtils;
import edu.stanford.nlp.ling.CoreAnnotations;
import edu.stanford.nlp.parser.nndep.DependencyParser;
import edu.stanford.nlp.pipeline.Annotation;
import edu.stanford.nlp.pipeline.AnnotationPipeline;
import edu.stanford.nlp.pipeline.StanfordCoreNLP;
import edu.stanford.nlp.semgraph.SemanticGraph;
import edu.stanford.nlp.semgraph.SemanticGraphCoreAnnotations;
import edu.stanford.nlp.util.CoreMap;
import edu.stanford.nlp.util.PropertiesUtils;
import edu.stanford.nlp.util.logging.Redwood;
/**
* Demonstrates how to use the NN dependency
* parser via a CoreNLP pipeline.
*
* @author Christopher Manning
*/
public class DependencyParserCoreNLPDemo {
/** A logger for this class */
private static Redwood.RedwoodChannels log = Redwood.channels(DependencyParserDemo.class);
public static void main(String[] args) {
String text;
if (args.length > 0) {
text = IOUtils.slurpFileNoExceptions(args[0], "utf-8");
} else {
text = "I can almost always tell when movies use fake dinosaurs.";
}
Annotation ann = new Annotation(text);
Properties props = PropertiesUtils.asProperties(
"annotators", "tokenize,ssplit,pos,depparse",
"depparse.model", DependencyParser.DEFAULT_MODEL
);
AnnotationPipeline pipeline = new StanfordCoreNLP(props);
pipeline.annotate(ann);
for (CoreMap sent : ann.get(CoreAnnotations.SentencesAnnotation.class)) {
SemanticGraph sg = sent.get(SemanticGraphCoreAnnotations.BasicDependenciesAnnotation.class);
log.info(IOUtils.eolChar + sg.toString(SemanticGraph.OutputFormat.LIST));
}
}
}