public int getHeight() { int max = -1; for (PhraseStructureNode node : children) { if (node instanceof Token) { if (max < 0) { max = 0; } } else { int nodeheight = ((NonTerminalNode)node).getHeight(); if (max < nodeheight) { max = nodeheight; } } } return max + 1; }
public Direction getDefaultDirection(NonTerminalNode nt) throws MaltChainedException { HeadRule rule = null; if (nt.hasLabel(nonTerminalSymbolTable)) { rule = this.get(nonTerminalSymbolTable.getName()+":"+nt.getLabelSymbol(nonTerminalSymbolTable)); } if (rule == null && nt.hasParentEdgeLabel(edgelabelSymbolTable)) { rule = this.get(edgelabelSymbolTable.getName()+":"+nt.getParentEdgeLabelSymbol(edgelabelSymbolTable)); } if (rule != null) { return rule.getDefaultDirection(); } return Direction.LEFT; }
public ComparableNode getLeftmostProperDescendant() { NonTerminalNode node = this; PhraseStructureNode candidate = null; while (node != null) { candidate = node.getLeftChild(); if (candidate == null || candidate instanceof TokenNode) { return candidate; } node = (NonTerminalNode)candidate; } return null; }
if (nonTerminal == null || nonTerminal.isRoot()) { return; if (nonTerminal.hasLabel(symbolTables.getSymbolTable("CAT"))) { writer.write(nonTerminal.getLabelSymbol(symbolTables.getSymbolTable("CAT"))); } else { writer.write("--"); if (nonTerminal.hasParentEdgeLabel(symbolTables.getSymbolTable("LABEL"))) { writer.write(nonTerminal.getParentEdgeLabelSymbol(symbolTables.getSymbolTable("LABEL"))); } else { writer.write("--"); if (nonTerminal.getParent() == null || nonTerminal.getParent().isRoot()) { writer.write('0'); } else { writer.write(Integer.toString(nonTerminalIndexMap.get(nonTerminal.getParent().getIndex()))); for (Edge e : nonTerminal.getIncomingSecondaryEdges()) { if (e.hasLabel(symbolTables.getSymbolTable("SECEDGELABEL"))) { writer.write('\t');
if (nt.hasLabel(table)) { writer.write(nt.getLabelSymbol(table)); if (nt.hasParentEdgeLabel(table) && !nt.getParent().isRoot() && !nt.getParentEdgeLabelSymbol(table).equals(EMPTY_EDGELABEL)) { writer.write(EDGELABEL_SEPARATOR); writer.write(nt.getParentEdgeLabelSymbol(table)); for (PhraseStructureNode node : ((NonTerminalNode)element).getChildren()) { writeElement(symbolTables, node);
writer.write(" id=\"");writer.write(id);writer.write("\" "); for (ColumnDescription column : dataFormatInstance.getPhraseStructureNodeLabelColumnDescriptionSet()) { if (nt.hasLabel(symbolTables.getSymbolTable(column.getName()))) { writer.write(column.getName().toLowerCase()); writer.write("="); writer.write("\""); writer.write(Util.xmlEscape(nt.getLabelSymbol(symbolTables.getSymbolTable(column.getName())))); writer.write("\" "); for (int i = 0, n = nt.nChildren(); i < n; i++) { PhraseStructureNode child = nt.getChild(i); writer.write(" <edge ");
public PhraseStructureNode getHeadChild(NonTerminalNode nt, Direction direction) throws MaltChainedException { boolean match = false; if (direction == Direction.LEFT) { for (PhraseStructureNode child : nt.getChildren()) { for (int j = 0; j < size(); j++) { match = matchHeadChild(child, get(j)); for (int i = nt.nChildren()-1; i >= 0; i--) { PhraseStructureNode child = nt.getChild(i); for (int j = 0; j < size(); j++) { match = matchHeadChild(child, get(j));
private void calculateIndices(PhraseStructure phraseStructure) throws MaltChainedException { final SortedMap<Integer,Integer> heights = new TreeMap<Integer,Integer>(); for (int index : phraseStructure.getNonTerminalIndices()) { heights.put(index, ((NonTerminalNode)phraseStructure.getNonTerminalNode(index)).getHeight()); if (heights.get(index) == h) { NonTerminalNode nt = (NonTerminalNode)phraseStructure.getNonTerminalNode(index); nonTerminalIndexMap.put(nt.getIndex(), ntid++);
DependencyNode dependent = null; if (top instanceof NonTerminalNode) { for (PhraseStructureNode node : ((NonTerminalNode)top).getChildren()) { if (node instanceof NonTerminalNode) { updateDependencyEdges(graph,node); } else { head = ((NonTerminalNode)top).getLexicalHead(headRules); dependent = (DependencyNode)node; if (head != null && dependent != null && head != dependent) { head = ((NonTerminalNode)top.getParent()).getLexicalHead(headRules); } else if (top.isRoot()) { head = (DependencyNode)top; dependent = ((NonTerminalNode)top).getLexicalHead(headRules); } else if (!top.isRoot()) { dependent = (DependencyNode)top;
private void updateDependenyLabels(MappablePhraseStructureGraph graph) throws MaltChainedException { for (int index :graph.getTokenIndices()) { PhraseStructureNode top = (PhraseStructureNode)graph.getTokenNode(index); while (top != null && top.getParent() != null &&graph.getTokenNode(index) == ((NonTerminalNode)top.getParent()).getLexicalHead(headRules)) { top = top.getParent(); } lockUpdate = true; labelDependencyEdge(graph, graph.getTokenNode(index).getHeadEdge(), top); lockUpdate = false; } }
if (nt.hasLabel(table)) { writer.write(nt.getLabelSymbol(table)); if (nt.hasParentEdgeLabel(table) && !nt.getParent().isRoot() && !nt.getParentEdgeLabelSymbol(table).equals(EMPTY_EDGELABEL)) { writer.write(EDGELABEL_SEPARATOR); writer.write(nt.getParentEdgeLabelSymbol(table)); for (PhraseStructureNode node : ((NonTerminalNode)element).getChildren()) { writeElement(symbolTables, node, depth + 1);
SortedMap<Integer,Integer> heights = new TreeMap<Integer,Integer>(); for (int index : phraseStructure.getNonTerminalIndices()) { heights.put(index, ((NonTerminalNode)phraseStructure.getNonTerminalNode(index)).getHeight()); tmpID.append(sentenceID); tmpID.append('_'); tmpID.append(Integer.toString(nt.getIndex()+START_ID_OF_NONTERMINALS-1)); writeNonTerminal(phraseStructure.getSymbolTables(), nt, tmpID.toString()); done = false;
public PhraseStructureNode getHeadChild(NonTerminalNode nt) throws MaltChainedException { HeadRule rule = null; if (nt.hasLabel(nonTerminalSymbolTable)) { rule = this.get(nonTerminalSymbolTable.getName()+":"+nt.getLabelSymbol(nonTerminalSymbolTable)); } if (rule == null && nt.hasParentEdgeLabel(edgelabelSymbolTable)) { rule = this.get(edgelabelSymbolTable.getName()+":"+nt.getParentEdgeLabelSymbol(edgelabelSymbolTable)); } if (rule != null) { return rule.getHeadChild(nt); } return null; }
public ComparableNode getLeftmostProperDescendant() throws MaltChainedException { NonTerminalNode node = this; ComparableNode candidate = null; while (node != null) { candidate = node.getLeftChild(); if (candidate == null || candidate instanceof TokenNode) { break; } node = (NonTerminalNode)candidate; } if (candidate == null && candidate instanceof NonTerminalNode) { candidate = null; DependencyNode dep = null; for (int index : ((TokenStructure)getBelongsToGraph()).getTokenIndices()) { dep = ((TokenStructure)getBelongsToGraph()).getTokenNode(index); while (dep != null) { if (dep == this ) { return dep; } dep = dep.getHead(); } } } return candidate; }
public int getHeight() { int max = -1; for (PhraseStructureNode node : children) { if (node instanceof Token) { if (max < 0) { max = 0; } } else { int nodeheight = ((NonTerminalNode)node).getHeight(); if (max < nodeheight) { max = nodeheight; } } } return max + 1; }