Esempio n. 1
0
 public void SetUp()
 {
     loggerFactory         = new NullLoggerFactory();
     vectorSource          = new EmbeddingVectorSource(WordModel.Load(Path.Combine(TestContext.CurrentContext.TestDirectory, @"Data\model.bin")));
     documentReconstructor = new DocumentReconstructor();
     documents             = JsonConvert.DeserializeObject <Document[]>(File.ReadAllText(Path.Combine(TestContext.CurrentContext.TestDirectory, "Data", "docs.json")));
     instance = CreateModelStorage();
 }
Esempio n. 2
0
        public async Task LogicTest()
        {
            var negative = documents.Take(2).Concat(documents.Skip(30)).Select(item => new ProcessingTextBlock(item.Sentences.ToArray())).ToArray();
            var positive = documents.Skip(2).Take(29).Select(item => new ProcessingTextBlock(item.Sentences.ToArray())).ToArray();

            instance.Add(DataType.Positive, positive);
            instance.Add(DataType.Negative, negative);
            var pageDetector = await instance.Train(CancellationToken.None).ConfigureAwait(false);

            var result   = pageDetector.Predict(new DocumentBlock(documents).Pages).Select(item => item ? 1 : 0).ToArray();
            var expected = new int[documents.Length];

            for (int i = 2; i <= 30; i++)
            {
                expected[i] = 1;
            }

            var cm = new GeneralConfusionMatrix(2, expected, result);

            Assert.GreaterOrEqual(cm.PerClassMatrices[0].FScore, 0.8);
            Assert.GreaterOrEqual(cm.PerClassMatrices[1].FScore, 0.9);

            instance.Save("Result");
            SvmModelStorageFactory storageFactory = new SvmModelStorageFactory(
                loggerFactory,
                vectorSource,
                documentReconstructor,
                new StorageConfig {
                Location = TestContext.CurrentContext.TestDirectory
            });

            instance = (SvmModelStorage)storageFactory.Construct("Result");
            result   = pageDetector.Predict(new DocumentBlock(documents).Pages).Select(item => item ? 1 : 0).ToArray();
            cm       = new GeneralConfusionMatrix(2, expected: expected, predicted: result);
            Assert.GreaterOrEqual(cm.PerClassMatrices[0].FScore, 0.8);
            Assert.GreaterOrEqual(cm.PerClassMatrices[1].FScore, 0.9);
        }