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']))
Exemplo n.º 3
0
    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']))
Exemplo n.º 4
0
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)