欢迎来到天天文库
浏览记录
ID:47531963
大小:78.86 KB
页数:4页
时间:2020-01-13
《关于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在训练语料
此文档下载收益归作者所有