Example #1
0
            public static DataViewGetters CreateForType(Type type)
            {
                var builder = new DataViewGetters.Builder();
                var members = RecordTypeRegister.GetRecordInfo(type);

                foreach (var member in members)
                {
                    builder.AddColumn(member.Name, member.DataViewType, member.ValueGetter);
                }
                return(builder.ToGetters());
            }
Example #2
0
        private static DataViewSchema CreateSchema(Type type)
        {
            var builder = new DataViewSchema.Builder();
            var members = RecordTypeRegister.GetRecordInfo(type);

            foreach (var member in members)
            {
                builder.AddColumn(member.Name, member.DataViewType);
            }
            return(builder.ToSchema());
        }
Example #3
0
        /// <summary>
        /// Converts an enumerable of conversation records to <see cref="DataFrame"/>. The <see cref="DataFrame"/>
        /// is a high performance memory store for data sets.
        /// <para>
        /// The <see cref="DataFrame"/> implements <see cref="Microsoft.ML.IDataView"/> interface
        /// which is consumed by ML.NET pipelines.
        /// </para>
        /// The difference to <see cref="AsDataView{T}(IEnumerable{ConversationRecord{T}})"/> is that
        /// DataFrame is fully created in memory from the source records while Data View
        /// is wrapper around the enumeration possibly evaluated lazily.
        /// </summary>
        /// <typeparam name="T">The type of conversation record.</typeparam>
        /// <param name="records">The enumerable of records.</param>
        /// <returns>The new <see cref="DataFrame"/> object representing the source records.</returns>
        public static DataFrame ToDataFrame <T>(this IEnumerable <ConversationRecord <T> > records)
        {
            var recordList = records.ToList();
            var builder    = new DataFrameBuilder();
            var members    = RecordTypeRegister.GetRecordInfo(typeof(ConversationRecord <T>));

            foreach (var member in members)
            {
                builder.AddColumn(member, recordList.Select(member.ValueGetter));
            }
            return(builder.ToDataFrame());
        }
Example #4
0
        /// <summary>
        /// Gets the dictionary that represents a flatten version of the current record.
        /// <para>
        /// It can be used to flat the conversation record and to create dynamic object from it.
        /// </para>
        /// </summary>
        /// <returns>A dictionary of fields and values for the passed conversation record.</returns>
        public static Dictionary <string, object> AsDictionary <T>(this ConversationRecord <T> self)
        {
            var dictionary = RecordTypeRegister.GetRecordInfo(self.GetType()).ToDictionary(x => x.Name, y => y.ValueGetter.Invoke(self));

            return(dictionary);
        }