.net-用simhash比较几句话的相似性

问题描述

用simhash比较几句话的相似性
现在能做到的是把每个字的hash值求出并存放在string[]中,接下来就不太会了,求大神指导

解决方案

//words [0]为属性 [1]为权重

//hashbits hashCode权重

//return SimHash串

getSimHash(String[][] wordsint hashbits)

------------------------------------------------------------------

//计算汉明距离

//str1 simHash生成的code

//str2

//return 整形距离越小越相似

getDistance(str1str2)

----------------------------------------------------------------------

下面是代码

package com.yeahmobi.ymconv.util;public class MySimHash {    public static String getSimHash(String[][] words int hashbits) {        double[] hash = new double[hashbits];        for (int i = 0; i < words.length; i++) {            long t = MurmurHash.hash64(words[i][0]);            // long t = hash(words[i][0] 64).longValue();            String str = getZero(Long.toBinaryString(t) hashbits);            for (int j = 0; j < str.length(); j++) {                int weights = Integer.parseInt(words[i][1]) <= 0 ? 1 : Integer.parseInt(words[i][1]);                int c = Integer.parseInt(str.charAt(j) + """");                if (c == 1)                    hash[j] = hash[j] + (weights);                else                    hash[j] = hash[j] + (-weights);            }        }        String hash1 = """";        for (double d : hash) {            hash1 += d > 0 ? ""1"" : ""0"";        }        return hash1;    }    public static String getZero(String str int hashbits) {        return String.format(""%"" + hashbits + ""s"" str).replace("" ""0"");    }    public static int getDistance(String str1 String str2) {        int distance;        if (str1.length() != str2.length()) {            distance = -1;        } else {            distance = 0;            for (int i = 0; i < str1.length(); i++) {                if (str1.charAt(i) != str2.charAt(i)) {                    distance++;                }            }        }        return distance;    }    public static void main(String[] args) {//      String s1 = MySimHash.getSimHash(new String[][] { { ""187.237.239.16""3"" } { ""mx""3"" } { ""775""3"" } { ""60541""3"" } { ""2342256""3"" } { ""alcatel""3"" } { ""onetouch5020""3"" } { ""android""3"" } { ""4.1.1""3"" } { ""hh""3"" } } 64);//      String s2 = MySimHash.getSimHash(new String[][] { { ""177.224.174.214""1"" } { ""mx""1"" } { ""775""1"" } { ""6177""1"" } { ""2478822""1"" } { ""generic""1"" } { ""storm""1"" } { ""android""1"" } { ""4.2.2""1"" } } 64);//      String s3 = MySimHash.getSimHash(new String[][] { { ""5.246.82.36""1"" } { ""sdf""1"" } { ""663""1"" } { ""333""1"" } { ""55""0"" } { ""sd""1"" } { ""er""1"" } { ""34""1"" } { ""sdfasdf""1"" } { ""hh""1"" } } 64);//      String s4 = MySimHash.getSimHash(new String[][] { { ""189.132.168.157""1"" } { ""mx""1"" } { ""390""1"" } { ""3203""1"" } { ""2342277""1"" } { ""samsung""1"" } { ""gt-i8190l""1"" } { ""android""1"" } { ""4.1.2""1"" } } 64);//      String s5 = MySimHash.getSimHash(new String[][] { { ""187.237.239.16""1"" } { ""mx""1"" } { ""775""3"" } { ""60541""1"" } { ""2342256""1"" } { ""alcatel""1"" } { ""onetouch5020""1"" } { ""android""1"" } { ""4.1.1""1"" } { ""hh""1"" } } 64);//      String s6 = MySimHash.getSimHash(new String[][] { { ""187.237.239.25""3"" } { ""mx""3"" } { ""775""3"" } { ""60541""3"" } { ""2342256""3"" } { ""alcatel""3"" } { ""onetouch5020""3"" } { ""android""3"" } { ""4.1.1""3"" } { ""hh""3"" } } 64);//      String s7 = MySimHash.getSimHash(new String[][] { { ""187.237.239.16""1"" } { ""mx""3"" } { ""775""3"" } { ""60541""3"" } { ""2342256""3"" } { ""alcatel""3"" } { ""onetouch5020""3"" } { ""android""3"" } { ""4.1.1""3"" } { ""hh""3"" } } 64);//      System.out.println(""----------"");//      System.out.println(MySimHash.getDistance(s1 s2));//      System.out.println(MySimHash.getDistance(s1 s3));//      System.out.println(MySimHash.getDistance(s1 s4));//      System.out.println(MySimHash.getDistance(s1 s5));//      System.out.println(MySimHash.getDistance(s1 s6));//      System.out.println(MySimHash.getDistance(s1 s7));////      System.out.println(s1);//      System.out.println(s2);//      System.out.println(s3);//      System.out.println(s4);//      System.out.println(s5);//      System.out.println(s6);    }}
时间: 2025-01-30 00:23:03

.net-用simhash比较几句话的相似性的相关文章

请问“引用变量保持用于引用对象的位”这句话是什么意思?

问题描述 请问"引用变量保持用于引用对象的位"这句话是什么意思? 请问"引用变量保持用于引用对象的位"这句话是什么意思??????????????????????????? 解决方案 "位"?翻译错误吧,应该是"地址"或"指针"比较正确. 解决方案二: 引用变量就是对被引用变量的一个副本,它可以访问变量.

如何正确理解“内容为王,外链为皇”这句话

从seo这个行业兴起以来,"内容为王,外链为皇"这句话就成为seoer的真理,随着搜索引擎算法的不断升级,这个真理还那么管用吗?今天小编就和大家来分享一下这几个月实战的一些想法,可能对,希望能对你有所帮助,如果说的不对,大家就一笑了之.那么怎么理解"内容为王,外链为皇"呢? 首先先说说"内容为王"吧!内容对于一个网站,不管在任何情况下都是最重要的,所以"内容为王"这是永远都不会变的真理.内容是一个网站的核心,是网站的灵魂,拥有

专访51Auto创始人:5句话融到4000多万

---专访51Auto总裁和创始人李海超 上天似乎特别垂青一些人,他们似乎总能在被大家忽视的地方发现巨大的商业机会.32岁的李海超就是这样一个幸运儿.1999年,李海超与合作伙伴创办了英斯克技术有限公司和掌上灵通有限公司:2004年3月,掌上灵通在美国纳斯达克成功上市.如今,功成身退的李海超正在打造中国第一大二手车网络平台---51Au-to. 他还能再创造一个商业奇迹吗?为此,我们专访了51Auto总裁和创始人李海超. 四五句话讲明白 上海证券报:51Auto是什么类型的企业? 李海超:51A

轻松八句话 教会你完全搞定MySQL数据库

本文让你用轻松八句话就可教会你完全搞定MySQL数据库. 一.连接MYSQL 格式: 以下为引用的内容:mysql -h主机地址-u用户名-p用户密码  1.例1:连接到本机上的MySQL: 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>. 2.例2:连接到远程主机上的MYSQL.假设远程主机的IP为:1

从九句话看网站的综合发展

从九句话看网站的综合发展 一.网站,要靠"悟".别人告诉你也没有用."借来的火,点不亮自己的心灵". 适合自己的方法要凭自己的经验去总结.去发现,别人给你的只可能是枣核,最好也只是个青枣. 二.认真去做只能合格,用心去做才能优秀. 这句话更能体现在初期的网站制作上,即使网站制作的再精美.内容再充实,没有目标用户,不知面向何方,再认真也只能算是个合格的网站,离优秀却有段距离.只有在做之前,用心考察过市场,了解这网站做出来是为什么.要怎么做.要怎么盈利,对整个过程都有了

从九句话看网站的综合发展------做站以来的感想

从九句话看网站的综合发展.     有一些心得,整理出来,希望能给大家一些帮助.     一.搞网站,要靠"悟".别人告诉你也没有用."借来的火,点不亮自己的心灵".    关于这句话有个很典型的例子,就发生在落伍,时间是不久前,某人写的所谓500换取50000的滚雪球的文章,此文章误导了不知多少人(很不幸,本人就是被误导其中之一).且不论作者是否AD,也不论是否作者本人的真实经验,单纯去模仿文中做法的站长多少就有偷巧之嫌.同样的方法.同样的操作很可能就会出现不同的

智者见智-从4句话看网站运营

网站运营 相信大家都看过一篇哲文,讲述的是: 一名年轻人去找一位年长的智者,请教如何做人. 智者告诉他四句话,把自己当作别人,把别人当作自己,把别人当作别人,把自己当作自己. 原文暂且不谈,把这四句话结合我们建站的思路上来. 1,把自己当作别人在做站的时候,应该多考虑你的客户,要学会换位思考.你的站不是做给你自己一个人看的,你应该多想想你的客户的感受.如果是你,你希望从这个网站得到什么,这就是现代管理学所说的"客户体验".当今的社会经济是客户主导一切,有消费有需求才有市场.互联网也一样

6句话让你的博客生涯更长久

独立博客相信大家都不陌生,像卢松松.牟长青之类的博客都是独博的鲜明代表.前两天也看到过一个朋友写的博客发展之道,感觉现在的博客真心不想好,除了内容难以坚持外,阅读人群的分散以及博客的粘度都是挡在我们面前的一道道难关,但是换一种角度想,如果你做独博能够坚持超过1年,那么你将会甩掉绝大多数的竞争对手.因为在博客的存活周期中,懂得坚持往往比特色更重要.那么如何让自己的博客存活时间更长一些呢,小杜感觉树立一种正确的写作心态很重要. 将博客与工作紧密联系 有很多博主在制定博客主题的时候,往往建立于自己的第

UVa 10473 Simple Base Conversion:两句话实现进制转换

10473 - Simple Base Conversion Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1414 10->16:atoi+%X 16->10:strtol+%d 完整代码: 01./*0.019s*/ 02. 03.#incl