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

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

Introduction

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

Prototype

@Override
public Label label() 

Source Link

Document

Returns the label associated with the current node, or null if there is no label.

Usage

From source file:qmul.corpus.SwitchboardCorpus.java

License:Open Source License

/**
 * @param dialogueName/* w  w  w.j a va 2s.c  o  m*/
 * @param genre
 * @param reader
 * @return whether to carry on or not
 */
private boolean getSentences(String dialogueName, String genre, TreeReader reader) {
    Pattern p = Pattern.compile("\\(CODE\\s+(?:\\([A-Z]+\\s+)?Speaker([A-Za-z]+)(\\d+)");
    try {
        Dialogue dialogue = null;
        DialogueSpeaker speaker = null;
        DialogueSpeaker lastSpeaker = null;
        DialogueTurn currentTurn = null;
        int currentSubdialogue = -1;
        int turnNum = -1;
        Tree tree = reader.readTree();
        Filter<Tree> nodeFilter = new NodeFilter();
        while (tree != null) {
            Matcher m = p.matcher(tree.toString());
            if (m.find()) {
                // get the metadata
                turnNum = Integer.parseInt(m.group(2));
                int subDialogue = 0; // apparently no subdialogues in SWBD ...
                String spk = m.group(1).toUpperCase();
                // start new dialogue if subdialogue changed
                if (subDialogue != currentSubdialogue) {
                    if (dialogue != null) {
                        if (!checkDialogue(dialogue)) {
                            return false;
                        }
                    }
                    // dialogue = addDialogue(dialogueName + ":" + subDialogue, genre);
                    dialogue = addDialogue(dialogueName, genre);
                    // TODO genre in SWBD?
                    getGenreMap().put(dialogueName, genre);
                }
                currentSubdialogue = subDialogue;
                // set up speaker
                String spkId = dialogue.getId() + ":" + spk;
                if (!getSpeakerMap().containsKey(spkId)) {
                    // TODO speaker info in SWBD?
                    getSpeakerMap().put(spkId, new DialogueSpeaker(spkId, "", "", "", "", ""));
                    // System.out.println("added new speaker " + spkId);
                }
                speaker = getSpeakerMap().get(spkId);
            } else {
                // get the tree and extract the transcription
                String trans = "";
                // SWBD embeds trees within an extra unlabelled level ((S etc))
                if (((tree.label() == null) || (tree.label().value() == null))
                        && (tree.children().length == 1)) {
                    tree = tree.getChild(0);
                }
                if (tree != null) {
                    tree = tree.prune(nodeFilter);
                    if (tree != null) {
                        for (Tree leaf : tree.getLeaves()) {
                            trans += leaf.label() + " ";
                        }
                        trans = trans.substring(0, trans.length() - 1);
                        // start new turn if speaker has changed
                        if ((lastSpeaker == null) || !speaker.equals(lastSpeaker) || (currentTurn == null)) {
                            currentTurn = dialogue.addTurn(turnNum, speaker);
                            // System.out.println("new turn " + turnNum + ", " + speaker + " " + currentTurn);
                            lastSpeaker = speaker;
                        }
                        // add sentence
                        dialogue.addSent(-1, currentTurn, trans, tree);
                        // DialogueSentence s = dialogue.addSent(-1, currentTurn, trans, tree);
                        // System.out.println("new sent " + s);
                        // System.out.println(s.getSyntax().pennString());
                    }
                }
            }
            tree = reader.readTree();
        }
        return checkDialogue(dialogue);
    } catch (IOException e) {
        System.err.println("Error reading sentence line" + e.getMessage());
        return false;
    }
}

From source file:qmul.util.treekernel.FragmentIdentifier.java

License:Open Source License

public ArrayList<Fragment> getFragments(Tree t) {

    List<Tree> children = t.getChildrenAsList();
    ArrayList<Fragment> fragments = new ArrayList<Fragment>();
    String dominatedPhrase = getDominatedPhrase(t);
    Fragment frag = new Fragment(t.label().value(), dominatedPhrase);
    // System.out.println("Adding "+t.label()+"-->"+dominatedPhrase);
    if (dominatedPhrase.length() > 0) {

        if (t.children().length > 1) {

            fragments.add(frag);/* www.j av a2  s.  co  m*/
        } else if (t.depth() == 1)
            fragments.add(frag);
    }
    for (Tree child : children) {
        // System.out.println("Merging "+)
        fragments.addAll(getFragments(child));

    }
    return fragments;

}

