def test_evaluate(self): numpy_optimizer = NumpyBigramOptimizer(self.statistics, self.vocabulary) theano_optimizer = TheanoBigramOptimizer(self.statistics, self.vocabulary) word_id = numpy_optimizer.get_word_id('d') orig_class_id = numpy_optimizer.get_word_class(word_id) new_class_id = 1 if orig_class_id != 1 else 0 orig_ll = numpy_optimizer.log_likelihood() self.assertTrue( numpy.isclose(orig_ll, theano_optimizer.log_likelihood())) ll_diff = numpy_optimizer._evaluate(word_id, new_class_id) self.assertTrue( numpy.isclose(ll_diff, theano_optimizer._evaluate(word_id, new_class_id))) numpy_optimizer._move(word_id, new_class_id) new_ll = numpy_optimizer.log_likelihood() self.assertFalse(numpy.isclose(orig_ll, new_ll)) self.assertTrue(numpy.isclose(orig_ll + ll_diff, new_ll)) theano_optimizer._move(word_id, new_class_id) self.assertTrue( numpy.isclose(new_ll, theano_optimizer.log_likelihood()))
def test_evaluate(self): numpy_optimizer = NumpyBigramOptimizer(self.statistics, self.vocabulary) theano_optimizer = TheanoBigramOptimizer(self.statistics, self.vocabulary) word_id = numpy_optimizer.get_word_id('d') orig_class_id = numpy_optimizer.get_word_class(word_id) new_class_id = 1 if orig_class_id != 1 else 0 orig_ll = numpy_optimizer.log_likelihood() self.assertTrue(numpy.isclose(orig_ll, theano_optimizer.log_likelihood())) ll_diff = numpy_optimizer._evaluate(word_id, new_class_id) self.assertTrue(numpy.isclose(ll_diff, theano_optimizer._evaluate(word_id, new_class_id))) numpy_optimizer._move(word_id, new_class_id) new_ll = numpy_optimizer.log_likelihood() self.assertFalse(numpy.isclose(orig_ll, new_ll)) self.assertTrue(numpy.isclose(orig_ll + ll_diff, new_ll)) theano_optimizer._move(word_id, new_class_id) self.assertTrue(numpy.isclose(new_ll, theano_optimizer.log_likelihood()))