in src/main/java/com/amazonaws/services/neptune/profiles/neptune_ml/v1/config/TrainingDataWriterConfigV1.java [55:107]
private static TrainingDataWriterConfigV1 getTrainingJobWriterConfig(JsonNode json, int index) {
Map<Label, LabelConfigV1> nodeClassLabels = new HashMap<>();
Map<Label, LabelConfigV1> edgeClassLabels = new HashMap<>();
Collection<Word2VecConfig> word2VecNodeFeatures = new ArrayList<>();
Collection<NumericalBucketFeatureConfigV1> numericalBucketFeatures = new ArrayList<>();
Collection<FeatureOverrideConfigV1> nodeFeatureOverrides = new ArrayList<>();
Collection<FeatureOverrideConfigV1> edgeFeatureOverrides = new ArrayList<>();
Collection<Double> defaultSplitRates = new ParseSplitRate(json, DEFAULT_SPLIT_RATES_V1, new ParsingContext("config")).parseSplitRates();
String name = json.has("name") ?
json.get("name").textValue() :
index > 1 ? String.format("%s-%s", DEFAULT_NAME_V1, index) : DEFAULT_NAME_V1;
if (json.has("targets")) {
JsonNode labels = json.path("targets");
Collection<JsonNode> labelNodes = new ArrayList<>();
if (labels.isArray()) {
labels.forEach(labelNodes::add);
} else {
labelNodes.add(labels);
}
ParseLabelsV1 parseLabels = new ParseLabelsV1(labelNodes, defaultSplitRates);
parseLabels.validate();
nodeClassLabels.putAll(parseLabels.parseNodeClassLabels());
edgeClassLabels.putAll(parseLabels.parseEdgeClassLabels());
}
if (json.has("features")) {
JsonNode features = json.path("features");
Collection<JsonNode> featureNodes = new ArrayList<>();
if (features.isArray()) {
features.forEach(featureNodes::add);
} else {
featureNodes.add(features);
}
ParseFeaturesV1 parseFeatures = new ParseFeaturesV1(featureNodes);
parseFeatures.validate();
word2VecNodeFeatures.addAll(parseFeatures.parseWord2VecNodeFeatures());
numericalBucketFeatures.addAll(parseFeatures.parseNumericalBucketFeatures());
nodeFeatureOverrides.addAll(parseFeatures.parseNodeFeatureOverrides());
edgeFeatureOverrides.addAll(parseFeatures.parseEdgeFeatureOverrides());
}
return new TrainingDataWriterConfigV1(
name,
nodeClassLabels,
edgeClassLabels,
word2VecNodeFeatures,
numericalBucketFeatures,
nodeFeatureOverrides,
edgeFeatureOverrides);
}