Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }