public void FuzzyMatchingClientPerfomanceTest(List <string> dataset, int[] testDataSizes, string testSentence)
        {
            foreach (var dataSize in testDataSizes)
            {
                // read dataset
                var tmp = dataset.Take(dataSize).ToList();

                // initialize clients
                var preprocessorClient = new PreprocessorClient();
                var runtimeClient      = new RuntimeClient();

                // process dataset
                var processedDataset = preprocessorClient.ProcessDataset(tmp);

                // performance test
                var start = DateTime.Now;

                runtimeClient.MatchEntities(processedDataset, dataset, testSentence, MatchingMethod.NoMatchIndices);

                var end = DateTime.Now;
                var ts  = end - start;

                // print time
                Console.WriteLine("Elapsed Time for the program with size {0} is {1} s", dataSize, ts.TotalSeconds);
            }
        }
示例#2
0
        public void MultipleMatchTest(List <string> dataset, List <string> testSentencesList, List <MatchResult> expected)
        {
            // initialize clients
            var preprocessorClient = new PreprocessorClient();
            var runtimeClient      = new RuntimeClient();

            // process dataset
            var processedDataset = preprocessorClient.ProcessDataset(dataset);

            // exact matches
            var index = 0;

            for (; index < 3; index++)
            {
                var resultList = runtimeClient.MatchEntities(processedDataset, dataset, testSentencesList[index], MatchingMethod.NoMatchIndices, threshold: 0.8f);
                var result     = resultList[0];
                Assert.Equal(1f, result.SimilarityScore, 4);
            }

            // altering sentence to decrease similarity scores
            testSentencesList[3] = testSentencesList[3].Remove(testSentencesList[3].Length - 2, 2).Insert(0, "Testing ") + " last word";
            testSentencesList[4] = testSentencesList[4].Insert(0, "The ");
            testSentencesList[5] = testSentencesList[5].Remove(testSentencesList[5].Length - 2, 2) + " nw";

            // close matches
            for (; index < 6; index++)
            {
                var resultList = runtimeClient.MatchEntities(processedDataset, dataset, testSentencesList[index], MatchingMethod.NoMatchIndices, threshold: 0.8f);
                var result     = resultList[0];
                Assert.InRange(result.SimilarityScore, 0.5f, 1f);
            }

            // altering sentences heavily
            testSentencesList[6] = testSentencesList[6].Replace(testSentencesList[6][0], 'x').Insert(0, "Testing ");

            var halfLength = testSentencesList[7].Length / 2;

            testSentencesList[7] = testSentencesList[7].Insert(0, "The ").Insert(halfLength, "other words") + " more words";

            var thirdLength = testSentencesList[8].Length / 3;

            testSentencesList[8] = testSentencesList[8].Remove(0, thirdLength) + " added words.";

            // far matches
            for (; index < 9; index++)
            {
                var resultList = runtimeClient.MatchEntities(processedDataset, dataset, testSentencesList[index], MatchingMethod.NoMatchIndices, threshold: 0.5f);
                var result     = resultList[0];
                Assert.InRange(result.SimilarityScore, 0f, 1f);
            }
        }
示例#3
0
        public void SingleMatchTest(List <string> dataset, string sentenceToMatch, MatchResult expected)
        {
            // initialize clients
            var preprocessorClient = new PreprocessorClient();
            var runtimeClient      = new RuntimeClient();

            // process dataset
            var processedDataset = preprocessorClient.ProcessDataset(dataset);

            // runtime
            var resultList = runtimeClient.MatchEntities(processedDataset, dataset, sentenceToMatch, MatchingMethod.NoMatchIndices);
            var result     = resultList[0];

            // assert
            Assert.Equal(result.DatabaseMatchInfo.MatchText, expected.DatabaseMatchInfo.MatchText);
            Assert.Equal(result.DatabaseMatchInfo.MatchIndex, expected.DatabaseMatchInfo.MatchIndex);

            // print result
            Console.WriteLine("sentence to match : {0}", sentenceToMatch);
            Console.WriteLine("Matched Sentence : {0}", result.DatabaseMatchInfo.MatchText);
            Console.WriteLine("Matched Sentence Score : {0}", result.SimilarityScore);
            Console.WriteLine("Matched Sentence Index : {0}", result.DatabaseMatchInfo.MatchIndex);
        }
        public void TokenMatchingTest(List <string> dataset, string testSentence, MatchResult expected)
        {
            // initialize clients
            var preprocessorClient = new PreprocessorClient();
            var runtimeClient      = new RuntimeClient();

            // process dataset
            var processedDataset = preprocessorClient.ProcessDataset(dataset);

            // runtime
            var resultList = runtimeClient.MatchEntities(processedDataset, dataset, testSentence, MatchingMethod.PreprocessInputSentence, threshold: 0.80f);
            var result     = resultList.OrderByDescending(r => r.SimilarityScore).FirstOrDefault();

            // asserting that the right entity was correctly found
            // This is not a perfect test for this dataset since some entities are subsets of each other
            Assert.Equal(result.DatabaseMatchInfo.MatchText, expected.DatabaseMatchInfo.MatchText);
            Assert.Equal(result.DatabaseMatchInfo.MatchIndex, expected.DatabaseMatchInfo.MatchIndex);

            // print result
            Console.WriteLine("sentence to match : {0}", testSentence);
            Console.WriteLine("Matched Sentence : {0}", result.DatabaseMatchInfo.MatchText);
            Console.WriteLine("Matched Sentence Score : {0}", result.SimilarityScore);
            Console.WriteLine("Matched Sentence Index : {0}", result.DatabaseMatchInfo.MatchIndex);
        }
 public MatchIndexResolutionTests()
 {
     _preprocessorClient = new PreprocessorClient();
     _runtimeClient      = new RuntimeClient();
 }