Exemple #1
0
    def lookaheadProbFullPOS(self, nt, pos, level):
        nt = (level, nt)
        #eqn 3.30 from Roark
        if pos is None:
            #XXX hardcoded name of epsilon nonterm
            try:
                res = self.ntToPos[nt]["EPSILON"]
                #print >>sys.stderr, nt, "to epsilon", res
                return res
            except KeyError:
                return 0

        try:
            term = self.ntToPos[nt][pos]
        except KeyError:
            term = 0

        assert_valid_prob(term)
        return term
Exemple #2
0
    def lookaheadProbFull(self, nt, word, lamb=None):
        #eqn 3.30 from Roark
        if lamb == None and not self.lambdas:
            return 1.0

        if lamb == None:
            lamb = self.lambdas[nt]

        try:
            pGivenWord = self.ntToWord[nt][word]
        except KeyError:
            pGivenWord = 0

        pGivenPos = 0
        for pos in self.posToWord:
            try:
                term = self.ntToPos[nt][pos] * self.posToWord[pos][word]
            except KeyError:
                term = 0
            pGivenPos += term

        assert_valid_prob(pGivenWord)
        assert_valid_prob(pGivenPos)

        res = lamb * pGivenWord + (1 - lamb) * pGivenPos

        assert_valid_prob(res)

        return res
Exemple #3
0
    def lookaheadProbFull(self, nt, word, lamb=None):
        #eqn 3.30 from Roark
        if word is None:
            #XXX hardcoded name of epsilon nonterm
            try:
                res = self.ntToPos[nt]["EPSILON"]
                #print >>sys.stderr, nt, "to epsilon", res
                return res
            except KeyError:
                return 0

        if lamb == None and not self.lambdas:
            return 1.0

        if lamb == None:
            lamb = self.lambdas[nt]

        try:
            pGivenWord = self.ntToWord[nt][word]
        except KeyError:
            pGivenWord = 0

        pGivenPos = 0
        for pos in self.posToWord:
            try:
                term = self.ntToPos[nt][pos] * self.posToWord[pos][word]
            except KeyError:
                term = 0
            pGivenPos += term

        assert_valid_prob(pGivenWord)
        assert_valid_prob(pGivenPos)

        res = lamb * pGivenWord + (1 - lamb) * pGivenPos

        assert_valid_prob(res)

        return res
Exemple #4
0
 def recalcProb(self):
     # could probably be speeded up with a knowledge of what changed
     self.recalcProbHelper(self)
     assert_valid_prob(-self.prob)
     self.fom = self.prob * self.lap