Mercurial > hg > anteater
diff src/de/mpiwg/anteater/results/impl/LocationResultManager.java @ 0:036535fcd179
anteater
author | jdamerow |
---|---|
date | Fri, 14 Sep 2012 10:30:43 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/anteater/results/impl/LocationResultManager.java Fri Sep 14 10:30:43 2012 +0200 @@ -0,0 +1,104 @@ +package de.mpiwg.anteater.results.impl; + +import java.util.ArrayList; +import java.util.List; + +import de.mpiwg.anteater.AnteaterConfiguration; +import de.mpiwg.anteater.ml.PlaceClasses; +import de.mpiwg.anteater.results.AResultManager; +import de.mpiwg.anteater.results.AnnotationTag; +import de.mpiwg.anteater.results.LocationResult; +import de.mpiwg.anteater.text.TextType; + +public class LocationResultManager extends AResultManager<LocationResult> { + + public final static String APPLICANT_LOCATION_TAG_Start = "<applicant_location woeId=\""; + public final static String TAG_End = "\">"; + public final static String APPLICANT_LOCATION_TAG_CLOSE = "</applicant_location>"; + public final static String APPLICANT_TAG_TYPE = "applicant_location"; + public final static String RESEARCH_LOCATION_TAG_Start = "<research_location woeId=\""; + public final static String RESEARCH_LOCATION_TAG_CLOSE = "</research_location>"; + public final static String RESEARCH_TAG_TYPE = "research_location"; + public final static String APPLICANT_INSTITUTION_TAG_Start = "<applicant_institution woeId=\""; + public final static String APPLICANT_INSTITUTION_TAG_CLOSE = "</applicant_institution>"; + public final static String APPLICANT_INSTITUTION_TAG_TYPE = "applicant_institution"; + + public final static String TYPE_ATTRIBUTE = "\" type=\""; + public final static String NAME_ATTRIBUTE = "\" name=\""; + + + public LocationResultManager(AnteaterConfiguration configuration) { + super(configuration); + } + + public List<AnnotationTag> getSummaryTags(List<LocationResult> results, int textIndex) { + + // go through all results and only take those with prediction 1.0 + List<LocationResult> predictedResults = new ArrayList<LocationResult>(); + for (LocationResult r : results) { + if (r.getPrediction() != 0) + predictedResults.add(r); + } + + return getSpecificSummaryTags(predictedResults, textIndex); + } + + public List<AnnotationTag> getSuppleInfTags(List<LocationResult> results, int textIndex) { + + // go through all results and only take those with prediction 1.0 + List<LocationResult> predictedResults = new ArrayList<LocationResult>(); + for (LocationResult r : results) { + if (r.getPrediction() != 0) + predictedResults.add(r); + } + + return getSpecificSuppleInfTags(predictedResults, textIndex); + } + + @Override + protected List<AnnotationTag> getSpecificSummaryTags( + List<LocationResult> locations, int textIndex) { + return getTags(locations, textIndex, TextType.TYPE_SUMMARY); + } + + @Override + protected List<AnnotationTag> getSpecificSuppleInfTags( + List<LocationResult> locations, int textIndex) { + return getTags(locations, textIndex, TextType.TYPE_SUPLINF); + } + + protected List<AnnotationTag> getTags(List<LocationResult> results, int textIndex, int type) { + List<AnnotationTag> tags = new ArrayList<AnnotationTag>(); + + // get applicants for text + List<LocationResult> locations = new ArrayList<LocationResult>(); + for (LocationResult r : results) { + if (r.getResult().getType() == type + && r.getResult().getTextIdx() == textIndex) + locations.add(r); + } + + + for (LocationResult loc : locations) { + + if (loc.getPrediction() == PlaceClasses.APPLICANT_LOCATION) + { + tags.add(new AnnotationTag(APPLICANT_LOCATION_TAG_Start + loc.getPlace().getWoeId() + TYPE_ATTRIBUTE + loc.getPlace().getType() + NAME_ATTRIBUTE + loc.getPlace().getName() + TAG_End, loc.getFinding().getStart(), APPLICANT_LOCATION_TAG_CLOSE, loc.getFinding().getStart() + + loc.getFinding().getLength(), APPLICANT_TAG_TYPE)); + } + if (loc.getPrediction() == PlaceClasses.RESEARCH_LOCATION) + { + tags.add(new AnnotationTag(RESEARCH_LOCATION_TAG_Start + loc.getPlace().getWoeId() + TYPE_ATTRIBUTE + loc.getPlace().getType() + NAME_ATTRIBUTE + loc.getPlace().getName() + TAG_End, loc.getFinding().getStart(), RESEARCH_LOCATION_TAG_CLOSE, loc.getFinding().getStart() + + loc.getFinding().getLength(), RESEARCH_TAG_TYPE)); + } + if (loc.getPrediction() == PlaceClasses.APPLICANT_INSTITUTION) + { + tags.add(new AnnotationTag(APPLICANT_INSTITUTION_TAG_Start + loc.getPlace().getWoeId() + TYPE_ATTRIBUTE + loc.getPlace().getType() + NAME_ATTRIBUTE + loc.getPlace().getName() + TAG_End, loc.getFinding().getStart(), APPLICANT_INSTITUTION_TAG_CLOSE, loc.getFinding().getStart() + + loc.getFinding().getLength(), APPLICANT_INSTITUTION_TAG_TYPE)); + } + } + + return tags; + } + +}