コード例 #1
0
 public async Task Add(ProcessInfoLabeledItem item)
 {
     if (await _collection.CountDocumentsAsync(Builders <ProcessInfoLabeledItem> .Filter.Eq(f => f.Id, item.Id)) == 0)
     {
         await _collection.InsertOneAsync(item);
     }
 }
コード例 #2
0
 private void AfterMap(ProcessInfoLabeledItemDto arg1, ProcessInfoLabeledItem arg2)
 {
     arg2.GenerateId(new Murmur3Hash());
 }
コード例 #3
0
        private static void CreateTrainingData()
        {
            var mongoClient = new MongoClient("mongodb://localhost:27017");
            var database    = mongoClient.GetDatabase("active_app_record");
            var collection  = database.GetCollection <AppUsageRecord>("daily_records");

            var records = collection.Find(Builders <AppUsageRecord> .Filter.Empty).ToList();

            var trainingDataCollection = database.GetCollection <ProcessInfoLabeledItem>("training_data");

            string userInput;

            var hashAlgorithm = new Murmur3Hash();

            foreach (var appUsageRecord in records)
            {
                foreach (var processInfo in appUsageRecord.ActiveApps)
                {
                    var trainingItem = new ProcessInfoLabeledItem
                    {
                        Title   = processInfo.Value.MainWindowTitle,
                        Process = processInfo.Value.ProcessName
                    };

                    trainingItem.GenerateId(hashAlgorithm);

                    var persistentItem = trainingDataCollection.Find(Builders <ProcessInfoLabeledItem> .Filter.Eq(f => f.Id, trainingItem.Id)).FirstOrDefault();
                    if (persistentItem != null)
                    {
                        continue;
                    }

                    Console.WriteLine($"Is Title [{processInfo.Value.MainWindowTitle}] in process [{processInfo.Value.ProcessName}] good or bad? n-(Neural), g-(Good), b-(Bad):");
                    userInput = Console.ReadLine().Trim().ToLower();

                    if (userInput != "b" && userInput != "n")
                    {
                        trainingItem.Category = Karma.Good;
                    }
                    else if (userInput == "n")
                    {
                        trainingItem.Category = Karma.Neutral;
                    }
                    else
                    {
                        trainingItem.Category = Karma.Bad;
                    }

                    if (persistentItem == null)
                    {
                        Console.WriteLine($"Inserted item with category {trainingItem.Category.ToString()}");
                        trainingDataCollection.InsertOne(trainingItem);
                    }
                    else
                    {
                        Console.WriteLine($"Updated item with category {trainingItem.Category.ToString()}");
                        trainingDataCollection.ReplaceOne(Builders <ProcessInfoLabeledItem> .Filter.Eq(f => f.Id, trainingItem.Id), trainingItem);
                    };
                }
            }
        }