From source file:qmul.util.treekernel.FragmentIdentifier.java

License:Open Source License

public HashMap<String, ArrayList<String>> getPhraseTypeToFragmentsMap(Tree t) {

    List<Tree> children = t.getChildrenAsList();
    HashMap<String, ArrayList<String>> fragments = new HashMap<String, ArrayList<String>>();
    String dominatedPhrase = getDominatedPhrase(t);
    // System.out.println("Adding "+t.label()+"-->"+dominatedPhrase);
    if (dominatedPhrase.length() > 0) {
        ArrayList<String> v = new ArrayList<String>();
        v.add(dominatedPhrase);/*from  w  w w. java 2  s .  c  om*/

        if (t.children().length > 1) {

            fragments.put(t.label().value(), v);
        } else if (t.depth() == 1)
            fragments.put(t.label().value(), v);
    }
    for (Tree child : children) {
        // System.out.println("Merging "+)
        fragments = merge(fragments, getPhraseTypeToFragmentsMap(child));

    }
    return fragments;

}

From source file:qmul.util.treekernel.FragmentIdentifier.java

License:Open Source License

private String getDominatedPhrase(Tree t) {
    String result = "";
    List<Tree> leaves = t.getLeaves();
    for (Tree cur : leaves) {
        result += cur.label().value() + " ";

    }/*from  ww  w  .j a v a  2s . com*/
    return result;
}

From source file:qmul.util.treekernel.Production.java

License:Open Source License

/**
 * Set the BNF-style production for this node
 *///  w  w  w  .  ja  v a  2  s  . c  om
private void setBnf() {
    List<Tree> children = node.getChildrenAsList();
    Label nodeLabel = node.label();
    // System.out.println(nodeLabel.value());
    String bnf;
    if (nodeLabel == null) {
        bnf = "";
    } else {
        bnf = nodeLabel.value();
    }
    for (Tree child : children) {
        Label childLabel = child.label();
        if (childLabel == null) {
            bnf += "";
        } else {
            bnf += SEPARATOR + childLabel.value();
        }
    }
    this.bnf = bnf;
}

From source file:reactivetechnologies.sentigrade.engine.nlp.SentimentAnalyzer.java

License:Apache License

private static void outputPredictedClass(Tree tree) {
    Label label = tree.label();
    if (!(label instanceof CoreLabel)) {
        throw new IllegalArgumentException("Required a tree with CoreLabels");
    }/*ww w. ja v a2s  . co m*/
    CoreLabel cl = (CoreLabel) label;
    cl.setValue(Integer.toString(RNNCoreAnnotations.getPredictedClass(tree)));

}

From source file:reck.parser.lexparser.RECKLexicalizedParser.java

License:Open Source License

