sequitur.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:sequitur-g2p 作者: Holzhaus 项目源码 文件源码
def adjustHigherOrder(self, evidence, order, maximumDiscount):
    def criterion(discount):
        disc = tuple(num.maximum(0.0, discount))
        sm = self.modelFactory.sequenceModel(evidence, disc)
        ll = self.develSample.logLik(sm, self.shallUseMaximumApproximation)
        crit = - ll \
           - sum(num.minimum(discount, 0)) \
           + sum(num.maximum(discount - maximumDiscount, 0))
        print discount, ll, crit # TESTING
        return crit

    initialGuess = self.discounts[-1]
    firstDirection = None
    if initialGuess is None:
        initialGuess = 0.1 * num.arange(1, order+2, dtype=num.float64)
    elif len(initialGuess) < order+1:
            oldGuess = initialGuess
        oldSize = len(initialGuess)
            initialGuess = num.zeros(order+1, dtype=num.float64)
            initialGuess[:oldSize] = oldGuess
        initialGuess[oldSize:] = oldGuess[-1]
    elif len(initialGuess) > order+1:
        initialGuess = initialGuess[:order+1]
    else:
        previous = self.discounts[-2]
        if previous is not None and len(previous) == order+1:
        firstDirection = initialGuess - previous
        if not num.sometrue(num.abs(firstDirection) > 1e-4):
            firstDirection = None

    directions = num.identity(order+1, dtype=num.float64)
    directions = directions[::-1]
    if firstDirection is not None:
        directions = num.concatenate((firstDirection[num.newaxis,:], directions))
    directions *= 0.1
    print directions # TESTING

    discount, ll = Minimization.directionSetMinimization(
        criterion, initialGuess, directions, tolerance=1e-4)

    discount = num.maximum(0.0, discount)
    return discount, -ll
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号