List of usage examples for edu.stanford.nlp.trees Tree label
@Override
public Label label()
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("&", "&"); start = content.indexOf(tmp, docIndex); if (start == -1 || start - docIndex > maxDistanceBetweenLeaves) { tmp = st.replaceAll("&", "&"); 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")); }