如果我们取概率的对数,则返回的值为负值。该值用于信息检索库的匹配器,该匹配器拒绝负值,因此我需要将负值限制为正值,以便匹配器不会拒绝文档。
一种方法是在概率中添加一个随机数(例如 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/