<th id="wu2k2"><s id="wu2k2"></s></th> <blockquote id="wu2k2"></blockquote>
  • <tr id="wu2k2"></tr>
  • <samp id="wu2k2"><tbody id="wu2k2"></tbody></samp><samp id="wu2k2"><tbody id="wu2k2"></tbody></samp>
  • 更多精彩內(nèi)容,歡迎關(guān)注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    當(dāng)前位置:首頁 科技百科 java simhash

    java simhash

    文檔

    java simhash

    java simhash是java程序中的一種算法。Simhash和一般的hash算法不同,它具有兩個(gè)關(guān)鍵的特點(diǎn):1、一個(gè)文檔的指紋是所有屬性的某種hash;2、相似文檔的hash應(yīng)該是相似的。
    推薦度:
    導(dǎo)讀java simhash是java程序中的一種算法。Simhash和一般的hash算法不同,它具有兩個(gè)關(guān)鍵的特點(diǎn):1、一個(gè)文檔的指紋是所有屬性的某種hash;2、相似文檔的hash應(yīng)該是相似的。

    java simhash是什么?讓我們一起來了解一下吧!

    java simhash是java程序中的一種算法。Simhash算法產(chǎn)生與2002年,設(shè)計(jì)非常美妙,它輸入是一個(gè)向量,得出的結(jié)果是一個(gè)F位的簽名值。

    Simhash和一般的hash算法不同,它具有兩個(gè)關(guān)鍵的特點(diǎn):

    1.一個(gè)文檔的指紋是所有屬性的某種hash;

    2.相似文檔的hash應(yīng)該是相似的;

    ?simhash 算法如下:1,將一個(gè) f 維的向量 V 初始化為 0 ; f 位的二進(jìn)制數(shù) S 初始化為 0 ;2,對每一個(gè)特征:用傳統(tǒng)的 hash 算法對該特征產(chǎn)生一個(gè) f 位的簽名 b 。對 i=1 到 f :如果b 的第 i 位為 1 ,則 V 的第 i 個(gè)元素加上該特征的權(quán)重;否則,V 的第 i 個(gè)元素減去該特征的權(quán)重。?3,如果 V 的第 i 個(gè)元素大于 0 ,則 S 的第 i 位為 1 ,否則為 0 ;4,輸出 S 作為簽名。

    simhash 算法代碼:

    package?com.xxxx.checkandbigdataquery.utils;
    ?
    import?it.unimi.dsi.fastutil.longs.LongOpenHashSet;
    import?it.unimi.dsi.fastutil.longs.LongSet;
    import?java.io.File;
    import?java.io.FileInputStream;
    import?java.io.IOException;
    import?java.nio.CharBuffer;
    import?java.util.Set;
    ?
    ?
    /**
    ?*?a?basic?SimHash?implementation
    ?*
    ?*
    ?*/
    public?class?SimHash?{
    ??public?static?final?int??HASH_SIZE??????????=?64;
    ??public?static?final?long?HASH_RANGE?????????=?2?^?HASH_SIZE;
    ??public?static?MurmurHash?hasher?????????????=?new?MurmurHash();
    ?
    ??/**
    ???*?use?short?cuts?to?obtains?a?speed?optimized?simhash?calculation
    ???*
    ???*?@param?s
    ???*??????????input?string
    ???*?@return?64?bit?simhash?of?input?string
    ???*/
    ?
    ??private?static?final?int?FIXED_CGRAM_LENGTH?=?4;
    ?
    ??public?static?long?computeOptimizedSimHashForString(String?s)?{
    ????return?computeOptimizedSimHashForString(CharBuffer.wrap(s));
    ??}
    ?
    ??public?static?long?computeOptimizedSimHashForString(CharBuffer?s)?{
    ?
    ????LongSet?shingles?=?new?LongOpenHashSet(Math.min(s.length(),?100000));
    ?
    ????int?length?=?s.length();
    ?
    ????long?timeStart?=?System.currentTimeMillis();
    ????for?(int?i?=?0;?i??56);
    ??????longAsBytes[1]?=?(byte)?(shingle?>>?48);
    ??????longAsBytes[2]?=?(byte)?(shingle?>>?40);
    ??????longAsBytes[3]?=?(byte)?(shingle?>>?32);
    ??????longAsBytes[4]?=?(byte)?(shingle?>>?24);
    ??????longAsBytes[5]?=?(byte)?(shingle?>>?16);
    ??????longAsBytes[6]?=?(byte)?(shingle?>>?8);
    ??????longAsBytes[7]?=?(byte)?(shingle);
    ?
    ??????long?longHash?=?FPGenerator.std64.fp(longAsBytes,?0,?8);
    ??????for?(int?i?=?0;?i?>?i)?&?1L)?==?1L;
    ????????v[i]?+=?(bitSet)???1?:?-1;
    ??????}
    ????}
    ?
    ????long?simhash?=?0;
    ????for?(int?i?=?0;?i??0)?{
    ????????simhash?|=?(1L?<>?i)?&?1L)?==?1L;
    ????????v[i]?+=?(bitSet)???1?:?-1;
    ??????}
    ????}
    ????long?simhash?=?0;
    ????for?(int?i?=?0;?i??0)?{
    ????????simhash?|=?(1L?<>>?-1);
    ??}
    ?
    ??public?static?void?main(String[]?args)?{
    ????try?{
    ??????//?File?file1?=?new?File("/Users/rana/academia.edu_01.html");
    ??????//?File?file2?=?new?File("/Users/rana/academia.edu_02.html");
    ?
    ??????File?file1?=?new?File(args[0]);
    ??????File?file2?=?new?File(args[1]);
    ?
    ??????byte?data1[]?=?new?byte[(int)?file1.length()];
    ??????byte?data2[]?=?new?byte[(int)?file2.length()];
    ??????FileInputStream?stream1?=?new?FileInputStream(file1);
    ??????FileInputStream?stream2?=?new?FileInputStream(file2);
    ??????stream1.read(data1);
    ??????stream2.read(data2);
    ??????String?string1?=?new?String(data1);
    ??????String?string2?=?new?String(data2);
    ?
    ??????long?timeStart?=?System.currentTimeMillis();
    ??????long?simhash1?=?computeSimHashFromString(Shingle.shingles(string1));
    ??????long?timeEnd?=?System.currentTimeMillis();
    ??????System.out.println("Old?Calc?for?Document?A?Took:"
    ??????????+?(timeEnd?-?timeStart));
    ??????timeStart?=?System.currentTimeMillis();
    ??????long?simhash2?=?computeSimHashFromString(Shingle.shingles(string2));
    ??????timeEnd?=?System.currentTimeMillis();
    ??????System.out.println("Old?Calc?for?Document?B?Took:"
    ??????????+?(timeEnd?-?timeStart));
    ??????timeStart?=?System.currentTimeMillis();
    ??????long?simhash3?=?computeOptimizedSimHashForString(string1);
    ??????timeEnd?=?System.currentTimeMillis();
    ??????System.out.println("New?Calc?for?Document?A?Took:"
    ??????????+?(timeEnd?-?timeStart));
    ??????timeStart?=?System.currentTimeMillis();
    ??????long?simhash4?=?computeOptimizedSimHashForString(string2);
    ??????timeEnd?=?System.currentTimeMillis();
    ??????System.out.println("New?Calc?for?Document?B?Took:"
    ??????????+?(timeEnd?-?timeStart));
    ?
    ??????int?hammingDistance?=?hammingDistance(simhash1,?simhash2);
    ??????int?hammingDistance2?=?hammingDistance(simhash3,?simhash4);
    ?
    ??????System.out.println("hammingdistance?Doc?(A)?to?Doc(B)?OldWay:"
    ??????????+?hammingDistance);
    ??????System.out.println("hammingdistance?Doc?(A)?to?Doc(B)?NewWay:"
    ??????????+?hammingDistance2);
    ????}?catch?(IOException?e)?{
    ??????e.printStackTrace();
    ????}
    ??}
    }

    以上就是小編今天的分享了,希望可以幫助到大家。

    文檔

    java simhash

    java simhash是java程序中的一種算法。Simhash和一般的hash算法不同,它具有兩個(gè)關(guān)鍵的特點(diǎn):1、一個(gè)文檔的指紋是所有屬性的某種hash;2、相似文檔的hash應(yīng)該是相似的。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關(guān)推薦
    java simpledateformat java sizeof java sm3加密 文章千古事得失寸心知是誰的名句 誠信的名言名句 關(guān)于讀書的名言名句 生日的經(jīng)典名句 感恩老師的名言名句 關(guān)于時(shí)間的名言名句 活著的經(jīng)典名句 java snappy 杜甫的名句 java snapshot 孟浩然的名句 關(guān)于誠信的名言名句 杜甫的名言名句 杜甫的名句有哪些 杜甫的千古名句 范仲淹的名句 范仲淹的十大經(jīng)典名句 java shuffle java sha256加密 java portal java pojo java plugin java sftp java plug-in java settimeout java platform java setlayout java serialversionuid java serializable接口 java serializable java sequence java separator java semaphore java selenium java selector java script java sandbox
    Top re99热久久这里只有精品| 久久99精品久久久久子伦小说| 亚洲精品无码久久久久秋霞| 久热青青青在线视频精品| 精品久久综合1区2区3区激情| 国自产精品手机在线视频香蕉| 久久精品国产男包| 久久丫精品久久丫| 亚洲日韩精品射精日| 国产精品高清在线观看| 国产精品午夜电影| 亚洲国产精品无码观看久久| 56prom在线精品国产| 久久99精品国产免费观看| 亚洲精品国产美女久久久| 精品一区二区三区免费视频 | 国产人妻777人伦精品hd| 91免费福利精品国产| 久久久亚洲精品国产| 亚洲精品中文字幕无码蜜桃| 久久精品国产99国产精品| 日韩精品无码人妻一区二区三区| 日韩精品电影在线观看| 亚洲国产精品日韩av不卡在线| 国产精品嫩草影院人体模特| 亚洲国产精品综合久久网各| 蜜国产精品jk白丝AV网站| 国产精品视频一区二区三区无码 | 久久精品人人槡人妻人人玩AV | 国产成人无码精品久久久性色| 精品无码久久久久久久动漫| 凹凸精品视频分类国产品免费| 国产精品老熟女露脸视频| 在线精品一区二区三区电影| 国产SUV精品一区二区四| 国产精品久久久久一区二区三区 | 麻豆精品久久精品色综合| 综合在线视频精品专区| 久久国产精品99久久久久久老狼 | 国内精品久久久久影院亚洲| 一级一级特黄女人精品毛片视频|