Search in sources :

Example 11 with SLayer

use of org.corpus_tools.salt.core.SLayer in project ANNIS by korpling.

the class SaltAnnotateExtractor method createMissingSpanningRelations.

/**
 * Use the left/right token index of the spans to create spanning relations
 * when this did not happen yet.
 *
 * @param graph
 * @param nodeByRankID
 * @param numberOfRelations
 */
private void createMissingSpanningRelations(SDocumentGraph graph, FastInverseMap<Long, SNode> nodeByRankID, TreeMap<Long, SToken> tokenByIndex, Map<String, ComponentEntry> componentForSpan, AtomicInteger numberOfRelations) {
    // add the missing spanning relations for each continuous span of the graph
    for (SSpan span : graph.getSpans()) {
        long pre = 1;
        RelannisNodeFeature featSpan = RelannisNodeFeature.extract(span);
        ComponentEntry spanComponent = componentForSpan.get(span.getId());
        if (spanComponent != null && featSpan != null && featSpan.getLeftToken() >= 0 && featSpan.getRightToken() >= 0) {
            for (long i = featSpan.getLeftToken(); i <= featSpan.getRightToken(); i++) {
                SToken tok = tokenByIndex.get(i);
                if (tok != null) {
                    boolean missing = true;
                    List<SRelation<SNode, SNode>> existingRelations = graph.getRelations(span.getId(), tok.getId());
                    if (existingRelations != null) {
                        for (Relation e : existingRelations) {
                            if (e instanceof SSpanningRelation) {
                                missing = false;
                                break;
                            }
                        }
                    }
                    if (missing) {
                        String type = "c";
                        SLayer layer = findOrAddSLayer(spanComponent.getNamespace(), graph);
                        createNewRelation(graph, span, tok, null, type, spanComponent.getId(), layer, pre++, nodeByRankID, numberOfRelations);
                    }
                }
            // end if token exists
            }
        // end for each covered token index
        }
    }
// end for each span
}
Also used : SToken(org.corpus_tools.salt.common.SToken) RelannisNodeFeature(annis.model.RelannisNodeFeature) SRelation(org.corpus_tools.salt.core.SRelation) SLayer(org.corpus_tools.salt.core.SLayer) SPointingRelation(org.corpus_tools.salt.common.SPointingRelation) SDominanceRelation(org.corpus_tools.salt.common.SDominanceRelation) STextualRelation(org.corpus_tools.salt.common.STextualRelation) SRelation(org.corpus_tools.salt.core.SRelation) SSpanningRelation(org.corpus_tools.salt.common.SSpanningRelation) SOrderRelation(org.corpus_tools.salt.common.SOrderRelation) Relation(org.corpus_tools.salt.graph.Relation) SSpan(org.corpus_tools.salt.common.SSpan) SSpanningRelation(org.corpus_tools.salt.common.SSpanningRelation)

Aggregations

SLayer (org.corpus_tools.salt.core.SLayer)11 SRelation (org.corpus_tools.salt.core.SRelation)6 LinkedList (java.util.LinkedList)4 SAnnotation (org.corpus_tools.salt.core.SAnnotation)4 SNode (org.corpus_tools.salt.core.SNode)4 RelannisNodeFeature (annis.model.RelannisNodeFeature)3 SDominanceRelation (org.corpus_tools.salt.common.SDominanceRelation)3 SPointingRelation (org.corpus_tools.salt.common.SPointingRelation)3 RelannisEdgeFeature (annis.model.RelannisEdgeFeature)2 HashMap (java.util.HashMap)2 HashSet (java.util.HashSet)2 SDocumentGraph (org.corpus_tools.salt.common.SDocumentGraph)2 SOrderRelation (org.corpus_tools.salt.common.SOrderRelation)2 SSpanningRelation (org.corpus_tools.salt.common.SSpanningRelation)2 STextualRelation (org.corpus_tools.salt.common.STextualRelation)2 SToken (org.corpus_tools.salt.common.SToken)2 SFeature (org.corpus_tools.salt.core.SFeature)2 Relation (org.corpus_tools.salt.graph.Relation)2 AnnisNode (annis.model.AnnisNode)1 Annotation (annis.model.Annotation)1