private static void RunExample2() { string text = "Vår kund erbjuder trivsel"; List <LabeledExample> labeledExamples = CreateLabeledExamples(); ITextClassifier textClassifier = new TextClassifier(); TextClassifierResult result = textClassifier.PredictLabel(text, labeledExamples); Console.WriteLine(result.Label); }
private static void RunExample1() { string text = "We are looking for several skilled and driven developers to join our team."; List <LabeledExample> labeledExamples = CreateLabeledExamples(); ITextClassifier textClassifier = new TextClassifier(); TextClassifierResult result = textClassifier.PredictLabel(text, labeledExamples); Console.WriteLine(result.Label); }
public void ToString_ShouldReturnTheExpectedString_WhenInvoked (TextClassifierResult textClassifierResult, string expected) { // Arrange // Act string actual = textClassifierResult.ToString(); // Assert Assert.IsTrue( string.Equals( expected, actual, StringComparison.InvariantCulture)); }
public void TextClassifierResult_ShouldCreateAnInstanceOfThisType_WhenProperArgument() { // Arrange // Act TextClassifierResult actual = new TextClassifierResult( ObjectMother.TextClassifierResult_Label1, ObjectMother.TextClassifierResult_SimilarityIndexes1, ObjectMother.TextClassifierResult_SimilarityIndexAverages1 ); // Assert Assert.IsInstanceOf <TextClassifierResult>(actual); }
// Methods public TextClassifierResult PredictLabel (string text, ITokenizationStrategy strategy, INGramTokenizerRuleSet ruleSet, List <LabeledExample> labeledExamples) { Validator.ValidateStringNullOrWhiteSpace(text, nameof(text)); Validator.ValidateObject(strategy, nameof(strategy)); Validator.ValidateObject(ruleSet, nameof(ruleSet)); Validator.ValidateList(labeledExamples, nameof(labeledExamples)); _components.LoggingAction.Invoke(MessageCollection.TextClassifier_AttemptingToPredictLabel); string truncatedText = _components.TextTruncatingFunction.Invoke(text, _settings.TruncateTextInLogMessagesAfter); _components.LoggingAction.Invoke(MessageCollection.TextClassifier_FollowingTextHasBeenProvided.Invoke(truncatedText)); _components.LoggingAction.Invoke(MessageCollection.TextClassifier_FollowingTokenizationStrategyWillBeUsed.Invoke(strategy)); _components.LoggingAction.Invoke(MessageCollection.TextClassifier_FollowingNGramsTokenizerRuleSetWillBeUsed.Invoke(ruleSet)); _components.LoggingAction.Invoke(MessageCollection.TextClassifier_XLabeledExamplesHaveBeenProvided.Invoke(labeledExamples)); List <INGram> nGrams = _components.NGramsTokenizer.Do(text, strategy, ruleSet); _components.LoggingAction.Invoke(MessageCollection.TextClassifier_ProvidedTextHasBeenTokenizedIntoXNGrams.Invoke(nGrams)); List <SimilarityIndex> indexes = GetSimilarityIndexes(nGrams, labeledExamples); _components.LoggingAction.Invoke(MessageCollection.TextClassifier_TokenizedTextHasBeenComparedAgainstTheProvidedLabeledExamples); _components.LoggingAction.Invoke(MessageCollection.TextClassifier_XSimilarityIndexObjectsHaveBeenComputed.Invoke(indexes)); List <SimilarityIndexAverage> indexAverages = GetSimilarityIndexAverages(indexes); _components.LoggingAction.Invoke(MessageCollection.TextClassifier_XSimilarityIndexAverageObjectsHaveBeenComputed(indexAverages)); string label = PredictLabel(indexAverages); _components.LoggingAction.Invoke(MessageCollection.TextClassifier_PredictedLabelIs.Invoke(label)); if (label == null) { _components.LoggingAction.Invoke(MessageCollection.TextClassifier_PredictionHasFailedTryIncreasingTheAmountOfProvidedLabeledExamples); } else { _components.LoggingAction.Invoke(MessageCollection.TextClassifier_PredictionHasBeenSuccessful); } TextClassifierResult result = new TextClassifierResult(label, indexes, indexAverages); return(result); }
public void PredictLabel_ShouldReturnANullLabelAndLogTheExpectedMessages_WhenContainsAllIndexAverageValuesEqualToZero() { // Arrange List <string> actualLogMessages = new List <string>(); Action <string> fakeLoggingAction = (message) => actualLogMessages.Add(message); TextClassifierComponents components = new TextClassifierComponents( new NGramTokenizer(), new SimilarityIndexCalculatorJaccard(), TextClassifierComponents.DefaultRoundingFunction, TextClassifierComponents.DefaultTextTruncatingFunction, fakeLoggingAction); TextClassifier textClassifier = new TextClassifier(components, new TextClassifierSettings()); string truncatedText = TextClassifierComponents.DefaultTextTruncatingFunction.Invoke( ObjectMother.TextClassifier_Text3, TextClassifierSettings.DefaultTruncateTextInLogMessagesAfter); List <string> expectedLogMessages = new List <string>() { MessageCollection.TextClassifier_AttemptingToPredictLabel, MessageCollection.TextClassifier_FollowingTextHasBeenProvided.Invoke(truncatedText), MessageCollection.TextClassifier_FollowingTokenizationStrategyWillBeUsed.Invoke(new TokenizationStrategy()), MessageCollection.TextClassifier_FollowingNGramsTokenizerRuleSetWillBeUsed.Invoke(new NGramTokenizerRuleSet()), MessageCollection.TextClassifier_XLabeledExamplesHaveBeenProvided.Invoke(ObjectMother.TextClassifier_LabeledExamples), MessageCollection.TextClassifier_ProvidedTextHasBeenTokenizedIntoXNGrams.Invoke(ObjectMother.TextClassifier_Text3_NGrams), MessageCollection.TextClassifier_ComparingProvidedTextAgainstFollowingLabeledExample.Invoke(ObjectMother.TextClassifier_LabeledExamples[0]), MessageCollection.TextClassifier_CalculatedSimilarityIndexValueIs.Invoke(ObjectMother.TextClassifier_Text3_SimilarityIndexes[0].Value), MessageCollection.TextClassifier_RoundedSimilarityIndexValueIs.Invoke(ObjectMother.TextClassifier_Text3_SimilarityIndexes[0].Value), MessageCollection.TextClassifier_FollowingSimilarityIndexObjectHasBeenAddedToTheList.Invoke(ObjectMother.TextClassifier_Text3_SimilarityIndexes[0]), MessageCollection.TextClassifier_ComparingProvidedTextAgainstFollowingLabeledExample.Invoke(ObjectMother.TextClassifier_LabeledExamples[1]), MessageCollection.TextClassifier_CalculatedSimilarityIndexValueIs.Invoke(ObjectMother.TextClassifier_Text3_SimilarityIndexes[1].Value), MessageCollection.TextClassifier_RoundedSimilarityIndexValueIs.Invoke(ObjectMother.TextClassifier_Text3_SimilarityIndexes[1].Value), MessageCollection.TextClassifier_FollowingSimilarityIndexObjectHasBeenAddedToTheList.Invoke(ObjectMother.TextClassifier_Text3_SimilarityIndexes[1]), MessageCollection.TextClassifier_TokenizedTextHasBeenComparedAgainstTheProvidedLabeledExamples, MessageCollection.TextClassifier_XSimilarityIndexObjectsHaveBeenComputed.Invoke(ObjectMother.TextClassifier_Text3_SimilarityIndexes), MessageCollection.TextClassifier_FollowingUniqueLabelsHaveBeenFound.Invoke(ObjectMother.TextClassifier_Text3_UniqueLabels), MessageCollection.TextClassifier_CalculatingIndexAverageForTheFollowingLabel.Invoke(ObjectMother.TextClassifier_Text3_UniqueLabels[0]), MessageCollection.TextClassifier_CalculatedSimilarityIndexAverageValueIs.Invoke(ObjectMother.TextClassifier_Text3_SimilarityIndexAverages[0].Value), MessageCollection.TextClassifier_RoundedSimilarityIndexAverageValueIs.Invoke(ObjectMother.TextClassifier_Text3_SimilarityIndexAverages[0].Value), MessageCollection.TextClassifier_FollowingSimilarityIndexAverageObjectHasBeenAddedToTheList.Invoke(ObjectMother.TextClassifier_Text3_SimilarityIndexAverages[0]), MessageCollection.TextClassifier_CalculatingIndexAverageForTheFollowingLabel.Invoke(ObjectMother.TextClassifier_Text3_UniqueLabels[1]), MessageCollection.TextClassifier_CalculatedSimilarityIndexAverageValueIs.Invoke(ObjectMother.TextClassifier_Text3_SimilarityIndexAverages[1].Value), MessageCollection.TextClassifier_RoundedSimilarityIndexAverageValueIs.Invoke(ObjectMother.TextClassifier_Text3_SimilarityIndexAverages[1].Value), MessageCollection.TextClassifier_FollowingSimilarityIndexAverageObjectHasBeenAddedToTheList.Invoke(ObjectMother.TextClassifier_Text3_SimilarityIndexAverages[1]), MessageCollection.TextClassifier_XSimilarityIndexAverageObjectsHaveBeenComputed(ObjectMother.TextClassifier_Text3_SimilarityIndexAverages), MessageCollection.TextClassifier_FollowingVerificationHasFailed.Invoke("ContainsAtLeastOneIndexAverageThatIsNotZero"), MessageCollection.TextClassifier_PredictedLabelIs.Invoke(ObjectMother.TextClassifier_Text3_Label), MessageCollection.TextClassifier_PredictionHasFailedTryIncreasingTheAmountOfProvidedLabeledExamples }; // Act TextClassifierResult actual = textClassifier.PredictLabel( ObjectMother.TextClassifier_Text3, ObjectMother.TextClassifier_LabeledExamples); // Assert Assert.IsTrue( ObjectMother.AreEqual( ObjectMother.TextClassifier_Text3_TextClassifierResult, actual )); Assert.AreEqual(expectedLogMessages, actualLogMessages); }