Package org.maltparserx.core.syntaxgraph.node

Examples of org.maltparserx.core.syntaxgraph.node.DependencyNode


  }
 
  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());
View Full Code Here


      featureValue.setNullValue(true);     
    } else {
      // Unfortunately this method takes a lot of time  arg1.getAddressClass().asSubclass(org.maltparser.core.syntaxgraph.node.DependencyNode.class);
      // Cast the address arguments to dependency nodes
      final DependencyNode node1 = (DependencyNode)arg1.getAddress();
      final DependencyNode node2 = (DependencyNode)arg2.getAddress();
     
      if (!node1.isRoot() && !node2.isRoot()) {
        // Calculates the distance
        final int index1 = node1.getIndex();
        final int index2 = node2.getIndex();
        final int distance = Math.abs(index1-index2);
       
       
        int lower = -1;
        boolean f = false;
View Full Code Here

  public boolean permissible(GuideUserAction currentAction, ParserConfiguration config) throws MaltChainedException {
    currentAction.getAction(actionContainers);
    int trans = transActionContainer.getActionCode();
    PlanarConfig planarConfig = (PlanarConfig)config;
    DependencyNode stackPeek = planarConfig.getStack().peek();
    DependencyNode inputPeek = planarConfig.getInput().peek();
    DependencyStructure dg = planarConfig.getDependencyGraph();
    //int rootHandling = planarConfig.getRootHandling();
    boolean singleHeadConstraint = planarConfig.requiresSingleHead();
    boolean noCoveredRootsConstraint = planarConfig.requiresNoCoveredRoots();
    boolean acyclicityConstraint = planarConfig.requiresAcyclicity();
    boolean connectednessConstraintOnReduce = planarConfig.requiresConnectednessCheckOnReduce();
    boolean connectednessConstraintOnShift = planarConfig.requiresConnectednessCheckOnShift();
    if ((trans == LEFTARC || trans == RIGHTARC) && !isActionContainersLabeled()) {
      return false;
    }
    //if ((trans == LEFTARC || trans == REDUCE) && stackPeek.isRoot()) {
    //  return false;
    //}
    if (trans == LEFTARC) {
      //avoid making root child of something
      if ( stackPeek.isRoot() )
        return false;
      //enforce single-head constraint if present
      if ( stackPeek.hasHead() && singleHeadConstraint )
        return false;
      //avoid two links being created from and to the same node
      if ( stackPeek.hasHead() && dg.getTokenNode(stackPeek.getIndex()).getHead().getIndex() == inputPeek.getIndex() )
        return false;
      //enforce acyclicity constraint if present
      if ( acyclicityConstraint && stackPeek.findComponent().getIndex() == inputPeek.findComponent().getIndex() )
        return false;
    }
    if (trans == RIGHTARC) {
      //enforce single-head constraint if present
      if ( inputPeek.hasHead() && singleHeadConstraint )
        return false;
      //avoid two links being created from and to the same node
      if ( inputPeek.hasHead() && dg.getTokenNode(inputPeek.getIndex()).getHead().getIndex() == stackPeek.getIndex() )
        return false;
      //enforce acyclicity constraint if present
      if ( acyclicityConstraint && stackPeek.findComponent().getIndex() == inputPeek.findComponent().getIndex() )
        return false;
    }
    if (trans == REDUCE) {
      //do not reduce the dummy root
      if ( stackPeek.isRoot() )
        return false;
      //enforce no-covered-roots constraint if present
      if ( !stackPeek.hasHead() && noCoveredRootsConstraint )
        return false;
      //TODO does this line still make sense? (from Nivre arc-eager)
      //if ( !stackPeek.hasHead() && rootHandling == PlanarConfig.STRICT )
      //  return false;
      //enforce connectedness constraint if present
      if ( connectednessConstraintOnReduce )
      {
        boolean path1 = ( stackPeek.findComponent().getIndex() == inputPeek.findComponent().getIndex() );
        boolean path2;
        if ( planarConfig.getStack().size() < 2 ) path2=false;
        else
        {
          DependencyNode stackPrev = planarConfig.getStack().get(planarConfig.getStack().size()-2);
          path2 = stackPrev.findComponent().getIndex() == stackPeek.findComponent().getIndex();
        }
        return path1 || path2;
      }
    }
    if ( trans == SHIFT )
View Full Code Here

   
    if (a.getAddress() == null) {
      featureValue.update(column.getSymbolTable().getNullValueCode(NullValueId.NO_NODE),
          column.getSymbolTable().getNullValueSymbol(NullValueId.NO_NODE), true, 1);
    } else {
      final DependencyNode node = (DependencyNode)a.getAddress();
      if (!node.isRoot()) {
        if (node.hasHead()) {
          int indexCode = node.getHeadEdge().getLabelCode(column.getSymbolTable());
          String symbol = column.getSymbolTable().getSymbolCodeToString(indexCode);
          if (column.getType() == ColumnDescription.STRING) {
            featureValue.update(indexCode, symbol, false, 1);
          } else {
            castFeatureValue(symbol);
View Full Code Here

  private Map<Edge,Integer> linksToPlanes = new IdentityHashMap<Edge,Integer>();
 
  public GuideUserAction predict(DependencyStructure gold, ParserConfiguration config) throws MaltChainedException {
    TwoPlanarConfig planarConfig = (TwoPlanarConfig)config;
    DependencyStructure dg = planarConfig.getDependencyGraph();
    DependencyNode activeStackPeek = planarConfig.getActiveStack().peek();
    DependencyNode inactiveStackPeek = planarConfig.getInactiveStack().peek();
    int activeStackPeekIndex = activeStackPeek.getIndex();
    int inactiveStackPeekIndex = inactiveStackPeek.getIndex();
    int inputPeekIndex = planarConfig.getInput().peek().getIndex();
   
    //System.out.println("Initting crossings");
   
    if ( crossingsGraph == null ) initCrossingsGraph(gold);
   
    //System.out.println("Crossings initted");
   
    if (!activeStackPeek.isRoot() && gold.getTokenNode(activeStackPeekIndex).getHead().getIndex() == inputPeekIndex
        && !checkIfArcExists ( dg , inputPeekIndex , activeStackPeekIndex ) )  {
      if ( planarConfig.getStackActivityState() == TwoPlanarConfig.FIRST_STACK )
      {
        propagatePlaneConstraint(gold.getTokenNode(activeStackPeekIndex).getHeadEdge(), FIRST_PLANE );
      }
      else
      {
        propagatePlaneConstraint(gold.getTokenNode(activeStackPeekIndex).getHeadEdge(), SECOND_PLANE );
      }
      //System.out.println("From " + inputPeekIndex + " to " + activeStackPeekIndex);
      return updateActionContainers(TwoPlanar.LEFTARC, gold.getTokenNode(activeStackPeekIndex).getHeadEdge().getLabelSet())
    }
   
    else if (gold.getTokenNode(inputPeekIndex).getHead().getIndex() == activeStackPeekIndex
        && !checkIfArcExists ( dg , activeStackPeekIndex , inputPeekIndex ) ) {
      if ( planarConfig.getStackActivityState() == TwoPlanarConfig.FIRST_STACK )
      {
        propagatePlaneConstraint(gold.getTokenNode(inputPeekIndex).getHeadEdge(), FIRST_PLANE );
      }
      else
      {
        propagatePlaneConstraint(gold.getTokenNode(inputPeekIndex).getHeadEdge(), SECOND_PLANE );
      }
      //System.out.println("From " + activeStackPeekIndex + " to " + inputPeekIndex);
      return updateActionContainers(TwoPlanar.RIGHTARC, gold.getTokenNode(inputPeekIndex).getHeadEdge().getLabelSet());
    }
   
    else if (!inactiveStackPeek.isRoot() && gold.getTokenNode(inactiveStackPeekIndex).getHead().getIndex() == inputPeekIndex
        && !checkIfArcExists ( dg , inputPeekIndex , inactiveStackPeekIndex ) )  {
      //need to create link, but on the other plane!!
      //TODO is this if branch really necessary? i.e. will this happen? (later branches already switch)
      //System.out.println("Switch one");
      return updateActionContainers(TwoPlanar.SWITCH, null);
View Full Code Here

    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 ( dependent.getIndex() > maxIndex && dependent.getIndex() < rightmostLimit
            && getLinkDecision(dependent.getHeadEdge(),config) == plane )
        {
          maxIndex = dependent.getIndex();
          current = dependent.getHeadEdge();
        }
      }
    }
   
    //at this point, current is the first left-pointing link, but we have to check right-pointing link as well
View Full Code Here

    setGuideName("NonProjective");
  }
 
  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)
View Full Code Here

    case REDUCEBOTH:
      activeStack.pop();
      inactiveStack.pop();
      break;
    default: //SHIFT
      DependencyNode n = input.pop();
      activeStack.push(n);
      inactiveStack.push(n);
      break;
    }
    planarConfig.setLastAction(actionCode);
View Full Code Here

  public boolean permissible(GuideUserAction currentAction, ParserConfiguration config) throws MaltChainedException {
    currentAction.getAction(actionContainers);
    int trans = transActionContainer.getActionCode();
    TwoPlanarConfig planarConfig = (TwoPlanarConfig)config;
    DependencyNode activeStackPeek = planarConfig.getActiveStack().peek();
    DependencyNode inactiveStackPeek = planarConfig.getInactiveStack().peek();
    DependencyNode inputPeek = planarConfig.getInput().peek();
    DependencyStructure dg = planarConfig.getDependencyGraph();
    //int rootHandling = planarConfig.getRootHandling();
    boolean singleHeadConstraint = planarConfig.requiresSingleHead();
    boolean noCoveredRootsConstraint = planarConfig.requiresNoCoveredRoots();
    boolean acyclicityConstraint = planarConfig.requiresAcyclicity();
    //boolean connectednessConstraintOnReduce = planarConfig.requiresConnectednessCheckOnReduce();
    //boolean connectednessConstraintOnShift = planarConfig.requiresConnectednessCheckOnShift();
    if ((trans == LEFTARC || trans == RIGHTARC) && !isActionContainersLabeled()) {
      return false;
    }
    //if ((trans == LEFTARC || trans == REDUCE) && stackPeek.isRoot()) {
    //  return false;
    //}
    if (trans == LEFTARC) {
      //avoid making root child of something
      if ( activeStackPeek.isRoot() )
        return false;
      //enforce single-head constraint if present
      if ( activeStackPeek.hasHead() && singleHeadConstraint )
        return false;
      //avoid two links being created from and to the same node
      if ( activeStackPeek.hasHead() && dg.getTokenNode(activeStackPeek.getIndex()).getHead().getIndex() == inputPeek.getIndex() )
        return false;
      //enforce acyclicity constraint if present
      if ( acyclicityConstraint && activeStackPeek.findComponent().getIndex() == inputPeek.findComponent().getIndex() )
        return false;
    }
    if (trans == RIGHTARC) {
      //enforce single-head constraint if present
      if ( inputPeek.hasHead() && singleHeadConstraint )
        return false;
      //avoid two links being created from and to the same node
      if ( inputPeek.hasHead() && dg.getTokenNode(inputPeek.getIndex()).getHead().getIndex() == activeStackPeek.getIndex() )
        return false;
      //enforce acyclicity constraint if present
      if ( acyclicityConstraint && activeStackPeek.findComponent().getIndex() == inputPeek.findComponent().getIndex() )
        return false;
    }
    if (trans == REDUCE) {
      //do not reduce the dummy root
      if ( activeStackPeek.isRoot() )
View Full Code Here

  }

  public void update() throws MaltChainedException {
    AddressValue a = addressFunction.getAddressValue();
    if (a.getAddress() != null && a.getAddressClass() == org.maltparserx.core.syntaxgraph.node.DependencyNode.class) {
      DependencyNode node = (DependencyNode)a.getAddress();
      try {
        int index = Integer.parseInt(node.getLabelSymbol(column.getSymbolTable()));
        if (node.isRoot()) {
          featureValue.setIndexCode(table.getNullValueCode(NullValueId.ROOT_NODE));
          featureValue.setSymbol(table.getNullValueSymbol(NullValueId.ROOT_NODE));
          featureValue.setNullValue(true);
        } else if (index == 0) {
          featureValue.setIndexCode(table.getSymbolStringToCode("ROOT"));
          featureValue.setSymbol("ROOT");
          featureValue.setNullValue(false);
        } else if (index < node.getIndex()) {
          featureValue.setIndexCode(table.getSymbolStringToCode("LEFT"));
          featureValue.setSymbol("LEFT");
          featureValue.setNullValue(false);
        } else if (index > node.getIndex()) {
          featureValue.setIndexCode(table.getSymbolStringToCode("RIGHT"));
          featureValue.setSymbol("RIGHT");
          featureValue.setNullValue(false);
        }
      } catch (NumberFormatException e) {
View Full Code Here

TOP

Related Classes of org.maltparserx.core.syntaxgraph.node.DependencyNode

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.