Beispiel #1
0
def or_d(x, y):
    out = defaultdict(lambdaMinusInfinity)
    out[True] = logplusexp(
        x.get(True, -Infinity) + y.get(False, -Infinity),
        x.get(False, -Infinity) + y.get(True, -Infinity))
    out[False] = log1mexp(out[True])
    return out
Beispiel #2
0
def not_d(x):
    out = defaultdict(lambdaMinusInfinity)
    out[True] = x.get(False, -Infinity)
    out[False] = log1mexp(out[True])
    return out
Beispiel #3
0
def and_d(x, y):
    out = defaultdict(lambdaMinusInfinity)
    out[True] = x.get(True, -Infinity) + y.get(True, -Infinity)
    out[False] = log1mexp(out[True])
    return out
Beispiel #4
0
def equal_d(x, y):
    peq = -Infinity
    for a, v in list(x.items()):
        peq = logplusexp(peq, v + y.get(a, -Infinity))  # P(x=a,y=a)
    return {True: peq, False: log1mexp(peq)}
Beispiel #5
0
def empty_d(x):
    p = x.get('', -Infinity)
    return {True: p, False: log1mexp(p)}
Beispiel #6
0
 def __init__(self, gamma=-30, **kwargs):
     RecursiveLOTHypothesis.__init__(self, grammar, **kwargs)
     self.gamma = gamma
     self.lg1mgamma = log1mexp(gamma)