0
|
1 package de.mpiwg.anteater.results.impl;
|
|
2
|
|
3 import java.util.ArrayList;
|
|
4 import java.util.List;
|
|
5
|
|
6 import de.mpiwg.anteater.places.PlaceInformation;
|
|
7 import de.mpiwg.anteater.places.PlacesExtraction;
|
|
8 import de.mpiwg.anteater.results.IResultFinder;
|
|
9 import de.mpiwg.anteater.results.SpeciesScientificResult;
|
|
10 import de.mpiwg.anteater.species.scientific.ScientificName;
|
|
11 import de.mpiwg.anteater.species.scientific.ScientificNamesExtraction;
|
|
12 import de.mpiwg.anteater.text.TextInformation;
|
|
13
|
|
14 public class ScientificNameResultFinder implements
|
|
15 IResultFinder<SpeciesScientificResult> {
|
|
16
|
|
17 @Override
|
|
18 public List<SpeciesScientificResult> getResults(List<TextInformation> infos) {
|
|
19 List<SpeciesScientificResult> finalResults = new ArrayList<SpeciesScientificResult>();
|
|
20
|
|
21 for (TextInformation info : infos) {
|
|
22
|
|
23 List<ScientificNamesExtraction> resultsExtractions = info.getScientificNamesExtractions();
|
|
24 List<PlacesExtraction> placesExtraction = info.getPlacesExtractions();
|
|
25
|
|
26
|
|
27 for (ScientificNamesExtraction nameExtraction : resultsExtractions) {
|
|
28 for (PlacesExtraction placeExtraction : placesExtraction) {
|
|
29 if (placeExtraction.getType() == nameExtraction.getType() && placeExtraction.getTextIdx() == nameExtraction.getTextIdx()) {
|
|
30 List<ScientificName> names = nameExtraction.getNames();
|
|
31 List<PlaceInformation> places = placeExtraction.getPlaceInformation();
|
|
32
|
|
33 // put all indices where there is a place according to placemaker
|
|
34 // into list
|
|
35 List<Integer> placeIndices = new ArrayList<Integer>();
|
|
36 for (PlaceInformation place : places) {
|
|
37 int start = place.getStart();
|
|
38 int end = place.getStart() + place.getLength();
|
|
39 for (int i = start; i < end; i++) {
|
|
40 placeIndices.add(i);
|
|
41 }
|
|
42 }
|
|
43
|
|
44 for (ScientificName name : names) {
|
|
45 if (!placeIndices.contains(name.getStart()))
|
|
46 {
|
|
47 SpeciesScientificResult finalResult = new SpeciesScientificResult();
|
|
48 finalResult.setFinding(name);
|
|
49 finalResult.setPrediction(1.0);
|
|
50 finalResult.setResult(nameExtraction);
|
|
51 finalResult.setTextInfo(info);
|
|
52 finalResults.add(finalResult);
|
|
53 }
|
|
54 }
|
|
55 }
|
|
56 }
|
|
57 }
|
|
58 }
|
|
59 return finalResults;
|
|
60 }
|
|
61
|
|
62 }
|