def test_viterbi_should_work_well_with_terminal_productions(self): # Given: production = Production(self.detector, self.rule) production.probability = 0.5 production2 = Production(self.detector, self.rule) production2.probability = 0.8 # When: self.sut.add_production(production, None, viterbi_probability_approach) self.sut.add_production(production2, None, viterbi_probability_approach) # Then: assert_that(self.sut.is_empty(), is_(equal_to(False))) assert_that(self.sut.get_effectors(), only_contains(Symbol("A"))) assert_that(self.sut.get_non_empty_productions(), only_contains(production)) assert_that(self.sut.effector_probabilities[Symbol("A")], is_(equal_to(0.8)))
def test_baum_welch_should_work_well_with_non_terminal_productions(self): # Given: production = Production(self.detector, self.rule) production.probability = 0.5 production2 = Production(self.detector, self.rule) production2.probability = 0.8 # When: self.sut.add_production(production, (anything(), 0.4, anything(), 0.6), baum_welch_probability_approach) self.sut.add_production(production2, (anything(), 0.1, anything(), 0.5), baum_welch_probability_approach) # Then: assert_that(self.sut.is_empty(), is_(equal_to(False))) assert_that(self.sut.get_effectors(), only_contains(Symbol("A"))) assert_that(self.sut.get_non_empty_productions(), only_contains(production)) assert_that(self.sut.effector_probabilities[Symbol("A")], is_(equal_to(0.16)))