关于Katz平滑的实现算法.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于Katz平滑的实现算法

7、public static void Katz_calculate_known(int n_gram) throws IOException {}函数说明:此函数用于计算在训练语料中出现的n_gram_string经过Katz平滑后的条件概率。函数算法:Katz平滑的计算公式为:对于在训练语料中出现的n_gram_string,只需用到前两个公式进行计算从文件读入n_gram_string的未平滑的条件概率至哈希表n_gram_conditional_table;从文件读入n_gram_string的频次至哈希表n_gram_table;找到出现次数最多的n_gram_string的次数Max_r;建立数组Nr[] = new int[Max_r + 1];设置k为5;建立数组dr[] = new double[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中得到该n_gram_string的条件概率p; if(r k){ P_Katz = p,并输出到相应文件 } else{ P_Katz = dr[r] * p,并输出到相应文件 }}8、public static void Katz_list(int nn_gram) throws IOException {}函数说明:此函数用于得到为了计算Katz平滑需要用到的所有数据。由于计算Katz平滑需要用到递归计算,因此,对于n元模型来说,需要读入所有从1元到n元的已知的n_gram_string的Katz平滑概率,因此需要n个哈希表Katz_list_n_gram[n_gram],哈希表以n_gram_string:为key,相应的Katz平滑概率为value。与此同时,由于,因此,对于每个n_gram_string,不仅需要记录,还需要记录。因此需要n个哈希表Katz_list_n_1_gram[n_gram],哈希表以n_1_gram_string:为key,value为一个如下的数据结构,该结构中,存储以及。设计数据结构如下,其中,n_1_gram_front代表,n_1_gram_rear代表:public static class Katz_Info { double n_1_gram_front = 0.0; double n_1_gram_rear = 0.0; public Katz_Info(double n_1_gram_front, double n_1_gram_rear) { this.n_1_gram_front = n_1_gram_front; this.n_1_gram_rear = n_1_gram_rear; } }函数算法:for(i = 1; i = nn_gram; i++){ 从文件读入在训练语料中存在的n_gram_string的Katz平滑条件概率至哈希表Katz_list_n_gram[i],当i = 1时,读入Add_delta平滑的一元联合概率(最大似然估计); 对于Katz_list_n_gram[i]中的每个n_gram_string:{ 调用N_1_gram(n_gram_string, n_gram)函数得到; 调用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; 更新Katz_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、public static double Katz_calculate(String n_gram_string, int n_gram) throws IOException {}函数说明:此函数用于计算n_gram_string经过Katz平滑后的条件概率。函数算法:对于n_gram_string{if(n_gram == 1){ if(n_gram_string在训练语料中出现过){ 返回该n_gram_string经过Add_delta平滑的最大似然估计概率; } else{ 返回计算出的出现0次的

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档