//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.annotators.coreference.impl.sieves;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.uima.jcas.JCas;
import uk.gov.dstl.baleen.annotators.coreference.impl.data.Cluster;
import uk.gov.dstl.baleen.annotators.coreference.impl.data.Mention;
import uk.gov.dstl.baleen.types.semantic.ReferenceTarget;
/**
* Reads the reference targets from the mentions and creates clusters from them.
*/
public class ExtractReferenceTargets extends AbstractCoreferenceSieve {
/**
* Constructor for ExtractReferenceTargets
*/
public ExtractReferenceTargets(JCas jCas, List<Cluster> clusters, List<Mention> mentions) {
super(jCas, clusters, mentions);
}
@Override
public void sieve() {
Map<Long, Cluster> map = new HashMap<Long, Cluster>();
getMentions().stream().forEach(m -> {
ReferenceTarget referent = m.getAnnotation().getReferent();
if (referent != null) {
long id = referent.getInternalId();
if (!map.containsKey(id)) {
map.put(id, new Cluster(m));
} else {
map.get(id).add(m);
}
}
});
getClusters().addAll(map.values());
}
}