private string GetContextVector(Feedback f) { var ctx = ContextNames.Select(c => ContextMapper.ToInternalID(f.Attributes[c].Value).ToString()).ToList(); if (ctx.Count > 0) { return(ctx.Aggregate((a, b) => a + "," + b)); } else { return("1"); } }
public override void Run() { var trainPointWriter = new StreamWriter(OutputPath + ".point"); var trainPairWriter = new StreamWriter(OutputPath + ".pair"); var testWriter = new StreamWriter(OutputPath + ".test"); var testOrgWriter = new StreamWriter(OutputPath + ".test.org"); foreach (var f in Split.Train) { var mUserId = UserMapper.ToInternalID(f.User.Id); var mItemId = ContextMapper.ToInternalID(f.Item.Id); var nNegItemId = ContextMapper.ToInternalID(SampleItemId(f.User.Id)); //var context = GetContextVector(f); trainPointWriter.WriteLine($"{mUserId},{mItemId},1"); trainPointWriter.WriteLine($"{mUserId},{nNegItemId},-1"); trainPairWriter.WriteLine($"{mUserId},{mItemId},{nNegItemId},1"); trainPairWriter.WriteLine($"{mUserId},{nNegItemId},{mItemId},-1"); //testWriter.WriteLine($"{mUserId},{mItemId},1"); //testOrgWriter.WriteLine($"{f.User.Id},{f.Item.Id},1"); } foreach (var f in Split.Test) { var mUserId = UserMapper.ToInternalID(f.User.Id); var mItemId = ContextMapper.ToInternalID(f.Item.Id); //var context = GetContextVector(f); testWriter.WriteLine($"{mUserId},{mItemId},1"); testOrgWriter.WriteLine($"{f.User.Id},{f.Item.Id},1"); } var c = Split.Container; foreach (var user in c.Users.Values) { int count = 0; foreach (var item in c.Items.Values.Shuffle().Take(100)) { if (!c.FeedbacksDic.ContainsKey(user.Id, item.Id)) { var mappedUId = UserMapper.ToInternalID(user.Id); var mappedNegIId = ContextMapper.ToInternalID(item.Id); testWriter.WriteLine($"{mappedUId},{mappedNegIId},-1"); testOrgWriter.WriteLine($"{user.Id},{item.Id},-1"); count++; if (count == 1000) { break; } } } } trainPointWriter.Close(); trainPairWriter.Close(); testWriter.Close(); testOrgWriter.Close(); }