<strike id="cakm0"></strike>
  • <button id="cakm0"><dl id="cakm0"></dl></button>
  • <samp id="cakm0"><tbody id="cakm0"></tbody></samp>
    <samp id="cakm0"><pre id="cakm0"></pre></samp><ul id="cakm0"></ul>
    <strike id="cakm0"></strike>
    <li id="cakm0"></li>
  • <ul id="cakm0"></ul>
  • 更多精彩內(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 成人国产精品免费视频| 久久久国产亚洲精品| 无码乱码观看精品久久| 亚洲日韩国产精品乱-久| 精品少妇一区二区三区视频| 香蕉99久久国产综合精品宅男自| 亚洲精品国产首次亮相| 99re6在线精品视频免费播放 | 国产精品毛片一区二区| 2021国产精品成人免费视频| 亚洲国产精品自在线一区二区| 岛国精品一区免费视频在线观看| 欲帝精品福利视频导航| 国产精品国三级国产aⅴ| 久久亚洲精品高潮综合色a片| 91亚洲精品麻豆| 99re6在线视频精品免费下载| 国产精品久久久久AV福利动漫| 久久精品中文字幕有码| 亚洲一区无码精品色| 人妻无码久久精品| 国产精品JIZZ在线观看无码| 国产精品videossexohd| 久久亚洲精品无码av| 一本色道久久88亚洲精品综合| 亚洲国产精品综合久久2007| 中文字幕亚洲精品| 麻豆一区二区三区精品视频| 91精品国产一区| 精品人妻系列无码天堂| 精品无码av一区二区三区 | 精品久久久久中文字幕一区| 亚洲av无码成人精品区在线播放 | 久久精品成人影院| 国产精品无码v在线观看| 亚洲精品国产电影| 精品亚洲视频在线观看| 久久综合精品国产一区二区三区| 久久免费99精品国产自在现线| 在线观看国产精品普通话对白精品| 精品国产综合区久久久久久|