Example usage for edu.stanford.nlp.trees Tree value

List of usage examples for edu.stanford.nlp.trees Tree value

Introduction

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

Prototype

@Override
    public String value() 

Source Link

Usage

From source file:sg.edu.nus.comp.pdtb.parser.ConnComp.java

License:Open Source License

public static String printFeature(Tree root, List<Node> nodes, boolean isExplicit, boolean isIntra) {
    char label = isExplicit ? '1' : '0';
    StringBuilder feature = new StringBuilder();

    StringBuilder tmp = new StringBuilder();
    StringBuilder tmp2 = new StringBuilder();
    for (Node node : nodes) {

        tmp.append(node.tree.parent(root).value() + " ");
        tmp2.append(node.tree.value() + " ");
    }//w w w  .j  av a 2  s  . c  o m
    String POS = tmp.toString().trim().replace(' ', '_');
    String connStr = tmp2.toString().trim().replace(' ', '_');
    if (isIntra) {
        connStr = connStr.replaceAll("_", "..");
    }
    List<Tree> leaves = root.getLeaves();

    int firstNodeNum = nodes.get(0).index;
    int lastNodeNum = nodes.get(nodes.size() - 1).index;

    Tree prevNode = firstNodeNum > 0 ? leaves.get(--firstNodeNum) : null;

    Tree nextNode = (leaves.size() > lastNodeNum + 1) ? leaves.get(++lastNodeNum) : null;

    feature.append("conn_lc:");
    feature.append(connStr.toLowerCase());
    feature.append(' ');

    feature.append("conn:");
    feature.append(connStr);
    feature.append(' ');

    feature.append("lexsyn:conn_POS:");
    feature.append(POS);
    feature.append(' ');

    if (prevNode != null) {
        while (prevNode.parent(root).value().equals("-NONE-") && firstNodeNum > 0) {
            prevNode = leaves.get(--firstNodeNum);
        }

        if (prevNode != null) {
            String prevPOS = prevNode.parent(root).value().replace(' ', '_');

            feature.append("lexsyn:with_prev_full:");
            feature.append(prevNode.value().replace(' ', '_'));
            feature.append('_');
            feature.append(connStr);
            feature.append(' ');

            feature.append("lexsyn:prev_POS:");
            feature.append(prevPOS);
            feature.append(' ');

            feature.append("lexsyn:with_prev_POS:");
            feature.append(prevPOS);
            feature.append('_');
            feature.append(POS.split("_")[0]);
            feature.append(' ');

            feature.append("lexsyn:with_prev_POS_full:");
            feature.append(prevPOS);
            feature.append('_');
            feature.append(POS);
            feature.append(' ');
        }
    }

    if (nextNode != null) {

        while (nextNode.parent(root).value().equals("-NONE-")) {
            nextNode = leaves.get(++lastNodeNum);
        }

        String nextPOS = nextNode.parent(root).value().replace(' ', '_');

        feature.append("lexsyn:with_next_full:");
        feature.append(connStr);
        feature.append('_');
        feature.append(nextNode.value().replace(' ', '_'));
        feature.append(' ');

        feature.append("lexsyn:next_POS:");
        feature.append(nextPOS);
        feature.append(' ');

        feature.append("lexsyn:with_next_POS:");
        feature.append(POS.split("_")[nodes.size() - 1]);
        feature.append('_');
        feature.append(nextPOS);
        feature.append(' ');

        feature.append("lexsyn:with_next_POS_full:");
        feature.append(POS);
        feature.append('_');
        feature.append(nextPOS);
        feature.append(' ');
    }

    // Pitler & Nenkova (ACL 09) features:
    Tree parent = getMutualParent(nodes, root);
    Tree grandparent = parent.parent(root);
    List<Tree> siblings = grandparent.getChildrenAsList();

    String selfCat = parent.value().split("-")[0].split("=")[0];
    String parentCat = grandparent.value() == null ? "NONE" : grandparent.value().split("-")[0].split("=")[0];

    Tree leftSib = null;
    Tree rightSib = null;
    String leftCat = "NONE";
    String rightCat = "NONE";

    int index = siblings.indexOf(parent);

    if (index > 0) {
        leftSib = siblings.get(index - 1);
        leftCat = leftSib.value().startsWith("-") ? leftSib.value()
                : leftSib.value().split("-")[0].split("=")[0];
        leftCat = leftCat.isEmpty() ? "-NONE-" : leftCat;
    }

    if (index < siblings.size() - 1) {
        rightSib = siblings.get(index + 1);
        rightCat = rightSib.value().startsWith("-") ? rightSib.value()
                : rightSib.value().split("-")[0].split("=")[0];
        rightCat = rightCat.isEmpty() ? "-NONE-" : rightCat;
    }

    boolean rightVP = containsNode(rightSib, "VP");
    boolean rightTrace = containsTrace(rightSib);

    List<String> syn = new ArrayList<>();
    syn.add("selfCat:" + selfCat);
    syn.add("parentCat:" + parentCat);
    syn.add("leftCat:" + leftCat);
    syn.add("rightCat:" + rightCat);

    if (rightVP) {
        syn.add("rightVP");
    }
    if (rightTrace) {
        syn.add("rightTrace");
    }

    for (String cat : syn) {
        feature.append("syn:");
        feature.append(cat);
        feature.append(' ');
    }

    for (String cat : syn) {
        feature.append("conn-syn:conn:");
        feature.append(connStr);
        feature.append('-');
        feature.append(cat);
        feature.append(' ');
    }

    for (int i = 0; i < syn.size(); ++i) {
        for (int j = i + 1; j < syn.size(); ++j) {
            feature.append("syn-syn:");
            feature.append(syn.get(i));
            feature.append('-');
            feature.append(syn.get(j));
            feature.append(' ');
        }
    }

    String[] synFeatures = getSyntacticfeatures(parent, root);

    feature.append("path-self>root:");
    feature.append(synFeatures[0]);
    feature.append(' ');

    feature.append("path-self>root2:");
    feature.append(synFeatures[1]);
    feature.append(' ');

    feature.append(label);

    return feature.toString().replaceAll("/", "\\\\/");
}

