Mercurial > hg > anteater
view 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 source
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; } }