class EnvironmentFilterTest(unittest.TestCase): def setUp(self): self.corpus_info = [{'spelling':'a','transcription':['a','b'],'frequency':32.0}, {'spelling':'b','transcription':['a','b'],'frequency':32.0}, {'spelling':'c','transcription':['c','a','b'],'frequency':32.0}, {'spelling':'d','transcription':['a','d'],'frequency':32.0},] self.feature_info = [{'symbol':'a','feature1':'+','feature2':'+'}, {'symbol':'b','feature1':'+','feature2':'-'}, {'symbol':'c','feature1':'-','feature2':'+'}, {'symbol':'d','feature1':'-','feature2':'-'}] self.corpus = Corpus('test') for w in self.corpus_info: self.corpus.add_word(Word(**w)) fm = FeatureMatrix('test',self.feature_info) self.corpus.set_feature_matrix(fm) self.corpus.inventory.update_features(self.corpus.specifier) def test_init(self): segs = self.corpus.features_to_segments('+feature1') envfilt = EnvironmentFilter(['a'], lhs = [segs]) self.assertEqual(sorted(envfilt.lhs[0]),sorted(['a','b'])) self.assertEqual(envfilt.rhs, None) segs = self.corpus.features_to_segments('-feature1') envfilt = EnvironmentFilter('a',rhs = [segs]) self.assertEqual(sorted(envfilt.rhs[0]),sorted(['c','d'])) self.assertEqual(envfilt.lhs,None) segs = self.corpus.features_to_segments('-feature1,-feature2') envfilt = EnvironmentFilter('a',rhs = [segs]) self.assertEqual(sorted(envfilt.rhs[0]),sorted(['d'])) def test_contains(self): segs = self.corpus.features_to_segments('+feature1') envfilt = EnvironmentFilter('a',lhs = [segs]) env1 = Environment('a', None, lhs = ['a'], rhs = ['b']) env2 = Environment('a', None, lhs = ['c'], rhs = ['#']) env3 = Environment('a', None, lhs = ['a'], rhs = ['c']) self.assertTrue(env1 in envfilt) self.assertFalse(env2 in envfilt) segs = self.corpus.features_to_segments('+feature1') envfilt = EnvironmentFilter('a',rhs = [segs], lhs=[segs]) self.assertTrue(env1 in envfilt) self.assertFalse(env2 in envfilt) self.assertFalse(env3 in envfilt)
def test_feats_to_segs(self): corpus = Corpus('test') for w in self.corpus_basic_info: corpus.add_word(Word(**w)) fm = FeatureMatrix('test',self.feature_basic_info) corpus.set_feature_matrix(fm) self.assertEqual(sorted(corpus.features_to_segments(['+feature1'])),sorted(['a','b']))
def test_feats_to_segs(self): corpus = Corpus('test') for w in self.corpus_basic_info: corpus.add_word(Word(**w)) fm = FeatureMatrix('test', self.feature_basic_info) corpus.set_feature_matrix(fm) self.assertEqual(sorted(corpus.features_to_segments(['+feature1'])), sorted(['a', 'b']))
class EnvironmentFilterTest(unittest.TestCase): def setUp(self): self.corpus_info = [ { 'spelling': 'a', 'transcription': ['a', 'b'], 'frequency': 32.0 }, { 'spelling': 'b', 'transcription': ['a', 'b'], 'frequency': 32.0 }, { 'spelling': 'c', 'transcription': ['c', 'a', 'b'], 'frequency': 32.0 }, { 'spelling': 'd', 'transcription': ['a', 'd'], 'frequency': 32.0 }, ] self.feature_info = [{ 'symbol': 'a', 'feature1': '+', 'feature2': '+' }, { 'symbol': 'b', 'feature1': '+', 'feature2': '-' }, { 'symbol': 'c', 'feature1': '-', 'feature2': '+' }, { 'symbol': 'd', 'feature1': '-', 'feature2': '-' }] self.corpus = Corpus('test') for w in self.corpus_info: self.corpus.add_word(Word(**w)) fm = FeatureMatrix('test', self.feature_info) self.corpus.set_feature_matrix(fm) self.corpus.inventory.update_features(self.corpus.specifier) def test_init(self): segs = self.corpus.features_to_segments('+feature1') envfilt = EnvironmentFilter(['a'], lhs=[segs]) self.assertEqual(sorted(envfilt.lhs[0]), sorted(['a', 'b'])) self.assertEqual(envfilt.rhs, None) segs = self.corpus.features_to_segments('-feature1') envfilt = EnvironmentFilter('a', rhs=[segs]) self.assertEqual(sorted(envfilt.rhs[0]), sorted(['c', 'd'])) self.assertEqual(envfilt.lhs, None) segs = self.corpus.features_to_segments('-feature1,-feature2') envfilt = EnvironmentFilter('a', rhs=[segs]) self.assertEqual(sorted(envfilt.rhs[0]), sorted(['d'])) def test_contains(self): segs = self.corpus.features_to_segments('+feature1') envfilt = EnvironmentFilter('a', lhs=[segs]) env1 = Environment('a', None, lhs=['a'], rhs=['b']) env2 = Environment('a', None, lhs=['c'], rhs=['#']) env3 = Environment('a', None, lhs=['a'], rhs=['c']) self.assertTrue(env1 in envfilt) self.assertFalse(env2 in envfilt) segs = self.corpus.features_to_segments('+feature1') envfilt = EnvironmentFilter('a', rhs=[segs], lhs=[segs]) self.assertTrue(env1 in envfilt) self.assertFalse(env2 in envfilt) self.assertFalse(env3 in envfilt)