ngram平滑主要解決在當前gram下,詞表中沒有出現該詞的情況(不能使用想當然的詞頻0).
sen=乙個 傻子 走 在 大陸 上
p(sen)=p(乙個|start)p(傻子|乙個)p(走|乙個,傻子)*p(在|傻子,走)…
求p(傻子|乙個)的方法為在詞表中找 【乙個 傻子】 的概率(經過了log計算)但是….沒有找到
於是,使用 這個回退係數bow(-0.4344)來通過p(傻子)*bow作為p(傻子|乙個)【如果傻子也不存在,那麼應該是oov了吧】
那麼bow應該怎麼求呢?
參考:
假設p(傻子|乙個)[乙個 傻子]在2gram中不存在,則求p(傻子|乙個)變為求
bow(乙個)*p(傻子)。
假設詞表中為[乙個 蘋果],[乙個 粒子],而沒有[乙個 傻子]。
根據公式 bow(乙個)=(1-p(蘋果|乙個)-p(例子|乙個))/(p(傻子)
從而得到p(傻子|乙個)的概率值。
假設p(在|傻子,走) [傻子 走 在]在3gram中不存在,則求p(在|傻子,走)變為求:
bow(傻子,走)*p(在|走)。那麼bow(傻子,走)怎麼求。
假設詞表中存在[傻子 走 好],[傻子 走 起],而沒有[傻子 走 在]。
bow(傻子,走)=(1-p(好|傻子,走)-p(起|傻子,走))/(p(好|走)+p(起|走))
從而可以得到p(在|傻子,走)的概率值。
最後相乘得到句子的概率。
n gram 語言模型的平滑技術
1.統計語言模型 首先乙個句子的概率 p s 但是存在兩個問題 2.n gram模型 為了解決第乙個問題引入馬爾科夫假設 markov assumption 乙個詞的出現僅與它之前的若干個詞有關 然後利用極大似然估計 maximum likelihood estimation,mle 計算每一項的頻...
基於B gram句子概率計算實現
由於筆者所使用的語料庫是基於詞語的,所以對於詞語的計算效果更佳,但是常規句子的計算可能並不理想,建議自行尋找語料庫進行訓練。輸入為文字檔案 一句一行或者一段一行 支援批量語料輸入,可以多次或者單次呼叫addcorpus方法進行設定。訓練好之後會自行儲存模型檔案 命名為 model.txt 到專案根目...
刪邊求概率
wnjxyk和dididi正在玩遊戲。dididi在紙上繪製乙個有向圖g,該圖包含n個點,m個有向邊且無迴圈。wnjxyk從點1開始。每回合,wnjxyk將隨機選擇從當前點開始的有向邊之一,其可能性均等,然後從該邊轉到下乙個點。遊戲將繼續,直到沒有這種優勢為止。dididi將把寶藏放在點n上,如果w...