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#"));
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. } }
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; }
public GuideUserAction predict(DependencyStructure gold, ParserConfiguration configuration) throws MaltChainedException { final StackConfig config = (StackConfig)configuration; final Stack<DependencyNode> stack = config.getStack(); if (!swapArrayActive) { createSwapArray(gold); swapArrayActive = true; } if (stack.size() < 2) { return updateActionContainers(NonProjective.SHIFT, null); } else { final DependencyNode left = stack.get(stack.size()-2); final DependencyNode right = stack.get(stack.size()-1); final int leftIndex = left.getIndex(); final int rightIndex = right.getIndex(); if (swapArray.get(leftIndex) > swapArray.get(rightIndex) && necessarySwap(gold, config.getDependencyGraph(), right, config.getInput())) { return updateActionContainers(NonProjective.SWAP, null); } else if (!left.isRoot() && gold.getTokenNode(leftIndex).getHead().getIndex() == rightIndex && nodeComplete(gold, config.getDependencyGraph(), leftIndex)) { return updateActionContainers(NonProjective.LEFTARC, gold.getTokenNode(leftIndex).getHeadEdge().getLabelSet()); } else if (gold.getTokenNode(rightIndex).getHead().getIndex() == leftIndex && nodeComplete(gold, config.getDependencyGraph(), rightIndex)) { return updateActionContainers(NonProjective.RIGHTARC, gold.getTokenNode(rightIndex).getHeadEdge().getLabelSet()); } else { return updateActionContainers(NonProjective.SHIFT, null); } } }
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; } }
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); } }
getLinkDecision(gold.getTokenNode(inputPeekIndex).getHeadEdge(),config) == plane ) current = gold.getTokenNode(inputPeekIndex).getHeadEdge();
if ( planarConfig.getStackActivityState() == TwoPlanarConfig.FIRST_STACK ) propagatePlaneConstraint(gold.getTokenNode(activeStackPeekIndex).getHeadEdge(), FIRST_PLANE ); propagatePlaneConstraint(gold.getTokenNode(activeStackPeekIndex).getHeadEdge(), SECOND_PLANE ); return updateActionContainers(TwoPlanar.LEFTARC, gold.getTokenNode(activeStackPeekIndex).getHeadEdge().getLabelSet()); if ( planarConfig.getStackActivityState() == TwoPlanarConfig.FIRST_STACK ) propagatePlaneConstraint(gold.getTokenNode(inputPeekIndex).getHeadEdge(), FIRST_PLANE ); propagatePlaneConstraint(gold.getTokenNode(inputPeekIndex).getHeadEdge(), SECOND_PLANE ); return updateActionContainers(TwoPlanar.RIGHTARC, gold.getTokenNode(inputPeekIndex).getHeadEdge().getLabelSet());
public GuideUserAction predict(DependencyStructure gold, ParserConfiguration config) throws MaltChainedException { final NivreConfig nivreConfig = (NivreConfig)config; final DependencyNode stackPeek = nivreConfig.getStack().peek(); final int stackPeekIndex = stackPeek.getIndex(); final int inputPeekIndex = nivreConfig.getInput().peek().getIndex(); if (!stackPeek.isRoot() && gold.getTokenNode(stackPeekIndex).getHead().getIndex() == inputPeekIndex) { return updateActionContainers(ArcEager.LEFTARC, gold.getTokenNode(stackPeekIndex).getHeadEdge().getLabelSet()); } else if (gold.getTokenNode(inputPeekIndex).getHead().getIndex() == stackPeekIndex) { return updateActionContainers(ArcEager.RIGHTARC, gold.getTokenNode(inputPeekIndex).getHeadEdge().getLabelSet()); } else if (!nivreConfig.isAllowReduce() && !stackPeek.hasHead()) { return updateActionContainers(ArcEager.SHIFT, null); } else if (gold.getTokenNode(inputPeekIndex).hasLeftDependent() && gold.getTokenNode(inputPeekIndex).getLeftmostDependent().getIndex() < stackPeekIndex) { return updateActionContainers(ArcEager.REDUCE, null); } else if (gold.getTokenNode(inputPeekIndex).getHead().getIndex() < stackPeekIndex && (!gold.getTokenNode(inputPeekIndex).getHead().isRoot() || nivreConfig.isAllowRoot())) { return updateActionContainers(ArcEager.REDUCE, null); } else { return updateActionContainers(ArcEager.SHIFT, null); } }
public GuideUserAction predict(DependencyStructure gold, ParserConfiguration config) throws MaltChainedException { PlanarConfig planarConfig = (PlanarConfig)config; DependencyStructure dg = planarConfig.getDependencyGraph(); DependencyNode stackPeek = planarConfig.getStack().peek(); int stackPeekIndex = stackPeek.getIndex(); int inputPeekIndex = planarConfig.getInput().peek().getIndex(); if (!stackPeek.isRoot() && gold.getTokenNode(stackPeekIndex).getHead().getIndex() == inputPeekIndex && !checkIfArcExists ( dg , inputPeekIndex , stackPeekIndex ) ) { return updateActionContainers(Planar.LEFTARC, gold.getTokenNode(stackPeekIndex).getHeadEdge().getLabelSet()); } else if (gold.getTokenNode(inputPeekIndex).getHead().getIndex() == stackPeekIndex && !checkIfArcExists ( dg , stackPeekIndex , inputPeekIndex ) ) { return updateActionContainers(Planar.RIGHTARC, gold.getTokenNode(inputPeekIndex).getHeadEdge().getLabelSet()); } else if (gold.getTokenNode(inputPeekIndex).hasLeftDependent() && gold.getTokenNode(inputPeekIndex).getLeftmostDependent().getIndex() < stackPeekIndex) { return updateActionContainers(Planar.REDUCE, null); } else if (gold.getTokenNode(inputPeekIndex).getHead().getIndex() < stackPeekIndex && ( !gold.getTokenNode(inputPeekIndex).getHead().isRoot() || planarConfig.getRootHandling()==PlanarConfig.NORMAL ) ) { return updateActionContainers(Planar.REDUCE, null); } else { return updateActionContainers(Planar.SHIFT, null); } }
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); } }