List of usage examples for edu.stanford.nlp.trees TreeGraphNode TreeGraphNode
public TreeGraphNode(Label label)
From source file:edu.jhu.agiga.StanfordAgigaSentence.java
License:Open Source License
public List<TreeGraphNode> getStanfordTreeGraphNodes(DependencyForm form) { if (this.nodes != null) return this.nodes; this.nodes = new ArrayList<TreeGraphNode>(); // Add an explicit root node nodes.add(new TreeGraphNode(ROOT_LABEL)); List<WordLemmaTag> labels = getStanfordWordLemmaTags(); for (WordLemmaTag curToken : labels) { // Create the tree node TreeGraphNode treeNode = new TreeGraphNode(curToken); treeNode.label().setTag(curToken.tag()); /**/* w w w .j a va 2 s . c om*/ * Caution, the order to call is to first setWord(), then setlemma() * From the Stanford source code: * public void setWord(String word) { set(WordAnnotation.class, word); // pado feb 09: if you change the word, delete the lemma. remove(LemmaAnnotation.class); } public void setLemma(String lemma) { set(LemmaAnnotation.class, lemma); } */ treeNode.label().setWord(curToken.word()); treeNode.label().setLemma(curToken.lemma()); nodes.add(treeNode); } List<AgigaTypedDependency> agigaDeps = getAgigaDeps(form); for (AgigaTypedDependency agigaDep : agigaDeps) { // Add one, since the tokens are zero-indexed but the TreeGraphNodes are one-indexed TreeGraphNode gov = nodes.get(agigaDep.getGovIdx() + 1); TreeGraphNode dep = nodes.get(agigaDep.getDepIdx() + 1); // Add gov/dep to TreeGraph gov.addChild(dep); dep.setParent(gov); require(dep.parent() == gov); } return nodes; }
From source file:LVCoref.Document.java
License:Open Source License
/** * Initialize node parent rerferences, sentence borders and roots *//*from w ww .ja v a 2s . c o m*/ public void initializeNodeTree() { Sentence prevSentence = null; for (Sentence s : sentences) { s.setRootNode(new Node("_ROOT_", "_ROOT_", "_", -1, -1, this)); s.getRootNode().sentence = s; if (prevSentence != null) { s.getRootNode().setParentNode(prevSentence.getRootNode()); } else { s.getRootNode().setParentNode(null); } if (s.getNodes().size() > 0) { List<Node> nodes = s.getNodes(); Node start = nodes.get(0); Node end = nodes.get(nodes.size() - 1); s.setStart(start.id); s.setEnd(end.id); start.sentStart = true; end.sentEnd = true; } else { log.warning("Empty sentence " + s); } boolean rootSet = false; // seen node with parent = 0 Node prevNode = null; for (Node n : s.getNodes()) { if (Constants.USE_SINTAX) { if (n.parentIndex == 0) { n.sentRoot = true; if (rootSet) { log.fine("Multiple roots " + s); } rootSet = true; n.setParentNode(s.getRootNode()); s.getRootNode().addChild(n); } else { Node parent = getNode(n.parentIndex + s.getStart() - 1); n.setParentNode(parent); if (parent != null) parent.addChild(n); } } else { if (prevNode == null) { n.setParentNode(s.getRootNode()); s.getRootNode().addChild(n); n.sentRoot = true; } else { Node parent = prevNode; n.setParentNode(parent); if (parent != null) parent.addChild(n); } } prevNode = n; } prevSentence = s; } // Parse tree for (Sentence s : sentences) { for (Node n : s) { Tree t = new TreeGraphNode(new Word(n.word + "--t--" + n.tag + "--d--" + n.dependency)); n.tree = t; } } for (Sentence s : sentences) { Tree root = new TreeGraphNode(new Word("ROOT")); s.setRootTree(root); for (Node n : s) { Tree t = n.tree; Node parent = n.parent; if (parent != null) { if (parent.isSentenceRoot()) { root.addChild(t); } else { parent.tree.addChild(t); } } } //root.pennPrint(); } }