mosesdecoder/contrib/promix/test_sampler.py
2013-02-21 17:59:53 +00:00

54 lines
1.4 KiB
Python
Executable File

#!/usr/bin/env python
import random
import unittest
from nbest import *
from sampler import *
class TestNBestSampler(unittest.TestCase):
def setUp(self):
self.h1 = Hypothesis("a",[])
self.h2 = Hypothesis("b",[])
self.h3 = Hypothesis("c",[])
self.nbest = NBestList(1)
self.nbest.hyps.append(self.h1)
self.nbest.hyps.append(self.h2)
self.nbest.hyps.append(self.h3)
self.sampler = HopkinsMaySampler()
def test_nsamples(self):
self.h1.score = 0.1
self.h2.score = 0.2
self.h3.score = 0.3
samples = self.sampler.sample(self.nbest)
self.assertEqual(len(samples), self.sampler.nsamples)
def test_biggest(self):
random.seed(0)
self.h1.score = 0.1
self.h2.score = 0.2
self.h3.score = 0.3
samples = self.sampler.sample(self.nbest)
for sample in samples:
self.assertAlmostEqual(sample.diff,0.2)
def test_score_diff(self):
self.h1.score = 0.1
self.h2.score = 0.1 + (0.9*self.sampler.min_diff)
self.h3.score = 0.1 + (1.8*self.sampler.min_diff)
# Should only see pairs with h1,h3
samples = self.sampler.sample(self.nbest)
for sample in samples:
self.assertTrue((sample.hyp1 == self.h1 and sample.hyp2 == self.h3) or \
(sample.hyp2 == self.h1 and sample.hyp1 == self.h3))
if __name__ == "__main__":
unittest.main()
suite = unittest.TestLoader().loadTestsFromTestCase(TestNBestSampler)