/// <summary> /// Marshals a boolean value into native VW. /// /// e.g. loggedIn = true yields "loggedIn" in VW native string format. /// e.g. loggedIn = false yields an empty string. /// </summary> /// <param name="context">The marshalling context.</param> /// <param name="ns">The namespace description.</param> /// <param name="feature">The feature description.</param> /// <param name="value">The actual feature value.</param> public void MarshalFeature(VowpalWabbitMarshalContext context, Namespace ns, PreHashedFeature feature, bool value) { Contract.Requires(context != null); Contract.Requires(ns != null); Contract.Requires(feature != null); if (!value) { return; } context.NamespaceBuilder.AddFeature(feature.FeatureHash, 1f); context.AppendStringExample(feature.Dictify, " {0}", feature.Name); }
/// <summary> /// Expects that actual feature value. /// </summary> private void ParseFeature(VowpalWabbitMarshalContext context, Namespace ns, string featureName) { switch (reader.TokenType) { case JsonToken.Float: { var feature = new PreHashedFeature(this.vw, ns, featureName); this.defaultMarshaller.MarshalFeature(context, ns, feature, (double)reader.Value); } break; case JsonToken.Integer: { var feature = new PreHashedFeature(this.vw, ns, featureName); this.defaultMarshaller.MarshalFeature(context, ns, feature, (long)reader.Value); } break; case JsonToken.String: { var feature = new Feature(featureName); this.defaultMarshaller.MarshalFeatureStringEscapeAndIncludeName(context, ns, feature, (string)reader.Value); } break; case JsonToken.Boolean: { var feature = new PreHashedFeature(this.vw, ns, featureName); this.defaultMarshaller.MarshalFeature(context, ns, feature, (bool)reader.Value); } break; case JsonToken.Comment: case JsonToken.Null: // probably best to ignore? break; case JsonToken.StartArray: this.ParseFeatureArray(context, ns); break; default: throw new VowpalWabbitJsonException(reader.Path, "Unexpected token " + reader.TokenType + " while deserializing primitive feature"); } }
internal static void Marshal(VowpalWabbitDefaultMarshaller defaultMarshaller, VowpalWabbitMarshalContext context, Namespace ns, string featureName, long val) { var feature = new PreHashedFeature(context.VW, ns, featureName); defaultMarshaller.MarshalFeature(context, ns, feature, val); }