From source file:sg.edu.nus.comp.pdtb.parser.ConnComp.java

License:Open Source License

private static String[] getSyntacticfeatures(Tree node, Tree root) {
    StringBuilder selfToRoot = new StringBuilder();
    StringBuilder selfToRootNoRepeat = new StringBuilder();
    String val = node.value().split("-")[0].split("=")[0];
    selfToRoot.append(val);
    selfToRootNoRepeat.append(node.value().split("-")[0].split("=")[0]);

    Tree prev = node;//from w  w w.  j  a v  a  2 s .com
    node = node.parent(root);

    while (!node.equals(root)) {

        selfToRoot.append("_>_");
        selfToRoot.append(node.value().split("-")[0].split("=")[0]);
        if (!prev.value().split("-")[0].equals(node.value().split("-")[0].split("=")[0])) {
            selfToRootNoRepeat.append("_>_");
            selfToRootNoRepeat.append(node.value().split("-")[0].split("=")[0]);
        }
        prev = node;
        node = node.parent(root);

    }
    return new String[] { selfToRoot.toString(), selfToRootNoRepeat.toString() };
}

From source file:sg.edu.nus.comp.pdtb.parser.ConnComp.java

License:Open Source License

private static boolean containsTrace(Tree node) {
    if (node == null) {
        return false;
    }//  ww w . ja v a 2 s  .co  m
    if (node.value().equals("-NONE-") && node.firstChild().value().matches("^\\*T\\*.*")) {
        return true;
    }
    List<Tree> children = node.getChildrenAsList();
    for (Tree child : children) {
        if (containsTrace(child)) {
            return true;
        }
    }

    return false;
}

From source file:sg.edu.nus.comp.pdtb.parser.ConnComp.java

