public OpenNlpDoccatRecommender(Recommender aRecommender, OpenNlpDoccatRecommenderTraits aTraits) { layerName = aRecommender.getLayer().getName(); featureName = aRecommender.getFeature().getName(); maxRecommendations = aRecommender.getMaxRecommendations(); traits = aTraits; }
@Override public void writeTraits(Recommender aRecommender, T aTraits) { try { String json = toJsonString(aTraits); aRecommender.setTraits(json); } catch (IOException e) { log.error("Error while writing traits", e); } } }
private String generateName(Recommender aRecommender) { if (aRecommender.getFeature() == null || aRecommender.getLayer() == null || aRecommender.getTool() == null) { return null; } else { RecommendationEngineFactory factory = recommenderRegistry .getFactory(aRecommender.getTool()); return String.format(Locale.US, "[%s@%s] %s", aRecommender.getLayer().getUiName(), aRecommender.getFeature().getUiName(), factory.getName()); } }
public DL4JSequenceRecommender(Recommender aRecommender, DL4JSequenceRecommenderTraits aTraits, File aDatasetCache) { layerName = aRecommender.getLayer().getName(); featureName = aRecommender.getFeature().getName(); traits = aTraits; datasetCache = aDatasetCache; }
@Override public void exportData(ProjectExportRequest aRequest, ExportedProject aExProject, File aFile) { Project project = aRequest.getProject(); List<ExportedRecommender> exportedRecommenders = new ArrayList<>(); for (Recommender recommender : recommendationService.listRecommenders(project)) { ExportedRecommender exportedRecommender = new ExportedRecommender(); exportedRecommender.setAlwaysSelected(recommender.isAlwaysSelected()); exportedRecommender.setFeature(recommender.getFeature().getName()); exportedRecommender.setEnabled(recommender.isEnabled()); exportedRecommender.setLayerName(recommender.getLayer().getName()); exportedRecommender.setName(recommender.getName()); exportedRecommender.setThreshold(recommender.getThreshold()); exportedRecommender.setTool(recommender.getTool()); exportedRecommender.setSkipEvaluation(recommender.isSkipEvaluation()); exportedRecommender.setMaxRecommendations(recommender.getMaxRecommendations()); exportedRecommender.setStatesIgnoredForTraining( recommender.getStatesIgnoredForTraining()); exportedRecommender.setTraits(recommender.getTraits()); exportedRecommenders.add(exportedRecommender); } aExProject.setProperty(KEY, exportedRecommenders); int n = exportedRecommenders.size(); LOG.info("Exported [{}] recommenders for project [{}]", n, project.getName()); }
Recommender recommender = new Recommender(); recommender.setAlwaysSelected(exportedRecommender.isAlwaysSelected()); recommender.setEnabled(exportedRecommender.isEnabled()); recommender.setName(exportedRecommender.getName()); recommender.setThreshold(exportedRecommender.getThreshold()); recommender.setTool(exportedRecommender.getTool()); recommender.setSkipEvaluation(exportedRecommender.isSkipEvaluation()); recommender.setMaxRecommendations(exportedRecommender.getMaxRecommendations()); recommender.setStatesIgnoredForTraining( exportedRecommender.getStatesIgnoredForTraining()); recommender.setTraits(exportedRecommender.getTraits()); if (recommender.getMaxRecommendations() < 1) { recommender.setMaxRecommendations(MAX_RECOMMENDATIONS_DEFAULT); if (recommender.getMaxRecommendations() > MAX_RECOMMENDATIONS_CAP) { recommender.setMaxRecommendations(MAX_RECOMMENDATIONS_CAP); recommender.setLayer(layer); recommender.setFeature(feature); recommender.setProject(aProject); recommendationService.createOrUpdateRecommender(recommender);
double score = aScoreFeature.map(f -> FSUtil.getFeature(annotationFS, f, Double.class)) .orElse(NO_SCORE); String featurename = aRecommender.getFeature().getName(); String name = aRecommender.getName(); AnnotationSuggestion ao = new AnnotationSuggestion(id, aRecommender.getId(), name, aRecommender.getLayer().getId(), featurename, aDocument.getName(), firstToken.getBegin(), lastToken.getEnd(), annotationFS.getCoveredText(), label, label, score); "[{}]({}) for user [{}] on document " + "[{}]({}) in project [{}]({}) generated {} predictions.", aRecommender.getName(), aRecommender.getId(), aUser.getUsername(), aDocument.getName(), aDocument.getId(), aRecommender.getProject().getName(), aRecommender.getProject().getId(), predictionCount);
@Override public String getDetails(RecommenderEvaluationResultEvent aEvent) { try { Details details = new Details(); details.recommenderId = aEvent.getRecommender().getId(); details.score = aEvent.getScore(); details.active = aEvent.isActive(); details.duration = aEvent.getDuration(); details.threshold = aEvent.getRecommender().getThreshold(); details.layer = aEvent.getRecommender().getLayer().getName(); details.feature = aEvent.getRecommender().getFeature().getName(); details.tool = aEvent.getRecommender().getTool(); return JSONUtil.toJsonString(details); } catch (IOException e) { log.error("Unable to log event [{}]", aEvent, e); return "<ERROR>"; } }
private void predictToken(String aCoveredText, int aBegin, int aEnd, JCas aJcas) { List<KBHandle> handles = new ArrayList<>(); AnnotationFeature feat = recommender.getFeature(); FeatureSupport<ConceptFeatureTraits> fs = fsRegistry.getFeatureSupport(feat); ConceptFeatureTraits conceptFeatureTraits = fs.readTraits(feat); if (conceptFeatureTraits.getRepositoryId() != null) { Optional<KnowledgeBase> kb = kbService.getKnowledgeBaseById(recommender.getProject(), conceptFeatureTraits.getRepositoryId()); if (kb.isPresent() && kb.get().isSupportConceptLinking()) { handles.addAll(readCandidates(kb.get(), aCoveredText, aBegin, aJcas)); } } else { for (KnowledgeBase kb : kbService.getEnabledKnowledgeBases(recommender.getProject())) { if (kb.isSupportConceptLinking()) { handles.addAll(readCandidates(kb, aCoveredText, aBegin, aJcas)); } } } Type predictionType = getAnnotationType(aJcas.getCas(), PredictedSpan.class); Feature labelFeature = predictionType.getFeatureByBaseName("label"); for (KBHandle prediction : handles.stream().limit(recommender.getMaxRecommendations()) .collect(Collectors.toList())) { AnnotationFS annotation = aJcas.getCas().createAnnotation(predictionType, aBegin, aEnd); annotation.setStringValue(labelFeature, prediction.getIdentifier()); aJcas.getCas().addFsToIndexes(annotation); } }
@Override public String getPredictedFeature() { return recommender.getFeature().getName(); }
@Override public String getPredictedType() { return recommender.getLayer().getName(); }
private void actionSave(AjaxRequestTarget aTarget) { Recommender recommender = recommenderModel.getObject(); recommender.setProject(recommender.getLayer().getProject()); recommendationService.createOrUpdateRecommender(recommender); // Reset selection after saving recommenderModel.setObject(null); statesForTraining.setObject(getAllPossibleDocumentStates()); // Reload whole page because master panel also needs to be reloaded. aTarget.add(getPage()); }
@Override public long getProject(RecommenderEvaluationResultEvent aEvent) { return aEvent.getRecommender().getProject().getId(); }
@SuppressWarnings("unchecked") @Override public T readTraits(Recommender aRecommender) { if (aRecommender.getTraits() == null) { return createTraits(); } T traits = null; try { traits = fromJsonString((Class<T>) createTraits().getClass(), aRecommender.getTraits()); } catch (IOException e) { log.error("Error while reading traits", e); } if (traits == null) { traits = createTraits(); } return traits; }
public DL4JSequenceRecommender(Recommender aRecommender, DL4JSequenceRecommenderTraits aTraits, File aDatasetCache) { layerName = aRecommender.getLayer().getName(); featureName = aRecommender.getFeature().getName(); traits = aTraits; datasetCache = aDatasetCache; }
private void predictToken(String aCoveredText, int aBegin, int aEnd, JCas aJcas) { List<KBHandle> handles = new ArrayList<>(); AnnotationFeature feat = recommender.getFeature(); FeatureSupport<ConceptFeatureTraits> fs = fsRegistry.getFeatureSupport(feat); ConceptFeatureTraits conceptFeatureTraits = fs.readTraits(feat); if (conceptFeatureTraits.getRepositoryId() != null) { Optional<KnowledgeBase> kb = kbService.getKnowledgeBaseById(recommender.getProject(), conceptFeatureTraits.getRepositoryId()); if (kb.isPresent() && kb.get().isSupportConceptLinking()) { handles.addAll(readCandidates(kb.get(), aCoveredText, aBegin, aJcas)); } } else { for (KnowledgeBase kb : kbService.getEnabledKnowledgeBases(recommender.getProject())) { if (kb.isSupportConceptLinking()) { handles.addAll(readCandidates(kb, aCoveredText, aBegin, aJcas)); } } } Type predictionType = getAnnotationType(aJcas.getCas(), PredictedSpan.class); Feature labelFeature = predictionType.getFeatureByBaseName("label"); for (KBHandle prediction : handles.stream().limit(recommender.getMaxRecommendations()) .collect(Collectors.toList())) { AnnotationFS annotation = aJcas.getCas().createAnnotation(predictionType, aBegin, aEnd); annotation.setStringValue(labelFeature, prediction.getIdentifier()); aJcas.getCas().addFsToIndexes(annotation); } }
@Override public String getPredictedFeature() { return recommender.getFeature().getName(); }
@Override public String getPredictedType() { return recommender.getLayer().getName(); }
@Override public RecommenderContext getContext(User aUser, Recommender aRecommender) { RecommendationState state = getState(aUser.getUsername(), aRecommender.getProject()); synchronized (state) { return state.getContext(aRecommender); } }
public StringMatchingRecommender(Recommender aRecommender, StringMatchingRecommenderTraits aTraits) { layerName = aRecommender.getLayer().getName(); featureName = aRecommender.getFeature().getName(); maxRecommendations = aRecommender.getMaxRecommendations(); traits = aTraits; }