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