public WeightedTermFeature toWeightedTermFeature(Number weight){ PMMLEncoder encoder = ensureEncoder(); DefineFunction defineFunction = getDefineFunction(); String name = (defineFunction.getName()).replace("tf@", "tf-idf@"); DefineFunction weightedDefineFunction = encoder.getDefineFunction(name); if(weightedDefineFunction == null){ ParameterField weightField = new ParameterField(FieldName.create("weight")); List<ParameterField> parameterFields = new ArrayList<>(defineFunction.getParameterFields()); parameterFields.add(weightField); Apply apply = PMMLUtil.createApply("*", defineFunction.getExpression(), new FieldRef(weightField.getName())); weightedDefineFunction = new DefineFunction(name, OpType.CONTINUOUS, parameterFields) .setDataType(DataType.DOUBLE) .setExpression(apply); encoder.addDefineFunction(weightedDefineFunction); } return new WeightedTermFeature(encoder, weightedDefineFunction, getFeature(), getValue(), weight); }