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()); }
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()); }
/// <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()); }
/// <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); }