|
|
|
|
|
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) |
|
|
|
|
|
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) |
|
|