package focusedCrawler.target.classifier;
import java.io.IOException;
import java.nio.file.Path;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import focusedCrawler.target.model.Page;
public class KeepLinkRelevanceTargetClassifier implements TargetClassifier {
private TargetClassifier targetClassifier;
public KeepLinkRelevanceTargetClassifier(TargetClassifier targetClassifier) {
this.targetClassifier = targetClassifier;
}
@Override
public TargetRelevance classify(Page page) throws TargetClassifierException {
double pageRelevance = page.getLinkRelevance().getRelevance();
boolean isRelevant;
if(targetClassifier == null) {
isRelevant = true;
} else {
isRelevant = targetClassifier.classify(page).isRelevant();
}
return new TargetRelevance(isRelevant, pageRelevance);
}
public static class Builder {
public TargetClassifier build(Path basePath, ObjectMapper yaml, JsonNode parameters) throws JsonProcessingException, IOException {
if(parameters != null) {
TargetClassifier wekaClassifier = new WekaTargetClassifier.Builder().build(basePath, yaml, parameters);
return new KeepLinkRelevanceTargetClassifier(wekaClassifier);
} else {
return new KeepLinkRelevanceTargetClassifier(null);
}
}
}
}