algorithm - 在信息检索环境中将概率的负对数限制为正值(语言建模)

标签 algorithm math information-retrieval logarithm

如果我们取概率的对数,则返回的值为负值。该值用于信息检索库的匹配器,该匹配器拒绝负值,因此我需要将负值限制为正值,以便匹配器不会拒绝文档。

一种方法是在概率中添加一个随机数(例如 K)

即返回 max(log( prob. + K) 其中 K 是一个大常数或 return max(log(K.Prob),0) 其中 K 是一个大常数

是否有更好的方法将负对数值限制为正值?其中哪一个是更好的方法?

如果我们选择上述任何一种方法,我对如何选择合适的 K 感到非常头晕。如果有人能建议如何选择合适的大 K,我会很高兴?

P.S 使用对数值很重要,因为我们正在尝试实现需要乘以概率的模型,但由于体系结构不可行,无法支持我们对概率的对数(即概率的乘积)求和,因此使用这里对数值很重要(取反对数不是一个可行的方法)

最佳答案

您始终可以使用 log(1 + p)。这将使您的范围从 (-inf, 0] -> [0, log(2)] 偏移。我认为这会解决您的问题。

一般最常用的方法是按照其他人的建议取对数的负数。您也可以使用 1/(1-log(p)) ,但这对您的情况没有帮助。

所以 log(1 + p) 似乎是最好的解决方案。

关于algorithm - 在信息检索环境中将概率的负对数限制为正值(语言建模),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10343831/

相关文章:

algorithm - 从字母数字字符串生成唯一 ID

algorithm - Scala 中的通用快速排序

math - 可耻的简单 : need help spacing shapes

python - 从 Python 库的角度来看,爬行、解析、索引、搜索之间有什么区别

optimization - 写入 Lucene.Net 索引时内存使用量不断增长

java - 用有限的值使两个数组和相同

在 O(nlog(n)) 时间内找到总和为 0 的整个数组的算法

algorithm - 随机生成特定范围内的整数序列

Java Math.atan() 为某些输入返回 0?

python - python中的 bool 检索模型