Example #1
0
    def test_prob2(self):
        tagset = {'D', 'N', 'V'}
        trans = {
            ('<s>', '<s>'): {
                'D': 1.0
            },
            ('<s>', 'D'): {
                'N': 1.0
            },
            ('D', 'N'): {
                'V': 0.8,
                'N': 0.2
            },
            ('N', 'N'): {
                'V': 1.0
            },
            ('N', 'V'): {
                '</s>': 1.0
            },
        }
        out = defaultdict(
            float, {
                'D': {
                    'the': 1.0
                },
                'N': {
                    'dog': 0.4,
                    'barks': 0.6
                },
                'V': {
                    'dog': 0.1,
                    'barks': 0.9
                },
            })
        hmm = HMM(3, tagset, trans, out)

        x = 'the dog barks'.split()
        y = 'D N V'.split()
        p = hmm.prob(x, y)
        self.assertAlmostEqual(p, 0.8 * 0.4 * 0.9)

        lp = hmm.log_prob(x, y)
        self.assertAlmostEqual(lp, log2(0.8 * 0.4 * 0.9))
Example #2
0
    def test_prob(self):
        tagset = {'D', 'N', 'V'}
        trans = {
            ('<s>', '<s>'): {'D': 1.0},
            ('<s>', 'D'): {'N': 1.0},
            ('D', 'N'): {'V': 1.0},
            ('N', 'V'): {'</s>': 1.0},
        }
        out = defaultdict(float, {
            'D': {'the': 1.0},
            'N': {'dog': 0.4, 'barks': 0.6},
            'V': {'dog': 0.1, 'barks': 0.9},
        })
        hmm = HMM(3, tagset, trans, out)

        x = 'the dog barks'.split()
        y = 'D N V'.split()
        p = hmm.prob(x, y)
        self.assertAlmostEqual(p, 0.4 * 0.9)

        lp = hmm.log_prob(x, y)
        self.assertAlmostEqual(lp, log2(0.4 * 0.9))