1
我是R的初學者。下面是公式我試圖找到最大化一些bigrams的日誌可能性的lambda。當找不到bigrams時,P_b(bigram)函數失敗,但P_u(unigram)函數應提供unigram結果(lambda = 0)。R程序不斷獲取數字(0)答案
它適用於找到的bigrams。當他們沒有找到時,我只能得到數字(0),而不是單字符結果。因爲索引的,所以我不願意發佈,但是當被發現的二元語法,它的工作
p.mix <- function(w2, w1) {
(1-lambda) * uni.dfrm$prob[uni.dfrm$token==w2] + lambda * p.bi(w2,w1)
}
的p.bi()函數看起來複雜。它只是查看w出現在w後面的次數,並將它除以w出現的次數,但我必須經過另一個詞彙單詞向量,所以它看起來很醜。
當在w之後從未發現w',而不是零計數時,根本沒有行,這顯然導致了數字(0)結果。這就是混合模型應該解決的問題,但我無法實現。任何想法如何可以工作?
這是不太它應該工作...的方式p.mix應該給出一個數字,是否找到了兩個bigram,所以如果沒有找到bigram,唯一的結果是當lambda = 0時,所以結果應該是第二個單詞的一元概率,而不是零。 但我明白你在說什麼。我已經嘗試過在p.bi函數中... hit enter too fast,oops ... if(identical(bigram.w2,numeric(0))){ result < - 0 } else result < - bigram.w2 $ w.ij/w1 bigram.w2返回一行:w,w'和w.ij,或計數w'| w。但是,這一切只有在找到二元論時纔有效。 – punstress
看來,添加到數字(0)的任何東西都等於數字(0)。而且我無法在沒有找到時使bigram成爲普通的舊零而不是數字(0)。我可以重構混合模型,但我認爲這將很難計算出正確的lambda。也許R對此不是一種好語言,但是應該有辦法做到這一點。 – punstress
@punstress我編輯我的答案。 – agstudy