License:Open Source License

private static boolean containsNode(Tree node, String nodeValue) {
    if (node == null) {
        return false;
    }/*from  w w w .j  a va2  s  .c  o m*/
    String value = node.value();
    value = value.split("=").length > 1 ? value.split("=")[0] : value;
    value = value.split("-").length > 1 ? value.split("-")[0] : value;

    if (value.equals(nodeValue)) {
        return true;
    }
    List<Tree> children = node.getChildrenAsList();
    for (Tree child : children) {
        if (containsNode(child, nodeValue)) {
            return true;
        }
    }

    return false;
}

From source file:sg.edu.nus.comp.pdtb.parser.ExplicitComp.java

License:Open Source License

private String printFeature(Tree root, List<Node> nodes, String label) {

    StringBuilder feature = new StringBuilder();

    StringBuilder tmp = new StringBuilder();
    StringBuilder tmp2 = new StringBuilder();
    for (Node node : nodes) {
        if (node.tree.parent(root) != null) {
            tmp.append(node.tree.parent(root).value() + " ");
            tmp2.append(node.tree.value() + " ");
        }/*from w  w  w.j av a2 s.c o m*/
    }
    String POS = tmp.toString().trim().replace(' ', '_');
    String connStr = tmp2.toString().trim().replace(' ', '_');
    if (connStr.equalsIgnoreCase("if_then") || connStr.equalsIgnoreCase("either_or")
            || connStr.equalsIgnoreCase("neither..nor")) {
        connStr = connStr.replaceAll("_", "..");
    }
    List<Tree> leaves = root.getLeaves();

    int firstNodeNum = nodes.get(0).index;

    Tree prevNode = firstNodeNum > 0 ? leaves.get(--firstNodeNum) : null;

    feature.append("conn_lc:");
    feature.append(connStr.toLowerCase());
    feature.append(' ');

    feature.append("conn:");
    feature.append(connStr);
    feature.append(' ');

    feature.append("conn_POS:");
    feature.append(POS);
    feature.append(' ');

    if (prevNode != null) {
        while (prevNode.parent(root).value().equals("-NONE-") && firstNodeNum > 0) {
            prevNode = leaves.get(--firstNodeNum);
        }

        if (prevNode != null) {

            feature.append("with_prev_full:");
            feature.append(prevNode.value().replace(' ', '_').toLowerCase());
            feature.append('_');
            feature.append(connStr.toLowerCase());
            feature.append(' ');

        }
    }

    feature.append(label.replace(' ', '_'));

    return feature.toString().replaceAll("/", "\\\\/");
}

From source file:sg.edu.nus.comp.pdtb.parser.NonExplicitComp.java

License:Open Source License

public static void getProductionRules(Tree tree, HashMap<String, Integer> prodRules) {
     String[] tr = tree.value().replaceAll("=[0-9]+", "").split("-");
     String value = tr.length > 0 ? tr[0] : tree.value();
     if (tree.isLeaf() || tree.value().startsWith("-")) {
         value = tree.value();/*  www. jav a2 s  .  c  o  m*/
     }
     StringBuilder rule = new StringBuilder(value);
     rule.append(" ->");
     for (Tree child : tree.children()) {
         if (!child.value().equalsIgnoreCase("-NONE-")) {
             String[] tmp = child.value().replaceAll("=[0-9]+", "").split("-");
             String cVal = tmp.length > 0 ? tmp[0] : child.value();
             if (child.isLeaf() || child.value().startsWith("-")) {
                 cVal = child.value();
             }
             rule.append(" ");
             rule.append(cVal);
         }
     }
     String key = rule.toString().replaceAll("\\s+", "_");

     // has some child values
     if (!key.endsWith("->")) {
         Integer count = prodRules.get(key);
         if (count == null) {
             count = 0;
         }
         ++count;
         prodRules.put(key, count);
     }

     for (Tree child : tree.children()) {
         if (!child.value().equalsIgnoreCase("-NONE-")) {
             getProductionRules(child, prodRules);
         }
     }

 }

