public GuideUserAction predict(DependencyStructure gold, ParserConfiguration config) throws MaltChainedException { CovingtonConfig covingtonConfig = (CovingtonConfig)config; DependencyNode leftTarget = covingtonConfig.getLeftTarget(); int leftTargetIndex = leftTarget.getIndex(); int rightTargetIndex = covingtonConfig.getRightTarget().getIndex(); if (!leftTarget.isRoot() && gold.getTokenNode(leftTargetIndex).getHead().getIndex() == rightTargetIndex) { return updateActionContainers(NonProjective.LEFTARC, gold.getTokenNode(leftTargetIndex).getHeadEdge().getLabelSet()); } else if (gold.getTokenNode(rightTargetIndex).getHead().getIndex() == leftTargetIndex) { return updateActionContainers(NonProjective.RIGHTARC, gold.getTokenNode(rightTargetIndex).getHeadEdge().getLabelSet()); } else if (covingtonConfig.isAllowShift() == true && (!(gold.getTokenNode(rightTargetIndex).hasLeftDependent() && gold.getTokenNode(rightTargetIndex).getLeftmostDependent().getIndex() < leftTargetIndex) && !(gold.getTokenNode(rightTargetIndex).getHead().getIndex() < leftTargetIndex && (!gold.getTokenNode(rightTargetIndex).getHead().isRoot() || covingtonConfig.getLeftstop() == 0)))) { return updateActionContainers(NonProjective.SHIFT, null); } else { return updateActionContainers(NonProjective.NOARC, null); } }
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; }
if (column.getCategory() == ColumnDescription.INPUT) { if (!column.getName().equals("ID")) { if (node.hasLabel(symbolTables.getSymbolTable(column.getName())) && node.getLabelSymbol(symbolTables.getSymbolTable(column.getName())).length() > 0) { sb.append(node.getLabelSymbol(symbolTables.getSymbolTable(column.getName()))); } else { sb.append('_');
private boolean nodeComplete(DependencyStructure gold, DependencyStructure parseDependencyGraph, int nodeIndex) { if (gold.getTokenNode(nodeIndex).hasLeftDependent()) { if (!parseDependencyGraph.getTokenNode(nodeIndex).hasLeftDependent()) { return false; } else if (gold.getTokenNode(nodeIndex).getLeftmostDependent().getIndex() != parseDependencyGraph.getTokenNode(nodeIndex).getLeftmostDependent().getIndex()) { return false; } } if (gold.getTokenNode(nodeIndex).hasRightDependent()) { if (!parseDependencyGraph.getTokenNode(nodeIndex).hasRightDependent()) { return false; } else if (gold.getTokenNode(nodeIndex).getRightmostDependent().getIndex() != parseDependencyGraph.getTokenNode(nodeIndex).getRightmostDependent().getIndex()) { return false; } } return true; }
public GuideUserAction predict(DependencyStructure gold, ParserConfiguration configuration) throws MaltChainedException { StackConfig config = (StackConfig)configuration; Stack<DependencyNode> stack = config.getStack(); if (stack.size() < 2) { return updateActionContainers(Projective.SHIFT, null); } else { DependencyNode left = stack.get(stack.size()-2); int leftIndex = left.getIndex(); int rightIndex = stack.get(stack.size()-1).getIndex(); if (!left.isRoot() && gold.getTokenNode(leftIndex).getHead().getIndex() == rightIndex) { return updateActionContainers(Projective.LEFTARC, gold.getTokenNode(leftIndex).getHeadEdge().getLabelSet()); } else if (gold.getTokenNode(rightIndex).getHead().getIndex() == leftIndex && checkRightDependent(gold, config.getDependencyGraph(), rightIndex)) { return updateActionContainers(Projective.RIGHTARC, gold.getTokenNode(rightIndex).getHeadEdge().getLabelSet()); } else { return updateActionContainers(Projective.SHIFT, null); } // Solve the problem with non-projective input. } }
return false; if ( stackPeek.hasHead() && dg.getTokenNode(stackPeek.getIndex()).getHead().getIndex() == inputPeek.getIndex() ) return false; return false; if ( inputPeek.hasHead() && dg.getTokenNode(inputPeek.getIndex()).getHead().getIndex() == stackPeek.getIndex() ) return false; boolean path = ( planarConfig.getDependencyGraph().getTokenNode(1).findComponent().getIndex() == inputPeek.findComponent().getIndex() ); //require connection to 1st return path;
initDeprojeciviztion(pdg); for (int index : pdg.getTokenIndices()) { if (pdg.getTokenNode(index).getHeadEdge().hasLabel(deprelSymbolTable)) { label = deprelSymbolTable.getSymbolCodeToString(pdg.getTokenNode(index).getHeadEdge().getLabelCode(deprelSymbolTable)); if (label != null && (pathLabelIndex = label.indexOf("%")) != -1) { label = label.substring(0, pathLabelIndex); setLabel(pdg.getTokenNode(index), label); pdg.getTokenNode(index).getHeadEdge().addLabel(pppathSymbolTable, pppathSymbolTable.getSymbolStringToCode("#true#")); pdg.getTokenNode(index).getHeadEdge().addLabel(ppliftedSymbolTable, ppliftedSymbolTable.getSymbolStringToCode(label.substring(movedLabelIndex + 1))); } else { pdg.getTokenNode(index).getHeadEdge().addLabel(ppliftedSymbolTable, ppliftedSymbolTable.getSymbolStringToCode("#true#")); if (pdg.getTokenNode(index).getHeadEdge().hasLabel(deprelSymbolTable)) { label = deprelSymbolTable.getSymbolCodeToString(pdg.getTokenNode(index).getHeadEdge().getLabelCode(deprelSymbolTable)); if ((coveredArcLabelIndex = label.indexOf("|null")) != -1) { label = label.substring(0, coveredArcLabelIndex); setLabel(pdg.getTokenNode(index), label); pdg.getTokenNode(index).getHeadEdge().addLabel(ppcoveredRootSymbolTable, ppcoveredRootSymbolTable.getSymbolStringToCode("#true#"));
if (inputColumnsIterator.hasNext()) { t.addLabel(symbolTables.getSymbolTable(inputColumns.get(inputColumnsIterator.next()).getName()), } else { if (inputColumnsIterator.hasNext()) { t.addLabel(symbolTables.getSymbolTable(inputColumns.get(inputColumnsIterator.next()).getName()), (i == end - 1)?input.substring(start,end):input.substring(start, i));
private void deattachCoveredRootsForProjectivization(DependencyStructure pdg) throws MaltChainedException { for (int index : pdg.getTokenIndices()) { if (isCoveredRoot(pdg.getTokenNode(index))) { pdg.moveDependencyEdge(pdg.getDependencyRoot().getIndex(), pdg.getTokenNode(index).getIndex()); } } }
for (Edge edge : curNode.getHeadEdges()) { int sourceIdx = edge.getSource().getIndex(); int targetIdx = edge.getTarget().getIndex();
public GuideUserAction predict(DependencyStructure gold, ParserConfiguration configuration) throws MaltChainedException { StackConfig config = (StackConfig)configuration; Stack<DependencyNode> stack = config.getStack(); if (!swapArrayActive) { createSwapArray(gold); swapArrayActive = true; } GuideUserAction action = null; if (stack.size() < 2) { action = updateActionContainers(NonProjective.SHIFT, null); } else { DependencyNode left = stack.get(stack.size()-2); int leftIndex = left.getIndex(); int rightIndex = stack.get(stack.size()-1).getIndex(); if (swapArray.get(leftIndex) > swapArray.get(rightIndex)) { action = updateActionContainers(NonProjective.SWAP, null); } else if (!left.isRoot() && gold.getTokenNode(leftIndex).getHead().getIndex() == rightIndex && nodeComplete(gold, config.getDependencyGraph(), leftIndex)) { action = updateActionContainers(NonProjective.LEFTARC, gold.getTokenNode(leftIndex).getHeadEdge().getLabelSet()); } else if (gold.getTokenNode(rightIndex).getHead().getIndex() == leftIndex && nodeComplete(gold, config.getDependencyGraph(), rightIndex)) { action = updateActionContainers(NonProjective.RIGHTARC, gold.getTokenNode(rightIndex).getHeadEdge().getLabelSet()); } else { action = updateActionContainers(NonProjective.SHIFT, null); } } return action; }
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; } }
maxIndex = 0; //do not count links from dummy root if ( gold.getTokenNode(inputPeekIndex).hasLeftDependent() && gold.getTokenNode(inputPeekIndex).getLeftmostDependent().getIndex() < rightmostLimit) SortedSet<DependencyNode> dependents = gold.getTokenNode(inputPeekIndex).getLeftDependents(); for (Iterator<DependencyNode> iterator = dependents.iterator(); iterator.hasNext();) { DependencyNode dependent = (DependencyNode) iterator.next(); if ( gold.getTokenNode(inputPeekIndex).getHead().getIndex() < rightmostLimit ) if ( gold.getTokenNode(inputPeekIndex).getHead().getIndex() > maxIndex && getLinkDecision(gold.getTokenNode(inputPeekIndex).getHeadEdge(),config) == plane ) current = gold.getTokenNode(inputPeekIndex).getHeadEdge();
public GuideUserAction predict(DependencyStructure gold, ParserConfiguration config) throws MaltChainedException { NivreConfig nivreConfig = (NivreConfig)config; DependencyNode stackPeek = nivreConfig.getStack().peek(); int stackPeekIndex = stackPeek.getIndex(); int inputPeekIndex = nivreConfig.getInput().peek().getIndex(); if (!nivreConfig.isAllowRoot() && stackPeek.isRoot()) { return updateActionContainers(ArcStandard.SHIFT, null); } if (!stackPeek.isRoot() && gold.getTokenNode(stackPeekIndex).getHead().getIndex() == inputPeekIndex) { return updateActionContainers(ArcStandard.LEFTARC, gold.getTokenNode(stackPeekIndex).getHeadEdge().getLabelSet()); } else if (gold.getTokenNode(inputPeekIndex).getHead().getIndex() == stackPeekIndex && checkRightDependent(gold, nivreConfig.getDependencyGraph(), inputPeekIndex)) { return updateActionContainers(ArcStandard.RIGHTARC, gold.getTokenNode(inputPeekIndex).getHeadEdge().getLabelSet()); } else { return updateActionContainers(ArcStandard.SHIFT, null); } }
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; }
DependencyStructure dg = covingtonConfig.getDependencyStructure(); DependencyNode leftNode = covingtonConfig.getInput().get(covingtonConfig.getLeft()); if (dg.getTokenNode(leftNode.getIndex()) != null && dg.getTokenNode(leftNode.getIndex()).hasHead()) { left = dg.getTokenNode(leftNode.getIndex()).getHead().getIndex(); } else { left = leftstop - 1;
TokenNode node = syntaxGraph.getTokenNode(i); if (!column.getName().equals("ID")) { if (node.hasLabel(symbolTables.getSymbolTable(column.getName()))) { output.append(node.getLabelSymbol(symbolTables.getSymbolTable(column.getName()))); if (output.length() != 0) { writer.write(output.toString());