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; 
+	}
+
+}