From source file:sg.edu.nus.comp.pdtb.parser.NonExplicitComp.java

License:Open Source License

public static void getDependencyRules(TreeNode treeNode, HashMap<String, Dependency> dtreeMap,
         HashMap<String, Integer> depRules) {

     Tree root = treeNode.getRoot();// www .j a v  a  2  s. c o  m
     Tree node = treeNode.getNode();
     int treeNumber = treeNode.getTreeNumber();

     List<Tree> allPosNodes = new ArrayList<Tree>();
     getAllPosNodes(node, allPosNodes);

     List<Integer> leafNodes = new ArrayList<Integer>();
     for (Tree pn : allPosNodes) {
         leafNodes.add(pn.firstChild().nodeNumber(root));
     }

     for (int i = 0; i < leafNodes.size(); ++i) {
         Tree n = root.getNodeNumber(leafNodes.get(i));
         int nInd = n.nodeNumber(root);
         Dependency nDepRel = dtreeMap.get(treeNumber + " : " + nInd);
         if (nDepRel != null) {
             List<Tree> nDependents = new ArrayList<Tree>();
             for (Integer ind : nDepRel.getDependents()) {
                 if (leafNodes.contains(ind)) {
                     Tree d = root.getNodeNumber(ind);
                     nDependents.add(d);
                 }
             }

             if (nDependents.size() > 0) { // has nDependents

                 String rule = n.value() + " <- ";

                 for (Tree n1 : nDependents) {
                     int n1Ind = n1.nodeNumber(root);
                     Dependency n1DepRel = dtreeMap.get(treeNumber + " : " + n1Ind);
                     String dependency = n1DepRel.getLabel();
                     rule += "<" + dependency + "> ";
                 }
                 rule = rule.trim();

                 if (!rule.endsWith("<-")) { // rule has some child values
                     rule = rule.replace(' ', '_');
                     Integer value = depRules.containsKey(rule) ? depRules.get(rule) : 0;
                     value += 1;
                     depRules.put(rule, value);
                 }
             }
         }
     }
 }

From source file:sg.edu.nus.comp.pdtb.parser.NonExplicitComp.java

License:Open Source License

public static void getAllPosNodes(Tree node, List<Tree> allPosNodes) {
     boolean isPos = node.numChildren() == 1 && node.firstChild().isLeaf();
     if (!isPos) {
         for (Tree child : node.children()) {
             getAllPosNodes(child, allPosNodes);
         }/*  w  w  w  .ja va  2  s. c  om*/
     } else {
         if (!node.value().equalsIgnoreCase("-NONE-")) {
             allPosNodes.add(node);
         }
     }
 }

From source file:tml.utils.StanfordUtils.java

License:Apache License

/**
 * @param t the tree to which extract the content
 * @return the string with the content of the tree
 *///from   ww  w  .ja  v a2 s  .  co  m
public static String nodeContent(Tree t, Tree pv) {

    if (t.isLeaf())
        return t.value();

    StringBuffer buff = new StringBuffer();
    for (Tree tt : t.children()) {
        if (!t.value().equals("DT") && !t.value().equals("SYM") && !t.value().startsWith("PRP")) {
            buff.append(nodeContent(tt, t));
            buff.append(" ");
        }
    }
    String clean = buff.toString().replace("\\s+", " ").trim();
    return clean;
}

From source file:tml.utils.StanfordUtils.java

License:Apache License

/**
 * @param t the tree to which extract the content
 * @return the string with the content of the tree
 *//*from   ww w.j  a v  a 2s .  co  m*/
public static String nodeContent(Tree t) {

    if (t.isLeaf())
        return t.value();

    StringBuffer buff = new StringBuffer();
    for (Tree tt : t.children()) {
        buff.append(nodeContent(tt));
        buff.append(" ");
    }
    String clean = buff.toString().replace("\\s+", " ").trim();
    return clean;
}