<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 九九热视频精品在线| 日韩精品区一区二区三VR| 人妻少妇精品专区性色AV| 国产成人精品大尺度在线观看| 日韩精品一区二区三区中文 | 久久成人国产精品| 九九视频精品在线| 亚洲精品无码人妻无码| 少妇精品无码一区二区三区| 中日韩精品视频在线观看| 香蕉视频国产精品| 国产99视频精品免费专区| 国产成人久久精品麻豆一区| 日韩精品福利片午夜免费观着| 日韩精品人妻系列无码专区| 国产系列高清精品第一页| 国产精品成人网站| 精品国产日韩久久亚洲| 久久精品中文字幕无码绿巨人 | 亚洲国产精品va在线播放 | 国产成人精品午夜福利| 国产福利精品视频自拍| 影院成人区精品一区二区婷婷丽春院影视 | 日韩精品亚洲专区在线影视| 日韩精品一区二区三区中文精品| 国产麻豆9l精品三级站| 国产高清在线精品一区二区| 国产精品无码制服丝袜| 精品久久久久国产免费| 久久人人做人人玩人精品| 99精品视频在线免费观看 | 亚洲а∨精品天堂在线| 91精品观看91久久久久久| 无码精品人妻一区二区三区免费看| 三上悠亚国产精品一区| 精品久久中文字幕| 2020天堂在线亚洲精品专区| 国产成人精品免费午夜app| 91天堂素人精品系列网站| 伊人久久精品线影院| 日韩精品一区二区三区四区|