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; } }
while (tmp != top && tmp.getParent() != null) { // && !tmp.getParent().isRoot()) { i=0; for (String name : edgeLabelSymbolTables.keySet()) { headrel.append(SPINE_ELEMENT_SEPARATOR); for (String name : nodeLabelSymbolTables.keySet()) { if (tmp.getParent().hasLabel(symbolTables.getSymbolTable(name))) { phrase.append(tmp.getParent().getLabelSymbol(symbolTables.getSymbolTable(name))); } else { if (tmp.getParent().isRoot()) { String deprelDefaultRootLabel = graph.getDefaultRootEdgeLabelSymbol(symbolTables.getSymbolTable(PHRASE)); if (deprelDefaultRootLabel != null) { tmp = tmp.getParent(); int a = 0; tmp = (PhraseStructureNode)e.getSource(); while (top.getParent() != null && tmp.getParent() != null && tmp.getParent() != top.getParent()) { a++; tmp = tmp.getParent();
for (String edgeLabelColumn : edgeLabelColumns.keySet()) { table = symbolTables.getSymbolTable(edgeLabelColumns.get(edgeLabelColumn).getName()); if (t.hasParentEdgeLabel(table) && !t.getParent().isRoot() && !t.getParentEdgeLabelSymbol(table).equals(EMPTY_EDGELABEL)) { writer.write(EDGELABEL_SEPARATOR); writer.write(t.getParentEdgeLabelSymbol(table));
private void connectUnattachedSpines(MappablePhraseStructureGraph graph, DependencyNode depNode) throws MaltChainedException { if (!depNode.isRoot()) { PhraseStructureNode dependentSpine = (PhraseStructureNode)depNode; while (dependentSpine.getParent() != null) { dependentSpine = dependentSpine.getParent(); } if (!dependentSpine.isRoot()) { updatePhraseStructureGraph(graph,depNode.getHeadEdge(),true); } } for (int i = 0; i < depNode.getLeftDependentCount(); i++) { connectUnattachedSpines(graph, depNode.getLeftDependent(i)); } for (int i = depNode.getRightDependentCount()-1; i >= 0 ; i--) { connectUnattachedSpines(graph, depNode.getRightDependent(i)); } }
} else if (column.getCategory() == ColumnDescription.PHRASE_STRUCTURE_EDGE_LABEL) { SymbolTable table = symbolTables.getSymbolTable(column.getName()); if (terminal.getParent() != null && terminal.hasParentEdgeLabel(table)) { writer.write(terminal.getParentEdgeLabelSymbol(table)); writer.write('\t'); if (terminal.getParent() == null || terminal.getParent() == phraseStructure.getPhraseStructureRoot()) { writer.write('0'); } else { writer.write(Integer.toString(nonTerminalIndexMap.get(terminal.getParent().getIndex())));
public boolean isContinuous() { int lcorner = getLeftmostProperDescendant().getIndex(); int rcorner = getRightmostProperDescendant().getIndex(); if (lcorner == rcorner) { return true; } TokenNode terminal = ((TokenStructure)getBelongsToGraph()).getTokenNode(lcorner); while (terminal.getIndex() != rcorner) { PhraseStructureNode tmp = terminal.getParent(); while (true) { if (tmp == this) { break; } if (tmp == null) { return false; } tmp = tmp.getParent(); } terminal = terminal.getTokenNodeSuccessor(); } return true; }
for (String edgeLabelColumn : edgeLabelColumns.keySet()) { table = symbolTables.getSymbolTable(edgeLabelColumns.get(edgeLabelColumn).getName()); if (t.hasParentEdgeLabel(table) && !t.getParent().isRoot() && !t.getParentEdgeLabelSymbol(table).equals(EMPTY_EDGELABEL)) { writer.write(EDGELABEL_SEPARATOR); writer.write(t.getParentEdgeLabelSymbol(table));
public void updatePhraseStructureGraph(MappablePhraseStructureGraph graph, Edge depEdge, boolean attachHeadSpineToRoot) throws MaltChainedException { PhraseStructureNode dependentSpine = (PhraseStructureNode)depEdge.getTarget(); if (((PhraseStructureNode)depEdge.getTarget()).getParent() == null) { while (dependentSpine.getParent() != null && !dependentSpine.getParent().isRoot()) { dependentSpine = dependentSpine.getParent(); if (((PhraseStructureNode)depEdge.getSource()).getParent() != null) { headSpine = ((PhraseStructureNode)depEdge.getSource()).getParent(); if (depEdge.hasLabel(graph.getSymbolTables().getSymbolTable(ATTACH))) { try { headSpine = headSpine.getParent();
public boolean isContinuousExcludeTerminalsAttachToRoot() { int lcorner = getLeftmostProperDescendant().getIndex(); int rcorner = getRightmostProperDescendant().getIndex(); if (lcorner == rcorner) { return true; } TokenNode terminal = ((TokenStructure)getBelongsToGraph()).getTokenNode(lcorner); while (terminal.getIndex() != rcorner) { if (terminal.getParent() != null && terminal.getParent().isRoot()) { terminal = terminal.getTokenNodeSuccessor(); continue; } PhraseStructureNode tmp = terminal.getParent(); while (true) { if (tmp == this) { break; } if (tmp == null) { return false; } tmp = tmp.getParent(); } terminal = terminal.getTokenNodeSuccessor(); } return true; }