public RECKCTTreeNodeImpl convertToRECKTree(Tree root, int startSentence, String content) {

    RECKCTTreeNodeImpl newRoot = null;/*from   w  w w.  j a  v a2  s  . co m*/

    Charseq pos = null;

    List nodeList = root.getLeaves();
    HashSet parentSet = new HashSet();
    int docIndex = startSentence;
    String st = null;

    // compute leaves' positions
    for (int i = 0; i < nodeList.size(); i++) {
        Tree oldNode = (Tree) nodeList.get(i);
        st = oldNode.toString();

        int start = content.indexOf(st, docIndex);
        if (start == -1 || start - docIndex > maxDistanceBetweenLeaves) {
            if (st.indexOf("&") != -1) {
                String tmp = st.replaceAll("&", "&amp;");
                start = content.indexOf(tmp, docIndex);
                if (start == -1 || start - docIndex > maxDistanceBetweenLeaves) {
                    tmp = st.replaceAll("&", "&AMP;");
                    start = content.indexOf(tmp, docIndex);
                }
            }
            if (start != -1 && start - docIndex <= maxDistanceBetweenLeaves) {
                docIndex = start + st.length() + 4;
            } else {
                st = reConvert(st);
                start = content.indexOf(st, docIndex);
                if (start == -1 || start - docIndex > maxDistanceBetweenLeaves) {
                    if (st.equals("-LRB-") || st.equals("-LCB-")) {
                        int i1 = content.indexOf("(", docIndex);
                        int i2 = content.indexOf("[", docIndex);
                        int i3 = content.indexOf("{", docIndex);
                        if (i1 == -1)
                            i1 = content.length();
                        if (i2 == -1)
                            i2 = content.length();
                        if (i3 == -1)
                            i3 = content.length();

                        if ((i1 == i2) && (i1 == i3))
                            System.out.println("Come here !");
                        else if (i1 < i2) {
                            if (i3 < i1) {
                                // st = "{";
                                start = i3;
                            } else {
                                // st = "(";
                                start = i1;
                            }
                        } else {
                            if (i3 < i2) {
                                // st = "{";
                                start = i3;
                            } else {
                                // st = "[";
                                start = i2;
                            }
                        }
                        docIndex = start + 1;
                    }

                    else if (st.equals("-RRB-") || st.equals("-RCB-")) {
                        int i1 = content.indexOf(")", docIndex);
                        int i2 = content.indexOf("]", docIndex);
                        int i3 = content.indexOf("}", docIndex);
                        if (i1 == -1)
                            i1 = content.length();
                        if (i2 == -1)
                            i2 = content.length();
                        if (i3 == -1)
                            i3 = content.length();

                        if ((i1 == i2) && (i1 == i3))
                            System.out.println("Come here !");
                        else if (i1 < i2) {
                            if (i3 < i1) {
                                // st = "}";
                                start = i3;
                            } else {
                                // st = ")";
                                start = i1;
                            }
                        } else {
                            if (i3 < i2) {
                                // st = "}";
                                start = i3;
                            } else {
                                // st = "]";
                                start = i2;
                            }
                        }
                        docIndex = start + 1;
                    }

                    else {

                        for (int k = 0; k < newStrings.length; k++) {
                            st = st.replace(newStrings[k], oldStrings[k]);
                        }

                        String oldSubSt1 = new String(new char[] { (char) 39, (char) 39 });
                        String oldSubSt2 = new String(new char[] { (char) 96, (char) 96 });
                        String newSubSt = new String(new char[] { (char) 34 });
                        if (st.indexOf(oldSubSt1) != -1 && content.substring(docIndex).indexOf(newSubSt) != -1)
                            st = st.replace(oldSubSt1, newSubSt);
                        else if (st.indexOf(oldSubSt2) != -1
                                && content.substring(docIndex).indexOf(newSubSt) != -1)
                            st = st.replace(oldSubSt2, newSubSt);

                        int i39 = content.indexOf(39, docIndex);
                        int i96 = content.indexOf(96, docIndex);

                        if ((st.indexOf(39) != -1) && (i96 != -1 && i96 - docIndex <= maxDistanceBetweenLeaves))
                            st = st.replace((char) 39, (char) 96);
                        else if ((st.indexOf(96) != -1)
                                && (i39 != -1 && i39 - docIndex <= maxDistanceBetweenLeaves))
                            st = st.replace((char) 96, (char) 39);

                        start = content.indexOf(st, docIndex);
                        if (start == -1 || start - docIndex > maxDistanceBetweenLeaves)
                            System.out.println("Come here !");
                        else
                            docIndex = start + st.length();
                    }
                } else
                    docIndex = start + st.length();
            }
        } else
            docIndex = start + st.length();

        // Test if next node is a sentence splitter, means "."
        if (st.endsWith(".") && i < nodeList.size() - 1) {
            Tree nextNode = (Tree) nodeList.get(i + 1);
            String nextLabel = nextNode.label().value();
            int nextStart = content.indexOf(nextLabel, docIndex);

            if (nextLabel.equals(".") && (nextStart == -1 || nextStart - docIndex > maxDistanceBetweenLeaves)) {
                docIndex--;
                oldNode.setLabel(new StringLabel(st.substring(0, st.length() - 1)));
            }
        }

        pos = new Charseq(start, docIndex);
        RECKCTTreeNodeImpl newNode = new RECKCTTreeNodeImpl(new StringLabel(st),
                (List) oldNode.getChildrenAsList(), pos);
        Tree parent = oldNode.parent(root);
        parent.setChild(parent.indexOf(oldNode), newNode);
        parentSet.add(parent);
    }

    nodeList.clear();
    nodeList.addAll(parentSet);

    // compute upper nodes' positions
    while (!nodeList.isEmpty()) {
        parentSet = new HashSet();
        for (int i = 0; i < nodeList.size(); i++) {
            Tree oldNode = (Tree) nodeList.get(i);
            Iterator nodeIter = oldNode.getChildrenAsList().iterator();
            Tree node = (Tree) nodeIter.next();
            while (node instanceof RECKCTTreeNodeImpl && nodeIter.hasNext()) {
                node = (Tree) nodeIter.next();
            }
            if (node instanceof RECKCTTreeNodeImpl) {
                Long start = ((RECKCTTreeNodeImpl) oldNode.firstChild()).getPosition().getStart();
                Long end = ((RECKCTTreeNodeImpl) oldNode.lastChild()).getPosition().getEnd();
                pos = new Charseq(start, end);
                RECKCTTreeNodeImpl newNode = new RECKCTTreeNodeImpl(oldNode.label(),
                        (List) oldNode.getChildrenAsList(), pos);
                Tree parent = oldNode.parent(root);
                parent.setChild(parent.indexOf(oldNode), newNode);
                parentSet.add(parent);

                // if oldNode is in parentSet, remove it
                if (parentSet.contains(oldNode)) {
                    parentSet.remove(oldNode);
                }
            } else {
                parentSet.add(oldNode);
            }
        }

        nodeList.clear();
        if (parentSet.size() == 1 && parentSet.contains(root)) {
            Long start = ((RECKCTTreeNodeImpl) root.firstChild()).getPosition().getStart();
            Long end = ((RECKCTTreeNodeImpl) root.lastChild()).getPosition().getEnd();
            pos = new Charseq(start, end);
            newRoot = new RECKCTTreeNodeImpl(root.label(), (List) root.getChildrenAsList(), pos);
        } else {
            nodeList.addAll(parentSet);
        }
    }

    return newRoot;

}

