关于Katz平滑的实现算法

关于Katz平滑的实现算法

ID:47531963

大小:78.86 KB

页数:4页

时间:2020-01-13

关于Katz平滑的实现算法_第1页
关于Katz平滑的实现算法_第2页
关于Katz平滑的实现算法_第3页
关于Katz平滑的实现算法_第4页
资源描述:

《关于Katz平滑的实现算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、7、publicstaticvoidKatz_calculate_known(intn_gram)throwsIOException{}l函数说明:此函数用于计算在训练语料中出现的n_gram_string经过Katz平滑后的条件概率。l函数算法:Katz平滑的计算公式为:对于在训练语料中出现的n_gram_string,只需用到前两个公式进行计算从文件读入n_gram_string的未平滑的条件概率至哈希表n_gram_conditional_table;从文件读入n_gram_string的频次至哈希表n_

2、gram_table;找到出现次数最多的n_gram_string的次数Max_r;建立数组Nr[]=newint[Max_r+1];设置k为5;建立数组dr[]=newdouble[6];对于每个n_gram_string:{从n_gram_table得到该n_gram_string的频次r,相应的Nr[r]++;}对于每个dr[r]{计算其中}对于每个n_gram_string:{从n_gram_table中得到该n_gram_string的频次r;从n_gram_conditional_table中得到该

3、n_gram_string的条件概率p;if(r>k){P_Katz=p,并输出到相应文件}else{3P_Katz=dr[r]*p,并输出到相应文件}}8、publicstaticvoidKatz_list(intnn_gram)throwsIOException{}l函数说明:此函数用于得到为了计算Katz平滑需要用到的所有数据。u由于计算Katz平滑需要用到递归计算,因此,对于n元模型来说,需要读入所有从1元到n元的已知的n_gram_string的Katz平滑概率,因此需要n个哈希表Katz_list_

4、n_gram[n_gram],哈希表以n_gram_string:为key,相应的Katz平滑概率为value。u与此同时,由于,因此,对于每个n_gram_string,不仅需要记录,还需要记录。因此需要n个哈希表Katz_list_n_1_gram[n_gram],哈希表以n_1_gram_string:为key,value为一个如下的数据结构,该结构中,存储以及。u设计数据结构如下,其中,n_1_gram_front代表,n_1_gram_rear代表:publicstaticclassKatz_Info

5、{doublen_1_gram_front=0.0;doublen_1_gram_rear=0.0;publicKatz_Info(doublen_1_gram_front,doublen_1_gram_rear){this.n_1_gram_front=n_1_gram_front;this.n_1_gram_rear=n_1_gram_rear;}}l函数算法:for(i=1;i<=nn_gram;i++){从文件读入在训练语料中存在的n_gram_string的Katz平滑条件概率至哈希表Katz_lis

6、t_n_gram[i],当i=1时,读入Add_delta平滑的一元联合概率(最大似然估计);对于Katz_list_n_gram[i]中的每个n_gram_string:{调用N_1_gram(n_gram_string,n_gram)函数得到;3调用N_1_gram_rear(n_gram_string,n_gram)函数得到;从Katz_list_n_gram[i]得到key为的相应的Katz平滑概率品p1;从Katz_list_n_gram[i-1]得到key为的相应的Katz平滑概率品p2;更新Kat

7、z_list_n_1_gram[i]中key为的相应项{n_1_gram_front=n_1_gram_front+p1;并写入相应文件n_1_gram_rear=n_1_gram_rear+p2;并写入相应文件}}}9、publicstaticdoubleKatz_calculate(Stringn_gram_string,intn_gram)throwsIOException{}l函数说明:此函数用于计算n_gram_string经过Katz平滑后的条件概率。l函数算法:对于n_gram_string{if

8、(n_gram==1){if(n_gram_string在训练语料中出现过){返回该n_gram_string经过Add_delta平滑的最大似然估计概率;}else{返回计算出的出现0次的n_gram_string的最大似然估计概率;}}else{if(该n_gram_string在Katz_list_n_gram[n_gram]中出现过){说明该n_gram_string在训练语料

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。