Example usage for edu.stanford.nlp.trees TreeGraphNode TreeGraphNode

List of usage examples for edu.stanford.nlp.trees TreeGraphNode TreeGraphNode

Introduction

In this page you can find the example usage for edu.stanford.nlp.trees TreeGraphNode TreeGraphNode.

Prototype

public TreeGraphNode(Label label) 

Source Link

Document

Create a new TreeGraphNode with the supplied label.

Usage

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();
    }
}