首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Viterbi算法中的日志概率(处理零概率)

Viterbi算法中的日志概率(处理零概率)
EN

Stack Overflow用户
提问于 2020-10-15 10:16:16
回答 1查看 537关注 0票数 1

我正在使用Viterbi算法在Python中编码语音标记器的概率部分。在此背景下,时间t处的Viterbi概率是Viterbi路径概率从前一时间步骤t-1、从前一个POS标签到当前POS标记的转换概率以及给定POS标记的观察词的发射概率的乘积。我是通过在句子中的每个单词来计算这一点的,查看每个标记/状态在这个时候是可能的(从观察到的训练数据),然后为每个可能的标记计算到这个状态的最可能的路径,由上面解释的维特比概率给出。一个简单的psuedo代码实现可以找到这里

重复增加概率的一个实际问题是,它可能导致潜流。文献中经常提出的解决方案之一是使用日志概率。据我所知,你应该这样做:

代码语言:javascript
复制
current_probability = math.log(emission_probability) + math.log(transition_probability) + previous_probability

而不是

代码语言:javascript
复制
current_probability = emission_probability * transition_probability * previous_probability

假设这三个概率存储在相应的变量中。

然而,我发现一个很难理解的问题是,当发射概率或跃迁概率为0时,该怎么办。迈克尔·柯林斯:“新算法的一个问题是log 0 =−∞,需要谨慎处理等于0的概率值。一个简单的解决方案是设置log0=−B,其中B是一个大数。”

我应该使用多大的号码?-math.inf

EN

回答 1

Stack Overflow用户

发布于 2022-10-09 12:10:45

处理这一问题的一种方法是添加一些平滑的方法,比如https://i.stack.imgur.com/LdNgP.png

局部变量

word_tag :训练语料库中单词的计数。tag_total :标记为标签的单词的数量,如:I.E.P(word= TAG )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64369396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档