From source file:weka.filters.unsupervised.attribute.PartOfSpeechTagging.java

License:Open Source License

/**
 * Traverses the tree and adds the leaf data to the string buffer.
 *
 * @param parentTree   the tree to process
 * @param content   the string buffer to add the content to
 * @param pattern     the pattern that the labels must match (null for match-all)
 *//* w w  w .  j a v a  2 s. c o  m*/
protected void traverseTree(Tree parentTree, StringBuilder content, Pattern pattern) {
    Tree childTree;
    int i;
    String word;
    String label;

    for (i = 0; i < parentTree.children().length; i++) {
        childTree = parentTree.children()[i];
        if (childTree.isLeaf()) {
            label = parentTree.label().value();
            word = childTree.label().value();
            // stopword?
            if (m_Stopwords.isStopword(word))
                continue;
            // keep label?
            if ((pattern != null) && !pattern.matcher(label).matches())
                continue;
            if (content.length() > 0)
                content.append(" ");
            if (!m_SuppressLabelPrefixes)
                content.append(label + ":");
            content.append(word);
        }
        traverseTree(childTree, content, pattern);
    }
}

From source file:weka.gui.explorer.tree.StanfordTree.java

License:Open Source License

/**
 * Builds the tree./*from w w w  .  j  av a  2  s .co m*/
 * 
 * @param parentNode   the current parent, null for root
 * @param parentTree      the tree to attach
 * @return      the generated node
 */
protected StanfordNode buildTree(StanfordNode parentNode, Tree parentTree) {
    StanfordNode result;
    StanfordNode childNode;
    Tree childTree;
    int i;

    if (parentNode == null) {
        parentNode = new StanfordNode(StanfordNode.ROOT, parentTree);
        buildTree(parentNode, parentTree);
    } else {
        for (i = 0; i < parentTree.children().length; i++) {
            childTree = parentTree.children()[i];
            childNode = new StanfordNode(childTree.label().value(), childTree);
            parentNode.add(childNode);
            buildTree(childNode, childTree);
        }
    }

    result = parentNode;

    return result;
}

From source file:wtute.engine.TreeHelper.java

public static boolean isConjunction(Tree head) {
    String headTag = head.label().toString();
    return (headTag.equals("IN") || headTag.equals("CC"));
}