相对熵(relative entropy或 Kullback-Leibler divergence,KL距离)的java实现(一)
2010-03-12 10:08
471 查看
利用信息论的方法可以进行一些简单的自然语言处理
比如利用相对熵进行分类或者是利用相对熵来衡量两个随机分布的差距,当两个随机分布相同时,其相对熵为0.当两个随机分布的差别增加时,器相对熵也增加。我们下面的实验是为了横量概率分布的差异。试验方法、要求和材料
要求:
1.任意摘录一段文字,统计这段文字中所有字符的相对频率。假设这些相对频率就是这些字符的概率(即用相对频率代替概率);2.另取一段文字,按同样方法计算字符分布概率;
3.计算两段文字中字符分布的KL距离;
4.举例说明(任意找两个分布p和q),KL距离是不对称的,即D(p//q)!=D(q//p);
方法:
D(p//q)=sum(p(x)*log(p(x)/q(x)))。其中p(x)和q(x)为两个概率分布约定 0*log(0/q(x))=0;p(x)*log(p(x)/0)=infinity;
实验材料:
从凤凰新闻网,提取的两篇新闻名字为:《《小团圆》究竟泄了张爱玲什么“秘密”?》
《《小团圆》:张爱玲的一个梦》
《1945年毛zedong和蒋介石在重庆谈判前的秘密情报战》
三篇新闻的编码均为utf-8,大小都是11k左右,都为多页新闻。
三篇新闻的内容如下
从上面可以很显然的看出:第一篇新闻和第二篇新闻都是讲张爱玲的著作《小团圆》的,第三篇新闻内容是国共内战的,显然是第一篇新闻和第二篇新闻之间的概率分布相似度大,那么实验结果是不是这样呢?让我们擦亮眼睛,拭目以待吧。
相关文章推荐
- 相对熵(relative entropy或 Kullback-Leibler divergence,KL距离)的java实现(三)
- 相对熵(KL距离)的java实现
- 相对熵(relative entropy或 Kullback-Leibler divergence,KL距离)的java实现(二)
- 从KL相对熵(relative entropy或 Kullback-Leibler divergence,KL距离)看文本语义距离系列
- [NLP自然语言处理]计算熵和KL距离,java实现汉字和英文单词的识别,UTF8变长字符读取
- Kullback–Leibler divergence(相对熵,KL距离,KL散度)
- JAVA实现最短距离算法之迪杰斯特拉算法
- 熵,互信息,KL距离(相对熵),交叉熵
- KL距离,Kullback-Leibler Divergence
- KL距离,Kullback-Leibler Divergence
- KL距离,Kullback-Leibler Divergence
- 迪杰斯特拉算法处理无向图中最短路径的(dijkstra)Java实现(指定两点,求最短距离及路径)
- (转载)KL距离,Kullback-Leibler Divergence
- 相对熵(互熵,交叉熵,鉴别信息,Kullback熵,Kullback-Leible散度即KL散度)的深入理解
- KL距离-Kullback-Leibler Divergence
- java实现的最小编辑距离
- JAVA实现最短距离算法之迪杰斯特拉算法
- java实现floyd统计天津地铁的站点距离
- 根据经纬度求两点间距离实现源码(java)
- 欧几里德距离java实现