Package org.maltparserx.core.syntaxgraph.edge

Examples of org.maltparserx.core.syntaxgraph.edge.Edge


      final DependencyNode dc = ((DependencyNode)dependent).findComponent();
      if (hc != dc) {
        link(hc, dc);
        numberOfComponents--;   
      }
      Edge e = edgePool.checkOut();
      e.setBelongsToGraph(this);
      e.setEdge((Node)head, (Node)dependent, Edge.DEPENDENCY_EDGE);
      graphEdges.add(e);
      return e;
    } else {
      throw new SyntaxGraphException("Head node is not a root node or a terminal node.");
    }
View Full Code Here


 
  protected Edge moveDependencyEdge(DependencyNode newHead, DependencyNode dependent) throws MaltChainedException {
    if (dependent == null || !dependent.hasHead()) {
      return null;
    }
    Edge headEdge = dependent.getHeadEdge();
    final LabelSet labels = checkOutNewLabelSet();
    for (SymbolTable table : headEdge.getLabelTypes()) {
      labels.put(table, headEdge.getLabelCode(table));
    }
    headEdge.clear();
    headEdge.setBelongsToGraph(this);
    headEdge.setEdge((Node)newHead, (Node)dependent, Edge.DEPENDENCY_EDGE);
    headEdge.addLabel(labels);
    labels.clear();
    checkInLabelSet(labels);
    return headEdge;
  }
View Full Code Here

      throw new SyntaxGraphException("Head or dependent node is missing.");
    } else if (!dependent.isRoot()) {
      Iterator<Edge> ie = dependent.getIncomingEdgeIterator();
     
      while (ie.hasNext()) {
        Edge e = ie.next();
        if (e.getSource() == head) {
          graphEdges.remove(e);
          ie.remove();
          edgePool.checkIn(e);
        }
      }
View Full Code Here

  }
 
  public void updateDependenyGraph(MappablePhraseStructureGraph graph, PhraseStructureNode top) throws MaltChainedException {
    if (graph.nTokenNode() == 1 && graph.nNonTerminals() == 0) {
      // Special case when the root dominates direct a single terminal node
      Edge e = graph.addDependencyEdge(graph.getDependencyRoot(), graph.getDependencyNode(1));
      e.addLabel(graph.getSymbolTables().getSymbolTable(DEPREL), graph.getDefaultRootEdgeLabelSymbol(graph.getSymbolTables().getSymbolTable(DEPREL)));
      e.addLabel(graph.getSymbolTables().getSymbolTable(HEADREL), graph.getDefaultRootEdgeLabelSymbol(graph.getSymbolTables().getSymbolTable(HEADREL)));
      e.addLabel(graph.getSymbolTables().getSymbolTable(PHRASE), "*");
//      e.addLabel(graph.getSymbolTables().getSymbolTable(PHRASE), graph.getDefaultRootEdgeLabelSymbol(graph.getSymbolTables().getSymbolTable(PHRASE)));
      e.addLabel(graph.getSymbolTables().getSymbolTable(ATTACH), graph.getDefaultRootEdgeLabelSymbol(graph.getSymbolTables().getSymbolTable(ATTACH)));
    } else {
      updateDependencyEdges(graph, top);
      updateDependenyLabels(graph);
    }
  }
View Full Code Here

 
  public Edge addSecondaryEdge(ComparableNode source, ComparableNode target) throws MaltChainedException {
    if (source == null || target == null) {
      throw new SyntaxGraphException("Head or dependent node is missing.");
    } else if (!target.isRoot()) {
      Edge e = edgePool.checkOut();
      e.setBelongsToGraph(this);
      e.setEdge((Node)source, (Node)target, Edge.SECONDARY_EDGE);
      graphEdges.add(e);
      return e;
    }
    return null;
  }
