public void SemanticWebTest3b() { var prop0 = Variable.Random(NamePrior()); var dateStrings = Variable.Observed(new[] { "6 May 1953", "May 6, 1953" }); var dateFormat = Variable.DiscreteUniform(dateStrings.Range); var prop1 = ArrayIndex(dateStrings, dateFormat); var template = Variable.Random(StringDistribution.String("{0}") + WordStrings.WordMiddle() + StringDistribution.String("{1}")); var text = Variable.StringFormat(template, prop0, prop1); text.ObservedValue = "Tony Blair was born on May 6, 1953"; var engine = new InferenceEngine(); engine.Compiler.RecommendedQuality = QualityBand.Experimental; engine.NumberOfIterations = 1; var prop0Dist = engine.Infer <StringDistribution>(prop0); var prop1Dist = engine.Infer <StringDistribution>(prop1); var templateDist = engine.Infer <StringDistribution>(template); var dateFormatDist = engine.Infer <Discrete>(dateFormat); StringInferenceTestUtilities.TestProbability(prop0Dist, 1.0, "Tony Blair"); StringInferenceTestUtilities.TestProbability(prop1Dist, 1.0, "May 6, 1953"); StringInferenceTestUtilities.TestProbability(templateDist, 1.0, "{0} was born on {1}"); //Assert.AreEqual(1.0, dateFormatDist[1]); // TODO: fix me }
public void WordMiddleLimitedLength() { const double Eps = 1e-6; var wordMiddleLimitedLength1 = WordStrings.WordMiddle(3, 5); StringInferenceTestUtilities.TestIfIncludes(wordMiddleLimitedLength1, " h w ", ". ab.", "..."); StringInferenceTestUtilities.TestIfExcludes( wordMiddleLimitedLength1, "hello", " w", "hi ", "1 2", ".", "..", " hello world ", string.Empty); Assert.Equal(wordMiddleLimitedLength1.GetLogProb(" h w "), wordMiddleLimitedLength1.GetLogProb(" h "), Eps); var wordMiddleLimitedLength2 = WordStrings.WordMiddle(1, 5); StringInferenceTestUtilities.TestIfIncludes(wordMiddleLimitedLength2, " ", " h w ", ". ab.", "..."); StringInferenceTestUtilities.TestIfExcludes(wordMiddleLimitedLength2, "hello", " w", "hi ", "1 2", " hello world ", string.Empty); Assert.Equal(wordMiddleLimitedLength2.GetLogProb("."), wordMiddleLimitedLength2.GetLogProb(" h "), Eps); var wordMiddleLimitedLength3 = WordStrings.WordMiddle(1, 2); StringInferenceTestUtilities.TestIfIncludes(wordMiddleLimitedLength3, " ", " ."); StringInferenceTestUtilities.TestIfExcludes(wordMiddleLimitedLength3, "hw", " w", "h ", "12", " hello world ", string.Empty); Assert.Equal(wordMiddleLimitedLength3.GetLogProb("."), wordMiddleLimitedLength3.GetLogProb(".."), Eps); }
public void SemanticWebTest3() { // Simplified name model var prop0 = Variable.Random(NamePrior()).Named("prop0"); // Simplified date model any string ending in a digit var prop1 = Variable.Random( StringDistribution.Char(DiscreteChar.Digit()) + StringDistribution.Any() + StringDistribution.Char(DiscreteChar.Digit())) .Named("prop1"); var template = Variable.Random(StringDistribution.String("{0}") + WordStrings.WordMiddle() + StringDistribution.String("{1}")) .Named("template"); var text = Variable.StringFormat(template, prop0, prop1).Named("text"); text.ObservedValue = "Tony Blair was born on 6 May 1953"; var engine = new InferenceEngine(); engine.Compiler.RecommendedQuality = QualityBand.Experimental; engine.NumberOfIterations = 1; var prop0Dist = engine.Infer <StringDistribution>(prop0); var prop1Dist = engine.Infer <StringDistribution>(prop1); var templateDist = engine.Infer <StringDistribution>(template); StringInferenceTestUtilities.TestProbability(prop0Dist, 1.0, "Tony Blair"); StringInferenceTestUtilities.TestProbability(prop1Dist, 0.5, "1953", "6 May 1953"); StringInferenceTestUtilities.TestProbability(templateDist, 0.5, "{0} was born on {1}", "{0} was born on 6 May {1}"); }
public void WordMiddle() { var wordMiddle = WordStrings.WordMiddle(); StringInferenceTestUtilities.TestIfIncludes(wordMiddle, " hello world ", ". abc.", ". abc. def gh. ", " ", ".."); StringInferenceTestUtilities.TestIfExcludes(wordMiddle, "hello", " world", "hi ", "1 2", string.Empty); Assert.Equal(wordMiddle.GetLogProb(" "), wordMiddle.GetLogProb(" world ")); }