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