相对熵(relative entropy或 Kullback-Leibler divergence,KL距离)的java实现(三)
?
?
?
?
代碼下載
http://files.cnblogs.com/finallyliuyu/KL.rar
主函數(shù)代碼
主函數(shù)代碼 public?static?void?main(String[]?args)?throws??FileNotFoundException,IOException????{
????????
????????
????????//?TODO?Auto-generated?method?stub;
????????ArrayList<Entity>?enList1=new?ArrayList<Entity>();
????????enList1=CalcuP("C:/Users/liuyu/workspace/KL/KL/zhangailing.txt");
????????ArrayList<Entity>?enList2=new?ArrayList<Entity>();
????????enList2=CalcuP("C:/Users/liuyu/workspace/KL/KL/zhangailing2.txt");
????????ArrayList<Entity>enList3=new?ArrayList<Entity>();
????????enList3=CalcuP("C:/Users/liuyu/workspace/KL/KL/maozedong.txt"); double f1=CalKL(enList1,enList2);
?????? ?double f2=CalKL(enList2,enList1);
?????? ?double f3=CalKL(enList1,enList3);
????????double?f4=CalKL(enList3,enList1);
????????double?f5=CalKL(enList2,enList3);
????????double?f6=CalKL(enList3,enList2);
????????System.out.println("《《小團(tuán)圓》究竟泄了張愛玲什么“秘密”?》與《《小團(tuán)圓》:張愛玲的一個夢》的KL距離:?"+f1);
????????System.out.println("《《小團(tuán)圓》:張愛玲的一個夢》與《《小團(tuán)圓》究竟泄了張愛玲什么“秘密”?》的KL距離"+f2);
????????System.out.println("《《小團(tuán)圓》究竟泄了張愛玲什么“秘密”?》與《1945年毛和蔣介石在重慶談判前的秘密情報戰(zhàn)》的KL距離?"+f3);
????????System.out.println("《1945年毛和蔣介石在重慶談判前的秘密情報戰(zhàn)》與《《小團(tuán)圓》究竟泄了張愛玲什么“秘密”?》的KL距離?"+f4);
????????System.out.println("《“小團(tuán)圓”張愛玲的一個夢》與《1945年毛和蔣介石在重慶談判前的秘密情報戰(zhàn)》的KL距離"+f5);
????????System.out.println("《1945年毛和蔣介石在重慶談判前的秘密情報戰(zhàn)》與《“小團(tuán)圓”張愛玲的一個夢》的KL距離"+f6);
?
a.以字符為單位的計(jì)算結(jié)果如下:
《《小團(tuán)圓》究竟泄了張愛玲什么“秘密”?》與《《小團(tuán)圓》:張愛玲的一個夢》的KL距離: 2.269998592E9
《《小團(tuán)圓》:張愛玲的一個夢》與《《小團(tuán)圓》究竟泄了張愛玲什么“秘密”?》的KL距離4.099975168E9
《《小團(tuán)圓》究竟泄了張愛玲什么“秘密”?》與《1945年毛和蔣介石在重慶談判前的秘密情報戰(zhàn)》的KL距離 3.029988864E9
《1945年毛和蔣介石在重慶談判前的秘密情報戰(zhàn)》與《《小團(tuán)圓》究竟泄了張愛玲什么“秘密”?》的KL距離 4.289972736E9
《“小團(tuán)圓”張愛玲的一個夢》與《1945年毛和蔣介石在重慶談判前的秘密情報戰(zhàn)》的KL距離4.10997504E9
《1945年東和蔣介石在重慶談判前的秘密情報戰(zhàn)》與《“小團(tuán)圓”張愛玲的一個夢》的KL距離3.539982336E9
b.以詞為單位計(jì)算結(jié)果如下
《《小團(tuán)圓》究竟泄了張愛玲什么“秘密”?》與《《小團(tuán)圓》:張愛玲的一個夢》的KL距離: 5.629955584E9
《《小團(tuán)圓》:張愛玲的一個夢》與《《小團(tuán)圓》究竟泄了張愛玲什么“秘密”?》的KL距離8.62991872E9
《《小團(tuán)圓》究竟泄了張愛玲什么“秘密”?》與《1945年毛和蔣介石在重慶談判前的秘密情報戰(zhàn)》的KL距離 6.50994432E9
《1945年毛和蔣介石在重慶談判前的秘密情報戰(zhàn)》與《《小團(tuán)圓》究竟泄了張愛玲什么“秘密”?》的KL距離 8.029924864E9
《“小團(tuán)圓”張愛玲的一個夢》與《1945年毛和蔣介石在重慶談判前的秘密情報戰(zhàn)》的KL距離9.219941376E9
《1945年毛和蔣介石在重慶談判前的秘密情報戰(zhàn)》與《“小團(tuán)圓”張愛玲的一個夢》的KL距離7.739928576E9
從上面結(jié)果可以看出:《張秘密》與《張夢》之間距離最近,《毛》與《張夢》直接的概率分布距離近于《毛》與《張秘密》之間的概率分布。
另外補(bǔ)充一點(diǎn)java傳參的方式:對于簡單類型采用值傳遞的方法;對于復(fù)雜類型采用的是引用傳遞的機(jī)制。這有點(diǎn)類似于matlab.所以,
?double f1=CalKL(enList1,enList2);
??double f2=CalKL(enList2,enList1);
??double f3=CalKL(enList1,enList3);
CalKL函數(shù)中如果改變了enlist1,enlist2的值就會使結(jié)果不正確。
?
轉(zhuǎn)載于:https://www.cnblogs.com/finallyliuyu/archive/2010/03/12/1684043.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的相对熵(relative entropy或 Kullback-Leibler divergence,KL距离)的java实现(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。