def test_predict(self): config = Mock() config.char_bag = 'abc' config.additive_smoothing_amount = 1 sm = mm.AdditiveSmoothingSmoother({ 'a' : 1, 'b' : 2 }, config) answer = np.zeros((3, ), dtype=np.float64) sm.predict('', answer) np.testing.assert_array_almost_equal( answer, np.array([1/3., 1/2., 1/6.], dtype=np.float64))
def test_predict_longer_context(self): config = Mock() config.char_bag = ('abc' + pg.PASSWORD_END) config.backoff_smoothing_threshold = 0 config.additive_smoothing_amount = 0 m = mm.BackoffMarkovModel(config, order=3) m.train([('abc', 1), ('aaa', 1)]) answer = np.zeros((len(config.char_bag), ), dtype=np.float64) m.predict('ab', answer) np.testing.assert_array_almost_equal( answer, np.array([0., 0., 0., 1.], dtype=np.float64)) answer.fill(0) m.predict('ba', answer) np.testing.assert_array_almost_equal( answer, np.array([.25, .5, .25, 0.], dtype=np.float64))