View Full Code Here

              }
              j++;
            }
          }
          lockUpdate = true;
          Edge e = graph.addPhraseStructureEdge(dependentSpine, child);
          if (empty_label != 2 && es != j && edgeSpineLabel != null  && e != null) {
            e.addLabel(graph.getSymbolTables().addSymbolTable(EDGELABEL), edgeSpineLabel.substring(es,j));
          } else if (es == j) {
            e.addLabel(graph.getSymbolTables().addSymbolTable(EDGELABEL), EMPTY_LABEL);
          }

          lockUpdate = false;
          child = dependentSpine;
          if (i >= n) { break; }
          empty_label = 0;
          ps = i = i + 1;
          es = j = j + 1;
        }
      }

      // Recursively attach the dependent spines to target node.
      DependencyNode target = (DependencyNode)depEdge.getTarget();
      for (int i = 0; i < target.getLeftDependentCount(); i++) {
        updatePhraseStructureGraph(graph, target.getLeftDependent(i).getHeadEdge(), attachHeadSpineToRoot);
      }
      for (int i = target.getRightDependentCount()-1; i >= 0 ; i--) {
        updatePhraseStructureGraph(graph, target.getRightDependent(i).getHeadEdge(), attachHeadSpineToRoot);
      }
    } else {
      // If dependent spine already exist, then set dependentSpine to the highest nonterminal
      // of the dependent spine.
      while (dependentSpine.getParent() != null && !dependentSpine.getParent().isRoot()) {
        dependentSpine = dependentSpine.getParent();
      }
    }

   
    PhraseStructureNode headSpine = null;
    if (((PhraseStructureNode)depEdge.getSource()).getParent() != null) {
      // If head spine exist, then attach dependent spine to the head spine at the attachment level a.
      int a = 0;
      headSpine = ((PhraseStructureNode)depEdge.getSource()).getParent();
      if (depEdge.hasLabel(graph.getSymbolTables().getSymbolTable(ATTACH))) {
        try {
        a = Integer.parseInt((depEdge.getLabelSymbol(graph.getSymbolTables().getSymbolTable(ATTACH))));
        } catch (NumberFormatException e) {
          throw new MaltChainedException(e.getMessage());
        }
      }
      for (int i = 0; i < a && headSpine != null; i++) {
        headSpine = headSpine.getParent();
      }
     
      if ((headSpine == null || headSpine == dependentSpine) && attachHeadSpineToRoot) {
        headSpine = graph.getPhraseStructureRoot();
      }
      if (headSpine != null) {
        lockUpdate = true;
        Edge e = graph.addPhraseStructureEdge(headSpine, dependentSpine);
        if (depEdge.hasLabel(graph.getSymbolTables().getSymbolTable(DEPREL)) && !depEdge.getLabelSymbol(graph.getSymbolTables().getSymbolTable(DEPREL)).equals(EMPTY_LABEL) & e != null) {
          e.addLabel(graph.getSymbolTables().addSymbolTable(EDGELABEL), depEdge.getLabelSymbol(graph.getSymbolTables().getSymbolTable(DEPREL)));
        }
        lockUpdate = false;
      }
    }
    else if (depEdge.getSource().isRoot() && !depEdge.isLabeled()) {
        headSpine = graph.getPhraseStructureRoot();
        lockUpdate = true;
        Edge e = graph.addPhraseStructureEdge(headSpine, dependentSpine);
        if (depEdge.hasLabel(graph.getSymbolTables().getSymbolTable(DEPREL)) && !depEdge.getLabelSymbol(graph.getSymbolTables().getSymbolTable(DEPREL)).equals(EMPTY_LABEL) & e != null) {
          e.addLabel(graph.getSymbolTables().addSymbolTable(EDGELABEL), depEdge.getLabelSymbol(graph.getSymbolTables().getSymbolTable(DEPREL)));
        } else {
          e.addLabel(graph.getSymbolTables().addSymbolTable(EDGELABEL), graph.getDefaultRootEdgeLabelSymbol(graph.getSymbolTables().getSymbolTable(DEPREL)));
        }
        lockUpdate = false;
        // Recursively attach the dependent spines to target node.
        DependencyNode target = (DependencyNode)depEdge.getTarget();
        for (int i = 0; i < target.getLeftDependentCount(); i++) {
View Full Code Here

    if (source == null || target == null) {
      throw new SyntaxGraphException("Head or dependent node is missing.");
    } else if (!target.isRoot()) {
      final Iterator<Edge> ie = ((Node)target).getIncomingEdgeIterator();
      while (ie.hasNext()) {
        Edge e = ie.next();
        if (e.getSource() == source) {
          ie.remove();
          graphEdges.remove(e);
          edgePool.checkIn(e);
        }
      }
View Full Code Here

   
    for (int i = 0; i < tokens.length; i++) {
      Iterator<ColumnDescription> columns = dataFormatInstance.iterator();
      DependencyNode node = outputGraph.addDependencyNode(i+1);
      String[] items = tokens[i].split("\t");
      Edge edge = null;
      for (int j = 0; j < items.length; j++) {
        if (columns.hasNext()) {
          ColumnDescription column = columns.next();
          if (column.getCategory() == ColumnDescription.INPUT && node != null) {
            outputGraph.addLabel(node, column.getName(), items[j]);
View Full Code Here

   
    for (int i = 0; i < tokens.length; i++) {
      Iterator<ColumnDescription> columns = dataFormatInstance.iterator();
      DependencyNode node = outputGraph.addDependencyNode(i+1);
      String[] items = tokens[i].split("\t");
      Edge edge = null;
      for (int j = 0; j < items.length; j++) {
        if (columns.hasNext()) {
          ColumnDescription column = columns.next();
          if (column.getCategory() == ColumnDescription.INPUT && node != null) {
            outputGraph.addLabel(node, column.getName(), items[j]);
View Full Code Here

 
  public Edge addPhraseStructureEdge(PhraseStructureNode parent, PhraseStructureNode child) throws MaltChainedException {
    if (parent == null || child == null) {
      throw new MaltChainedException("Parent or child node is missing.");
    } else if (parent instanceof NonTerminalNode && !child.isRoot()) {
      Edge e = edgePool.checkOut();
      e.setBelongsToGraph(this);
      e.setEdge((Node)parent, (Node)child, Edge.PHRASE_STRUCTURE_EDGE);
      graphEdges.add(e);
      return e;
    } else {
      throw new MaltChainedException("Parent or child node is not of correct node type.");
    }
View Full Code Here

TOP

Related Classes of org.maltparserx.core.syntaxgraph.edge.Edge

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.