R程序不断得到数字(0)答案

时间:2013-04-01 07:00:44

标签: r probability

我是R的初学者。这是我正在尝试编码的公式,以找到最大化某些双字母的对数可能性的lambda。当找不到双字节时,P_b(bigram)函数失败,但P_u(unigram)函数应该提供unigram结果(lambda = 0)。

适用于找到的双胞胎。当他们找不到时,我只得到数字(0),而不是单字结果。

enter image description here

p.mix <- function(w2, w1) {

  (1-lambda) * uni.dfrm$prob[uni.dfrm$token==w2] + lambda * p.bi(w2,w1)

}

由于索引,p.bi()函数看起来很复杂,所以我不愿意发布它,但是当找到bigrams时它确实有效。它只是查看w后出现的次数w并将其除以w出现的次数,但是我必须通过另一个词汇量的向量来使它看起来很难看。

当在w之后从未发现w'时,而不是零计数,根本没有行,这显然导致数字(0)结果。这就是混合模型应该解决的问题,但我无法让它发挥作用。任何想法如何运作?

1 个答案:

答案 0 :(得分:1)

您可以为w2numeric(0)的案例添加测试,例如:

p.mix <- function(w2, w1) {
  if(length(w2)>0){
    res <- (1-lambda) * uni.dfrm$prob[uni.dfrm$token==w2] +
                lambda * p.bi(w2,w1)
  }else res <- 0

  res
}

修改

p.mix <- function(w2, w1) {
  if(length(w2) && length(uni.dfrm$prob[uni.dfrm$token==w2]) > 0)
    (1-lambda) * uni.dfrm$prob[uni.dfrm$token==w2] + lambda * p.bi(w2,w1)
  else 0
}