Venkata Anusha
Venkata Anusha

Reputation: 33

Converting Stanford dependency relation to dot format

I am a newbie to this field. I have dependency relation in this form:

amod(clarity-2, sound-1)
nsubj(good-6, clarity-2)
cop(good-6, is-3)
advmod(good-6, also-4)
neg(good-6, not-5)
root(ROOT-0, good-6)
nsubj(ok-10, camera-8)
cop(ok-10, is-9)
ccomp(good-6, ok-10)

As mentioned in the links we have to convert this dependency relation to dot format and then use Graphviz for drawing a 'dependency tree'. I am not able to understand how to pass this dependency relation to toDotFormat() function of edu.stanford.nlp.semgraph.SemanticGraph. When I give this string, 'amod(clarity-2, sound-1)' as input to toDotFormat() am getting the output in this form digraph amod(clarity-2, sound-1) { }. I am trying the solution given here how to get a dependency tree with Stanford NLP parser

Upvotes: 1

Views: 686

Answers (1)

Jon Gauthier
Jon Gauthier

Reputation: 25592

You need to call toDotFormat on an entire dependency tree. How have you generated these dependency trees in the first place?

If you're using the StanfordCoreNLP pipeline, adding in the toDotFormat call is easy:

Properties properties = new Properties();
props.put("annotators", "tokenize, ssplit, pos, depparse");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);

String text = "This is a sentence I want to parse.";
Annotation document = new Annotation(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(SentencesAnnotation.class);

for (CoreMap sentence : sentences) {
  // this is the Stanford dependency graph of the current sentence
  SemanticGraph dependencies = sentence.get(CollapsedCCProcessedDependenciesAnnotation.class);
  System.out.println(dependencies.toDotFormat());
}

Upvotes: 1

Related Questions