Mercurial > hg > anteater
diff src/de/mpiwg/anteater/results/impl/ScientificNameResultFinder.java @ 0:036535fcd179
anteater
author | jdamerow |
---|---|
date | Fri, 14 Sep 2012 10:30:43 +0200 |
parents | |
children | dcc35f89dce3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/anteater/results/impl/ScientificNameResultFinder.java Fri Sep 14 10:30:43 2012 +0200 @@ -0,0 +1,62 @@ +package de.mpiwg.anteater.results.impl; + +import java.util.ArrayList; +import java.util.List; + +import de.mpiwg.anteater.places.PlaceInformation; +import de.mpiwg.anteater.places.PlacesExtraction; +import de.mpiwg.anteater.results.IResultFinder; +import de.mpiwg.anteater.results.SpeciesScientificResult; +import de.mpiwg.anteater.species.scientific.ScientificName; +import de.mpiwg.anteater.species.scientific.ScientificNamesExtraction; +import de.mpiwg.anteater.text.TextInformation; + +public class ScientificNameResultFinder implements + IResultFinder<SpeciesScientificResult> { + + @Override + public List<SpeciesScientificResult> getResults(List<TextInformation> infos) { + List<SpeciesScientificResult> finalResults = new ArrayList<SpeciesScientificResult>(); + + for (TextInformation info : infos) { + + List<ScientificNamesExtraction> resultsExtractions = info.getScientificNamesExtractions(); + List<PlacesExtraction> placesExtraction = info.getPlacesExtractions(); + + + for (ScientificNamesExtraction nameExtraction : resultsExtractions) { + for (PlacesExtraction placeExtraction : placesExtraction) { + if (placeExtraction.getType() == nameExtraction.getType() && placeExtraction.getTextIdx() == nameExtraction.getTextIdx()) { + List<ScientificName> names = nameExtraction.getNames(); + List<PlaceInformation> places = placeExtraction.getPlaceInformation(); + + // put all indices where there is a place according to placemaker + // into list + List<Integer> placeIndices = new ArrayList<Integer>(); + for (PlaceInformation place : places) { + int start = place.getStart(); + int end = place.getStart() + place.getLength(); + for (int i = start; i < end; i++) { + placeIndices.add(i); + } + } + + for (ScientificName name : names) { + if (!placeIndices.contains(name.getStart())) + { + SpeciesScientificResult finalResult = new SpeciesScientificResult(); + finalResult.setFinding(name); + finalResult.setPrediction(1.0); + finalResult.setResult(nameExtraction); + finalResult.setTextInfo(info); + finalResults.add(finalResult); + } + } + } + } + } + } + return finalResults; + } + +}